Arduino mit MFRC522-Reader

Arduino mit MFRC522-Reader

Der Einsatz von spi.transfer()

Den kompletten Kommunikationsablauf über die SPI-Schnittstelle übernimmt die SPI-Bibliothek, die sich in der Arduino-Software befindet. Wir brauchen lediglich 2 Befehle:

Bei SPI wird keine Software-Adresse verwendet. Die Adressierung geschieht hardwaremäßig über das Ansteuern der Chip-Select-Leitung (CS). Im Grunde würden wir diese Leitung nicht benötigen, weil lediglich ein Gerät an der Schnittstelle betrieben wird. Der Vollständigkeit halber beziehen wir sie aber ein.

Es gibt auch keinen Schreib- oder Lesebefehl, wir übertragen lediglich einen Wert und es ist Sache des Empfängers, was er damit anstellt.

In unserem Fall müssen wir die Adresse des Version-Registers übertragen, aber der MFRC522 muss ja auch wissen, was er mit dieser Adresse machen soll. Wir können nämlich das Register nicht lesen, sondern lediglich dem RFID-Chip den Befehl erteilen, dass er uns den Inhalt sendet. Das funktioniert wie folgt:


Die Registeradressen im MFRC522 sind 6 Bit lang (grün), beim SPI werden die Daten im 8-Bit-Format übertragen. Der MFRC522 erwartet die 6 Bit der Registeradresse an den Stellen D1 bis D6. Falls wir in ein Register schreiben wollen, ist das höchstwertigste D7 gleich 0, beim Lesen platzieren wir dort eine 1.



Das letzte Bit D0 wird nicht benötigt. Warum ein Chip eine solch spezielle Formatierung verwendet, hängt häufig vom internen Aufbau ab. Wir müssen lediglich wissen, dass es so ist, sonst funktoniert unser Programm nicht.