[Решено] библиотека MFRC522 и STM32

анистор
Чт 11 июня 2015 г., 17:10
Привет,

Я пытаюсь использовать библиотеку MFRC522 для чтения RFID MIFARE CARD. Эта библиотека (https: // github.com/miguelbalboa/rfid) был написан для Arduino, и, хотя он не был специально написан для STM32, он, по -видимому, компилируется без ошибок для моих STM32F103C8T6 ARM STM32 Минимальная система Dev Dev Poard. К сожалению, мне не удалось заставить это работать. Кажется, есть какой -то неудачу в SPI.

Я смог использовать этот RFID Reader (http: // www.электрокрагон.com/product/mifare-rc522-rfid-card-arderdetector-ic-card/) ранее с Pro mini, поэтому я уверен, что он не сломан, и я понимаю, как сделать проводку для плат Pro Mini и Stm32f103c8t6 , поэтому проблема определенно на стороне программного обеспечения.

У кого -нибудь есть какой -либо положительный опыт, заставляя этого конкретного читателя RFID работать с MFRC522 LIB на STM32?

Спасибо!
Адриан

victor_pv
Чт 11 июня 2015 г., 17:40
Не уверен, что вы видели другую ветку о штифте SPI SS, но если вы пытаетесь использовать аппаратный PIN -код Spi NSS для управления CS, это может не работать.
Если это так, попробуйте использовать какой -то другой вывод GPIO для CS.

анистор
Чт 11 июня 2015 г., 18:37
Привет, Виктор!

Отличный совет. Он работает после изменения штифта SS. Похоже, что LIB также нуждается в некоторых настройках, чтобы перенести некоторые вызовы PinMode из конструктора MFRC522 в функцию init, которая вызывается в настройке ().
У меня все еще есть небольшие проблемы, но это обычно работает, и я думаю, что я начну портировать это.

Спасибо!

victor_pv
Чт 11 июня 2015 г. 18:57
Анистор написал:Привет, Виктор!

Отличный совет. Он работает после изменения штифта SS. Похоже, что LIB также нуждается в некоторых настройках, чтобы перенести некоторые вызовы PinMode из конструктора MFRC522 в функцию init, которая вызывается в настройке ().
У меня все еще есть небольшие проблемы, но это обычно работает, и я думаю, что я начну портировать это.

Спасибо!

анистор
Вт 16 июня 2015 г. 14:10
Рад сообщить вам библиотеку MFRC522 (https: // github.com/miguelbalboa/rfid) был исправлен, и патч был интегрирован в Master, так что теперь он работает на платах STM32F103 из коробки.

Адриан

Rogerclark
Втюж 07 июля 2015 г. 1:23
Отличный

Спасибо, что сообщили нам

петрональ
Чт 10 ноября 2016 г., 9:49
Попытка использовать MFRC522 с моим STM32F103 (синяя таблетка).
Он собирает нормально, но код, кажется, сбой в SPI.beginTransaction(SPISettings(SPI_CLOCK_DIV4, MSBFIRST, SPI_MODE0)); // Set the settings to work with SPI bus

Rogerclark
Чт 10 ноября 2016 г., 9:52 утра
Должно быть, что -то еще

Я только что добавил эту строку в свой код Blink, и она все еще работает ОК
#include "SPI.h" int counter=0; void setup() { // put your setup code here, to run once: pinMode(PB12,OUTPUT); Serial.begin(250000); SPI.beginTransaction(SPISettings(SPI_CLOCK_DIV4, MSBFIRST, SPI_MODE0)); } bool v=false; void loop() { Serial.println(counter++); // put your main code here, to run repeatedly: digitalWrite(PB12,v); delay(50); v=!v; }

петрональ
Чт 10 ноября 2016 г., 10:27 утра
Странный . Удалили все мои соединения, и это не сбой. Дважды проверит все мои соединения RC522

LE: Моя ошибка, у меня была "MFRC522.Pcd_dumpversiontoserial (); "прокомментировал...

Rogerclark
Чт 10 ноября 2016 г., 10:40
Похоже, что код - это промахает данные и, возможно, имеет переполнение буфера

Помните, что типы данных отличаются в ARM, чем AVR E.глин. int - 32 бит, двойной действительно двойной, «слово» может быть другим размером с того, что код AVR считает, что он есть.

Внимательно посмотрите на типы данных, которые вы читаете с периферийных устройств, вам может потребоваться изменить объявления переменных, чтобы явно установить размер E.глин. uint16_t и т.д

петрональ
Чт 10 ноября 2016 г., 11:06
Нет, он сбоил на этом макросе f ​​() внутри void mfrc522 :: pcd_dumpversiontoserial () {
Переместил #define F(x) x

петрональ
Чт 10 ноября 2016 г., 11:24
Если я перемесчу макрос f () в начале моего эскиза, я получаю ошибки компиляции.

Можем ли мы найти обходной путь, кроме замены All Th F () в этой библиотеке ?

Rogerclark
Чт 10 ноября 2016 г., 20:39
Я бы просто удалил все макросы f ().

Или я думаю, вы могли бы изменить WSTRING там, где определяется существующий M -макрос

Радиотепика Bluepill

SD Card SDIO