STM32F1 Blue Pill und RC522

OP #7646851
Lesenswert?

Hallo Zusammen,

nachdem Ihr mir hier mit meinem Arduino und CAN geholfen habt, habe ich eine Neue Frage an euch. Ich verzweifel gerade an meinem STM32F1 Blue Pill und dem RFID reader RC522.

ich habe mir, wie in allen Anleitungen beschrieben die Bibliothek MFRC522 installiert. Wenn ich die im Sketch includiere bekomme ich einen fehlermeldung.

Mein sxcetch:

1
  #include <MFRC522.h>
2

3
#define SS_PIN   PA4 // 10
4
#define RST_PIN  PB0 // 9
5
 
6
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
7

8
MFRC522::MIFARE_Key key; 
9

10

11
#include <LiquidCrystal.h>
12
#include <SPI.h> // SPI-Bibiothek hinzufügen
13
MFRC522 mfrc522(SS_PIN, RST_PIN); // RFID-Empfänger benennen
14
// Eingaenge
15
// Ausgaenge
16

17
// LCD Ausgänge
18
const int rs = PA0, en = PA1, d4 = PA2, d5 = PA3, d6 = PB1, d7 = PB10;
19
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
20
void setup() {
21
  // put your setup code here, to run once:
22
//  Serial.begin(9600);
23
}
24
void loop()
25
{
26
 lcd.begin(16, 2);
27
 lcd.setCursor(0, 0);
28
 lcd.print("Hello World");
29

30
}

ergibt beim kompelieren folgenden Fehler:

WARNUNG: Bibliothek MFRC522 behauptet auf avr, megaavr, STM32F1, teensy, esp8266, esp32, samd, atmelsam Architektur(en) ausgeführt werden zu können und ist möglicherweise inkompatibel mit Ihrem derzeitigen Board, welches auf stm32 Architektur(en) ausgeführt wird.

Sowie: exit status 1 Fehler beim Kompilieren für das Board Generic STM32F1 series.

Als Board hab ich "Generic STM32F1 Series" eingestellt.

ich verstehe nicht warum die IDE eine STM32 Architektur ausgiebt obwohl ich STM32F1 eingestellt habe.

Gruß

kay

OP #7648343
Lesenswert?

soderle,

ich hab in der Datei libary.properties den Eintrag

1
architectures=avr,megaavr,STM32F1,teensy,esp8266,esp32,samd,atmelsam

auf

1
architectures=avr,megaavr,STM32,teensy,esp8266,esp32,samd,atmelsam gändert.

jetzt kommt folgende Warnung:

1
WARNUNG: Bibliothek MFRC522 behauptet auf avr, megaavr, STM32, teensy, esp8266, esp32, samd, atmelsam Architektur(en) ausgeführt werden zu können und ist möglicherweise inkompatibel mit Ihrem derzeitigen Board, welches auf stm32 Architektur(en) ausgeführt wird.

Die Warnung bleibt also. Nur die Bezeichnung wurde von STM32F1 auf STM32 geändert.

Ebenfalls in der Datei libary.json hab ich den Eintrag:

1
 "platforms": ["atmelavr", "atmelsam", "ststm32F1", "espressif8266", "espressif32", "samd"]

in

1
 "platforms": ["atmelavr", "atmelsam", "ststm32", "espressif8266", "espressif32", "samd"]

geändert.

Das wirft die IDE for Exit 1 aus:

