RFID

Dependents:   RoboticHackathon2 RoboticHackathonFINAL

Revision:
0:051708395e3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Rfid.h	Mon Apr 07 06:23:00 2014 +0000
@@ -0,0 +1,144 @@
+#ifndef RFID_h
+#define RFID_h
+
+#include "mbed.h"
+
+
+
+
+/******************************************************************************
+ * Definitions
+ ******************************************************************************/
+#define MAX_LEN 16   // Largo máximo de la matriz
+#define uchar unsigned char
+//MF522 comando palabra
+#define PCD_IDLE              0x00               // NO action; Y cancelar el comando
+#define PCD_AUTHENT           0x0E               // autenticación de clave
+#define PCD_RECEIVE           0x08               // recepción de datos
+#define PCD_TRANSMIT          0x04               // Enviar datos
+#define PCD_TRANSCEIVE        0x0C               // Enviar y recibir datos
+#define PCD_RESETPHASE        0x0F               // reajustar
+#define PCD_CALCCRC           0x03               // CRC calcular
+
+//Mifare_One  Tarjeta Mifare_One comando palabra
+#define PICC_REQIDL           0x26               // Área de la antena no está tratando de entrar en el estado de reposo
+#define PICC_REQALL           0x52               // Todas las cartas para encontrar el área de la antena
+#define PICC_ANTICOLL         0x93               // anti-colisión
+#define PICC_SElECTTAG        0x93               // elección de tarjeta
+#define PICC_AUTHENT1A        0x60               // verificación key A
+#define PICC_AUTHENT1B        0x61               // verificación Key B
+#define PICC_READ             0x30               // leer bloque
+#define PICC_WRITE            0xA0               // Escribir en el bloque 
+#define PICC_DECREMENT        0xC0               // cargo
+#define PICC_INCREMENT        0xC1               // recargar
+#define PICC_RESTORE          0xC2               // Transferencia de datos de bloque de buffer
+#define PICC_TRANSFER         0xB0               // Guardar los datos en el búfer
+#define PICC_HALT             0x50               // inactividad
+
+//MF522 Código de error de comunicación cuando regresó
+#define MI_OK                 0
+#define MI_NOTAGERR           1
+#define MI_ERR                2
+
+//------------------ MFRC522 registro---------------
+//Page 0:Command and Status
+#define     Reserved00            0x00    
+#define     CommandReg            0x01    
+#define     CommIEnReg            0x02    
+#define     DivlEnReg             0x03    
+#define     CommIrqReg            0x04    
+#define     DivIrqReg             0x05
+#define     ErrorReg              0x06    
+#define     Status1Reg            0x07    
+#define     Status2Reg            0x08    
+#define     FIFODataReg           0x09
+#define     FIFOLevelReg          0x0A
+#define     WaterLevelReg         0x0B
+#define     ControlReg            0x0C
+#define     BitFramingReg         0x0D
+#define     CollReg               0x0E
+#define     Reserved01            0x0F
+//Page 1:Command     
+#define     Reserved10            0x10
+#define     ModeReg               0x11
+#define     TxModeReg             0x12
+#define     RxModeReg             0x13
+#define     TxControlReg          0x14
+#define     TxAutoReg             0x15
+#define     TxSelReg              0x16
+#define     RxSelReg              0x17
+#define     RxThresholdReg        0x18
+#define     DemodReg              0x19
+#define     Reserved11            0x1A
+#define     Reserved12            0x1B
+#define     MifareReg             0x1C
+#define     Reserved13            0x1D
+#define     Reserved14            0x1E
+#define     SerialSpeedReg        0x1F
+//Page 2:CFG    
+#define     Reserved20            0x20  
+#define     CRCResultRegM         0x21
+#define     CRCResultRegL         0x22
+#define     Reserved21            0x23
+#define     ModWidthReg           0x24
+#define     Reserved22            0x25
+#define     RFCfgReg              0x26
+#define     GsNReg                0x27
+#define     CWGsPReg              0x28
+#define     ModGsPReg             0x29
+#define     TModeReg              0x2A
+#define     TPrescalerReg         0x2B
+#define     TReloadRegH           0x2C
+#define     TReloadRegL           0x2D
+#define     TCounterValueRegH     0x2E
+#define     TCounterValueRegL     0x2F
+//Page 3:TestRegister     
+#define     Reserved30            0x30
+#define     TestSel1Reg           0x31
+#define     TestSel2Reg           0x32
+#define     TestPinEnReg          0x33
+#define     TestPinValueReg       0x34
+#define     TestBusReg            0x35
+#define     AutoTestReg           0x36
+#define     VersionReg            0x37
+#define     AnalogTestReg         0x38
+#define     TestDAC1Reg           0x39  
+#define     TestDAC2Reg           0x3A   
+#define     TestADCReg            0x3B   
+#define     Reserved31            0x3C   
+#define     Reserved32            0x3D   
+#define     Reserved33            0x3E   
+#define     Reserved34            0x3F
+//-----------------------------------------------
+
+class RFID
+{
+  public:
+    RFID();
+    
+    
+    void check();
+    void init();
+    void reset();
+    void writeMFRC522(unsigned char addr, unsigned char val);
+    void antennaOn(void);
+    unsigned char readMFRC522(unsigned char addr);
+    void setBitMask(unsigned char reg, unsigned char mask);
+    void clearBitMask(unsigned char reg, unsigned char mask);
+    void calculateCRC(unsigned char *pIndata, unsigned char len, unsigned char *pOutData);
+    unsigned char MFRC522Request(unsigned char reqMode, unsigned char *TagType);
+    unsigned char MFRC522ToCard(unsigned char command, unsigned char *sendData, unsigned char sendLen, unsigned char *backData, unsigned int *backLen);
+    unsigned char anticoll(unsigned char *serNum);
+    
+    
+    int card;
+    unsigned char serNum[5];       // Constante para guardar el numero de serie leido.
+    unsigned char AserNum[5];      // Constante para guardar el numero d serie de la secion actual.
+    
+  private:
+    DigitalOut _chipSelectPin;
+    DigitalOut _NRSTPD;
+    SPI _rfid;
+};
+
+#endif
\ No newline at end of file