RFID#

Algemene informatie#

Deze functies werken voor de RC522 chip. Je kunt simpelweg een blok opvragen a.d.h.v. het bloknummer.

Te doen

De interrupt kan wel worden aangezet, maar deze werkt momenteel maar 1-malig. Het clearen van de interrupt werkt ook maar de wake functie werkt niet in combinatie met rfidGetBlok(). De RC522 heeft intern ook een timer die je kunt gebruiken om zichzelf wakker te maken. Dit moet nog worden geïmplementeerd.

Voorbeelden#

Om bijvoorbeeld het 20e blok binnen te halen kun je het volgende doen.

//eenmalig initaliseren
spiInitialize(0); //USCA gebruiken
rfidInitialize(BIT3,BIT0); //Chipselect op P1.3 en reset op P1.0

//dan uitlezen...
uint8_t data[16];
uint8_t fout = rfidGetBlok(20, data);
if(fout<0>)
{
   //gaat iets niet goed.
}else{
   //blokje doorlezen.
}

Functies#

Defines

GEEN_KAART_GEZIEN#

waarde -1 foutmelding volgt als de rfidGetBlok-functie geen kaart ziet

GEEN_COMMUNICATIE#

waarde -2 foutmelding volgt als de rfidGetBlok-functie wel een kaart ziet maar niet kan communiceren

VERKEERDE_KEY#

waarde -3 er is een verkeerde sleutel gebruikt voor de sector

VERKEERD_BLOK#

waarde -4 er is een blok opgevraagd wat niet bestaat

Functions

void rfidEnableInterrupt()#

Hiermee wordt het Communicatie Interrupt Enable register beschreven en de RX interrupt aangezet. Ook wordt het inverteer bitje daarbij aangezet zodat de IRQ pin standaard hoog is en laag wordt bij een interrupt.

void rfidClearInterrupt()#

Dit reset de interrupt binnen de RC522

void rfidWake()#

Deze functie zou de tranceiver wakker moeten maken wat nodig is om interrupts te houden. Dit werkt vooralsnog niet goed.

void rfidInitialize(uint8_t chipselect, uint8_t reset)#

Deze functie initialiseert de RC522 RFID reader. Chipselect en Reset zijn voor nu gelimiteerd tot poort 1.

Todo:

Nu standaard poort 1, nog uitbreiden met poortnummer

Parameters:
  • chipselect – De bitpositie van de chipselect pin. Bijv. (1<<5) of BIT5

  • reset – De bitpositie van de RST pin. Bijv. BIT4

int8_t rfidGetBlok(uint8_t blokNummer, uint8_t bytes[16])#

Deze functie geeft het blok terug bij een opgegeven nummer.

Parameters:
  • blokNummer – Het nummer van het blok van 0 t/m 63

  • bytes – Een pointer naar een 16 bytes brede array om het gelezen blok in te plaatsen.

Returns:

Error-code. Alles onder 0 betekend dat het niet goed gaat. 0 is wel goed.