1
C:\Users\kayla\OneDrive\Dokumente\Arduino\libraries\MFRC522\src\MFRC522Extended.cpp: In member function 'MFRC522::StatusCode MFRC522Extended::TCL_Transceive(TagInfo*, byte*, byte, byte*, byte*)':
2
C:\Users\kayla\OneDrive\Dokumente\Arduino\libraries\MFRC522\src\MFRC522Extended.cpp:824:34: error: ordered comparison of pointer with integer zero ('byte*' {aka 'unsigned char*'} and 'int')
3
  824 |         if (backData && (backLen > 0)) {
4
      |                          ~~~~~~~~^~~
5
C:\Users\kayla\OneDrive\Dokumente\Arduino\libraries\MFRC522\src\MFRC522Extended.cpp:847:42: error: ordered comparison of pointer with integer zero ('byte*' {aka 'unsigned char*'} and 'int')
6
  847 |                 if (backData && (backLen > 0)) {
7
      |                                  ~~~~~~~~^~~
8
Bibliothek MFRC522 in Version 1.4.11 im Ordner: C:\Users\kayla\OneDrive\Dokumente\Arduino\libraries\MFRC522  wird verwendet
9
Bibliothek SPI in Version 1.0.0 im Ordner: C:\Users\kayla\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.5.0\libraries\SPI  wird verwendet
10
Bibliothek SrcWrapper in Version 1.0.1 im Ordner: C:\Users\kayla\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.5.0\libraries\SrcWrapper  wird verwendet

Kann ich die angebene Architekur überhaupt ändern? Zumindest das was ich gemacht habe, scheint ja nicht auszureichen. Oder geht das so gar nicht?

Gruß

Kay

#7648377
Lesenswert?

Um die Warnung wegzubekommen das stm32 eventuell klein schreiben, scheint case sensitiv zu sein die Prüfung. Mit der anderen Architektur wird jetzt eventuell ein neuerer Compiler verwendet der penibler ist. Der Pointervergleich > 0 wird angemeckert, diese Zeile mal auf != 0 oder != nullptr ändern.

OP #7648401
Lesenswert?

J. S. schrieb:

Um die Warnung wegzubekommen das stm32 eventuell klein schreiben, scheint case sensitiv zu sein die Prüfung. Mit der anderen Architektur wird jetzt eventuell ein neuerer Compiler verwendet der penibler ist. Der Pointervergleich > 0 wird angemeckert, diese Zeile mal auf != 0 oder != nullptr ändern.

Hallo JoJos, ich sag mal vielen Dank, nachdem ich beide Änderungen durchgeführt habe meckert der Compiler nicht mehr. den Rest muß ich noch testen. Top da kann ich jetzt weitermachen. Ihr seit echt klasse!

Gruß

Kay

#7648425
Lesenswert?

Das wäre jetzt die Quick 'n Dirty Variante um mit dem Code weiterzukommen. Sauber ist dann einen Fork von der Lib zu machen und diese zu korrigieren. Es geht ja wahrscheinlich um diese: https://github.com/miguelbalboa/rfid Die ist eingefroren und wird nicht weiterentwickelt. Aber es wird auf eine v2 verwiesen die noch lebt. Da kann man einen Pull Request machen um die Änderungen da zu übernehmen. Die meisten scheinen die Lib ja mit AVR oder zu nutzen, wundert mich das stm32 da noch nicht angefragt wurde. Jedenfalls ist die Lib im Interface Teil flexibel gebaut und verwendet ja auch die in Arduino überall vorhandene Wire Lib. Da sollten jetzt keine größeren Steine mehr im Weg liegen. Kann es am Smartphone gerade nicht selber testen, Wünsche schon mal maximale Erfolge.

OP #7698668
Lesenswert?

Hallo zusammen,

und zunächst muß ich mich entschuldigen das ich mich erst jetzt melde. Ich war beruflich stark eingespannt. nach den Tips habe ich die NFC soweit zum laufen gebracht, sprich ich kann die Seriennummer des Tags auslesen und weiterverarbeiten. Type auslesen geht auch (also PICC_getTypeName & PICC_READCardSerial). Jetzt möchte ich aus beschreibbaren NFC tag, eben dieses Beschriebene auslesen. Der Hintergrund dazu ist, das auf den Tags die Geschwindigkeitsstufe für Loks hinterlegt sind mit denen ich die Fahrspannung einstellen will.

Mir fehlt das Register aus dem ich das auslesen kann. Ich vermute der Befehl ist: (rfid.PICC_READxxxxx())

Mit was muß ich xxxxx ersetzen?

Danke und Gruß

Kay

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren