Forum: Mikrocontroller und Digitale Elektronik STM32F1 Blue Pill und RC522


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kay L. (kgbrus)


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

von Wastl (hartundweichware)


Lesenswert?

Kay L. schrieb:
> ich verstehe nicht warum die IDE eine STM32 Architektur ausgiebt obwohl
> ich STM32F1 eingestellt habe.

Ich verstehe nicht warum du von der IDE sprichst, gibt es
nur eine? Ist deine Welt die welche die ganze restliche Welt
auch kennt und verwendet?

von Kay L. (kgbrus)


Lesenswert?

Sorry, ich meinte die Arduino IDE.

von J. S. (jojos)


Lesenswert?

was völlig egal ist weil sowie das Buildsystem von Arduino genutzt wird. 
Da wird eher ein define fehlen oder in der Lib nicht das richtige 
abgefragt zu werden. Besser im Arduino Forum fragen.

von Monk (roehrmond)


Lesenswert?

Möglicherweise ist due Bibliothek für den alten STM32Duino Core von 
Roger Clarks geschrieben worden.

http://stefanfrings.de/stm32/stm32f1.html#arduino

von Peter (wokinloksar)


Lesenswert?

Dann poste doch mal bitte den Fehler, den der Compiler auswirft, bevor 
der exit status 1 gesetzt wird.

von J. S. (jojos)


Lesenswert?

Steve van de Grens schrieb:
> Möglicherweise ist due Bibliothek für den alten STM32Duino Core von
> Roger Clarks geschrieben worden.

Das dürfte es sein, da wird das STM32F1 definiert
https://github.com/rogerclarkmelbourne/Arduino_STM32/blob/338020bee1491a3876d4b0bdd26ea0a395c89c38/STM32F1/platform.txt#L39

von Kay L. (kgbrus)


Lesenswert?

Hallo zusammen,

Erstmal vielen Dank an die jenigen, die mir helfen wollen.

Der Hinweis auf dem alten Core von Roger clarks könnte ein passender 
Hinweis sein, dann suche ich mal nach einem anderen.
Ich gebe euch dann bescheid.

Gruss
Kay

von Kay L. (kgbrus)


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

von J. S. (jojos)


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.

von Kay L. (kgbrus)


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

von J. S. (jojos)


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.

: Bearbeitet durch User
von Kay L. (kgbrus)


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

von Alexander (alecxs)


Lesenswert?

gruselig solche Compiler Warnings auf deutsch

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Kay L. schrieb:
> Das wirft die IDE for Exit 1 aus:

Ein Tipp:

Verwende bitte zukünftig das code- oder pre-Tag, um alles, was nicht C 
ist, als Code zu kennzeichnen. Die Hervorhebung von Backslashes und 
anderen Sonderzeichen, wenn Du das c-Tag verwendest, stören die 
Lesbarkeit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.