[Решено] библиотека PN532 от Adafruit не работает

Маман
Вторник 22 мая 2018 г. 5:43
Привет,
Ранее я использую ESP8266 для подключения к модулю PN532 NFC, используя эту библиотеку:
https: // github.com/elechouse/pn532

Теперь я хочу перейти на ядро ​​STM32F1 в качестве процессора. Однако кажется, что проволока.час
Библиотека STM32arduino не совместима с проволокой.h из библиотеки ESP8266 Arduino.

Есть ли альтернатива провода.H STM32F1 Arduino Library ?

Спасибо,
С уважением,

Rogerclark
Вторник 22 мая 2018 г., 6:07
Этот раздел для людей, которые могут представить себя

После этого вы можете опубликовать вопрос в соответствующем разделе

Пожалуйста, прочитайте этот пост о том, где найти информацию

http: // stm32duino.com/viewtopic.PHP?f = 2&t = 3111

Маман
Вторник 22 мая 2018 г. 10:22
Позвольте мне представить, я из Индонезии, работаю в университете.
Ранее я разработал систему парковки с использованием карты NFC/RFID.
Я использовал ESP8266 в качестве основного процессора, однако я обнаружил, что он не стабилен в интерфейсе I2C.
Поэтому я хочу попытаться использовать STM32F1 в качестве основного процессора.

Для читателя NFC я использую PN532 со следующей библиотекой https: // github.com/elechouse/pn532.
Однако, не удалось скомпилировать. Кажется, что провод.H Библиотека STM32 Arduino Core не является
Совместим с библиотекой проводов ESP8266.

Есть ли кто -нибудь использовал модуль PN532 ? Какую библиотеку PN532 вы использовали ?

Это код ошибки, когда я собрал один из примеров программы, In file included from C:\Users\LENOVO\AppData\Local\Temp\arduino_modified_sketch_142934\iso14443a_uid.pde:19:0: C:\Users\LENOVO\Documents\Arduino\libraries\PN532_I2C/PN532_I2C.h: In member function 'uint8_t PN532_I2C::write(uint8_t)': C:\Users\LENOVO\Documents\Arduino\libraries\PN532_I2C/PN532_I2C.h:29:37: error: void value not ignored as it ought to be return _wire->write(data);

Стивестронг
Вторник 22 мая 2018 г. 13:03
Поскольку функция write () библиотеки проводов из ядра Libmaple не возвращает никакого значения, вы должны изменить строка 29 файла заголовка к: _wire->write(data); return 1;

Rogerclark
Вторник 22 мая 2018 г., 21:50
Стив,

Я только что проверил Ardunos Samd Core, и это’s write () функции возвращают size_t, поэтому мне нужно изменить подписи функции

Маман
Ср 23 мая 2018 г., 3:16
Спасибо, Стив и Рогеркларк.
Я тоже проверял библиотеку PN532 в Адафруте.
https: // github.com/adafruit/adafruit-pn532.
это можно собрать, но это не сработало.
Он запускает часть программы, но останавливается на петле.
Я использовал один из примеров библиотеки.

С уважением,
Маман

Rogerclark
Ср 23 мая 2018 г. 8:08
Я обновил библиотеку проводов, чтобы быть совместимой с API Arduino API

Однако эта библиотека по -прежнему не будет компилироваться, потому что по умолчанию определяет проволоку для Wire1 для STM32 из -за неверного программирования IMHO
#if defined(__AVR__) || defined(__i386__) || defined(ARDUINO_ARCH_SAMD) || defined(ESP8266) || defined(ARDUINO_ARCH_STM32) #define WIRE Wire #else // Arduino Due #define WIRE Wire1 #endif

fpistm
Ср 23 мая 2018 г. 9:23
[Rogerclark - Ср 23 мая 2018 г. 8:08] - Но я нахожу бессмысленным, чтобы помещать PR в Adafruit, поскольку у них обычно есть своя собственная повестка дня, и эти LIBS в основном написаны для поддержки продуктов, которые они продают.
Я уже отправляю пиар в Adafruit, и он был объединен ;)
https: // github.com/adafruit/adafruit_mq ... Ry/Pull/95

Rogerclark
Ср 23 мая 2018 г., 9:31
Я думаю, это зависит, если PR должен исправить ошибку или поддержать другую доску.

Если @OP хочет отправить пиар в Adafruit, он может это сделать, но, вероятно, есть множество других Adafruit Libs, которые также не работают с STM32

Альтернативой является определение

Arduino_arch_stm32

Как я вижу, ядро ​​STM делает это


Я думаю, это, наверное, лучший вариант

Rogerclark
Ср 23 мая 2018 г., 9:34
Ага.

Я собираюсь определить arduino_arch_stm32 на платформе.текст

Редактировать.

Сделанный.

fpistm
Ср 23 мая 2018 г., 9:57
Все ядра предоставляют -DARDUINO_ARCH_{build.arch}

Rogerclark
Ср 23 мая 2018 г., 9:58
Я согласен, это не сделает его совместимым со всем

Но чуть более совместимы с некоторыми

Маман
Чт 24 мая 2018 г., 2:06
Сегодня я проверяю новый пакет STM32 Arduino.
Он может быть скомпилирован и может прочитать карту mifare.
Но только в начале, через один или два раза прочтения карты,
Доска будет повешена, необходимо сбросить.

С уважением,

Rogerclark
Чт 24 мая 2018 г., 4:25
[Маман - Чт 24 мая 2018 г. 2:06] - Сегодня я проверяю новый пакет STM32 Arduino.
Он может быть скомпилирован и может прочитать карту mifare.
Но только в начале, через один или два раза прочтения карты,
Доска будет повешена, необходимо сбросить.

С уважением,
К сожалению, некоторые библиотеки работают только тогда, когда они запускаются на оборудовании, на котором они были разработаны для запуска.

Большой процент библиотек должен быть «портирован» для работы на STM32, поскольку они находятся как минимум в 5 раз быстрее, чем Arduino Uno, и имеют совершенно другую архитектуру, это включает отладку как программного обеспечения, так и возможного использования логического анализатора, чтобы понять, почему Программное обеспечение не работает

Вам также необходимо подтвердить, что ваш код приложения будет работать даже при запуске AVR (E.G Uno), поскольку это не обязательно ошибка в библиотеке, которая вызывает вашу проблему

Маман
Сб 26 мая 2018 г., 7:20 утра
Спасибо, Роджер, за вашу помощь.

Я подтвердил, что библиотека PN532 работает на Uno и ESP8266.
https: // github.com/elechouse/pn532
В предыдущих работах я использовал эту библиотеку много раз.
Это вообще не проблема, если мы используем UNO, в то время как на ESP8266, это не стабильно,
Потому что на самом деле в ESP8266, I2C не является аппаратным решением.

Наверное, я должен попробовать другую доску PN532.

с наилучшими пожеланиями,