RFID
Dependents: RoboticHackathon2 RoboticHackathonFINAL
Rfid.h@0:051708395e3c, 2014-04-07 (annotated)
- Committer:
- iLyngklip
- Date:
- Mon Apr 07 06:23:00 2014 +0000
- Revision:
- 0:051708395e3c
RFID
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
iLyngklip | 0:051708395e3c | 1 | #ifndef RFID_h |
iLyngklip | 0:051708395e3c | 2 | #define RFID_h |
iLyngklip | 0:051708395e3c | 3 | |
iLyngklip | 0:051708395e3c | 4 | #include "mbed.h" |
iLyngklip | 0:051708395e3c | 5 | |
iLyngklip | 0:051708395e3c | 6 | |
iLyngklip | 0:051708395e3c | 7 | |
iLyngklip | 0:051708395e3c | 8 | |
iLyngklip | 0:051708395e3c | 9 | /****************************************************************************** |
iLyngklip | 0:051708395e3c | 10 | * Definitions |
iLyngklip | 0:051708395e3c | 11 | ******************************************************************************/ |
iLyngklip | 0:051708395e3c | 12 | #define MAX_LEN 16 // Largo máximo de la matriz |
iLyngklip | 0:051708395e3c | 13 | #define uchar unsigned char |
iLyngklip | 0:051708395e3c | 14 | //MF522 comando palabra |
iLyngklip | 0:051708395e3c | 15 | #define PCD_IDLE 0x00 // NO action; Y cancelar el comando |
iLyngklip | 0:051708395e3c | 16 | #define PCD_AUTHENT 0x0E // autenticación de clave |
iLyngklip | 0:051708395e3c | 17 | #define PCD_RECEIVE 0x08 // recepción de datos |
iLyngklip | 0:051708395e3c | 18 | #define PCD_TRANSMIT 0x04 // Enviar datos |
iLyngklip | 0:051708395e3c | 19 | #define PCD_TRANSCEIVE 0x0C // Enviar y recibir datos |
iLyngklip | 0:051708395e3c | 20 | #define PCD_RESETPHASE 0x0F // reajustar |
iLyngklip | 0:051708395e3c | 21 | #define PCD_CALCCRC 0x03 // CRC calcular |
iLyngklip | 0:051708395e3c | 22 | |
iLyngklip | 0:051708395e3c | 23 | //Mifare_One Tarjeta Mifare_One comando palabra |
iLyngklip | 0:051708395e3c | 24 | #define PICC_REQIDL 0x26 // Área de la antena no está tratando de entrar en el estado de reposo |
iLyngklip | 0:051708395e3c | 25 | #define PICC_REQALL 0x52 // Todas las cartas para encontrar el área de la antena |
iLyngklip | 0:051708395e3c | 26 | #define PICC_ANTICOLL 0x93 // anti-colisión |
iLyngklip | 0:051708395e3c | 27 | #define PICC_SElECTTAG 0x93 // elección de tarjeta |
iLyngklip | 0:051708395e3c | 28 | #define PICC_AUTHENT1A 0x60 // verificación key A |
iLyngklip | 0:051708395e3c | 29 | #define PICC_AUTHENT1B 0x61 // verificación Key B |
iLyngklip | 0:051708395e3c | 30 | #define PICC_READ 0x30 // leer bloque |
iLyngklip | 0:051708395e3c | 31 | #define PICC_WRITE 0xA0 // Escribir en el bloque |
iLyngklip | 0:051708395e3c | 32 | #define PICC_DECREMENT 0xC0 // cargo |
iLyngklip | 0:051708395e3c | 33 | #define PICC_INCREMENT 0xC1 // recargar |
iLyngklip | 0:051708395e3c | 34 | #define PICC_RESTORE 0xC2 // Transferencia de datos de bloque de buffer |
iLyngklip | 0:051708395e3c | 35 | #define PICC_TRANSFER 0xB0 // Guardar los datos en el búfer |
iLyngklip | 0:051708395e3c | 36 | #define PICC_HALT 0x50 // inactividad |
iLyngklip | 0:051708395e3c | 37 | |
iLyngklip | 0:051708395e3c | 38 | //MF522 Código de error de comunicación cuando regresó |
iLyngklip | 0:051708395e3c | 39 | #define MI_OK 0 |
iLyngklip | 0:051708395e3c | 40 | #define MI_NOTAGERR 1 |
iLyngklip | 0:051708395e3c | 41 | #define MI_ERR 2 |
iLyngklip | 0:051708395e3c | 42 | |
iLyngklip | 0:051708395e3c | 43 | //------------------ MFRC522 registro--------------- |
iLyngklip | 0:051708395e3c | 44 | //Page 0:Command and Status |
iLyngklip | 0:051708395e3c | 45 | #define Reserved00 0x00 |
iLyngklip | 0:051708395e3c | 46 | #define CommandReg 0x01 |
iLyngklip | 0:051708395e3c | 47 | #define CommIEnReg 0x02 |
iLyngklip | 0:051708395e3c | 48 | #define DivlEnReg 0x03 |
iLyngklip | 0:051708395e3c | 49 | #define CommIrqReg 0x04 |
iLyngklip | 0:051708395e3c | 50 | #define DivIrqReg 0x05 |
iLyngklip | 0:051708395e3c | 51 | #define ErrorReg 0x06 |
iLyngklip | 0:051708395e3c | 52 | #define Status1Reg 0x07 |
iLyngklip | 0:051708395e3c | 53 | #define Status2Reg 0x08 |
iLyngklip | 0:051708395e3c | 54 | #define FIFODataReg 0x09 |
iLyngklip | 0:051708395e3c | 55 | #define FIFOLevelReg 0x0A |
iLyngklip | 0:051708395e3c | 56 | #define WaterLevelReg 0x0B |
iLyngklip | 0:051708395e3c | 57 | #define ControlReg 0x0C |
iLyngklip | 0:051708395e3c | 58 | #define BitFramingReg 0x0D |
iLyngklip | 0:051708395e3c | 59 | #define CollReg 0x0E |
iLyngklip | 0:051708395e3c | 60 | #define Reserved01 0x0F |
iLyngklip | 0:051708395e3c | 61 | //Page 1:Command |
iLyngklip | 0:051708395e3c | 62 | #define Reserved10 0x10 |
iLyngklip | 0:051708395e3c | 63 | #define ModeReg 0x11 |
iLyngklip | 0:051708395e3c | 64 | #define TxModeReg 0x12 |
iLyngklip | 0:051708395e3c | 65 | #define RxModeReg 0x13 |
iLyngklip | 0:051708395e3c | 66 | #define TxControlReg 0x14 |
iLyngklip | 0:051708395e3c | 67 | #define TxAutoReg 0x15 |
iLyngklip | 0:051708395e3c | 68 | #define TxSelReg 0x16 |
iLyngklip | 0:051708395e3c | 69 | #define RxSelReg 0x17 |
iLyngklip | 0:051708395e3c | 70 | #define RxThresholdReg 0x18 |
iLyngklip | 0:051708395e3c | 71 | #define DemodReg 0x19 |
iLyngklip | 0:051708395e3c | 72 | #define Reserved11 0x1A |
iLyngklip | 0:051708395e3c | 73 | #define Reserved12 0x1B |
iLyngklip | 0:051708395e3c | 74 | #define MifareReg 0x1C |
iLyngklip | 0:051708395e3c | 75 | #define Reserved13 0x1D |
iLyngklip | 0:051708395e3c | 76 | #define Reserved14 0x1E |
iLyngklip | 0:051708395e3c | 77 | #define SerialSpeedReg 0x1F |
iLyngklip | 0:051708395e3c | 78 | //Page 2:CFG |
iLyngklip | 0:051708395e3c | 79 | #define Reserved20 0x20 |
iLyngklip | 0:051708395e3c | 80 | #define CRCResultRegM 0x21 |
iLyngklip | 0:051708395e3c | 81 | #define CRCResultRegL 0x22 |
iLyngklip | 0:051708395e3c | 82 | #define Reserved21 0x23 |
iLyngklip | 0:051708395e3c | 83 | #define ModWidthReg 0x24 |
iLyngklip | 0:051708395e3c | 84 | #define Reserved22 0x25 |
iLyngklip | 0:051708395e3c | 85 | #define RFCfgReg 0x26 |
iLyngklip | 0:051708395e3c | 86 | #define GsNReg 0x27 |
iLyngklip | 0:051708395e3c | 87 | #define CWGsPReg 0x28 |
iLyngklip | 0:051708395e3c | 88 | #define ModGsPReg 0x29 |
iLyngklip | 0:051708395e3c | 89 | #define TModeReg 0x2A |
iLyngklip | 0:051708395e3c | 90 | #define TPrescalerReg 0x2B |
iLyngklip | 0:051708395e3c | 91 | #define TReloadRegH 0x2C |
iLyngklip | 0:051708395e3c | 92 | #define TReloadRegL 0x2D |
iLyngklip | 0:051708395e3c | 93 | #define TCounterValueRegH 0x2E |
iLyngklip | 0:051708395e3c | 94 | #define TCounterValueRegL 0x2F |
iLyngklip | 0:051708395e3c | 95 | //Page 3:TestRegister |
iLyngklip | 0:051708395e3c | 96 | #define Reserved30 0x30 |
iLyngklip | 0:051708395e3c | 97 | #define TestSel1Reg 0x31 |
iLyngklip | 0:051708395e3c | 98 | #define TestSel2Reg 0x32 |
iLyngklip | 0:051708395e3c | 99 | #define TestPinEnReg 0x33 |
iLyngklip | 0:051708395e3c | 100 | #define TestPinValueReg 0x34 |
iLyngklip | 0:051708395e3c | 101 | #define TestBusReg 0x35 |
iLyngklip | 0:051708395e3c | 102 | #define AutoTestReg 0x36 |
iLyngklip | 0:051708395e3c | 103 | #define VersionReg 0x37 |
iLyngklip | 0:051708395e3c | 104 | #define AnalogTestReg 0x38 |
iLyngklip | 0:051708395e3c | 105 | #define TestDAC1Reg 0x39 |
iLyngklip | 0:051708395e3c | 106 | #define TestDAC2Reg 0x3A |
iLyngklip | 0:051708395e3c | 107 | #define TestADCReg 0x3B |
iLyngklip | 0:051708395e3c | 108 | #define Reserved31 0x3C |
iLyngklip | 0:051708395e3c | 109 | #define Reserved32 0x3D |
iLyngklip | 0:051708395e3c | 110 | #define Reserved33 0x3E |
iLyngklip | 0:051708395e3c | 111 | #define Reserved34 0x3F |
iLyngklip | 0:051708395e3c | 112 | //----------------------------------------------- |
iLyngklip | 0:051708395e3c | 113 | |
iLyngklip | 0:051708395e3c | 114 | class RFID |
iLyngklip | 0:051708395e3c | 115 | { |
iLyngklip | 0:051708395e3c | 116 | public: |
iLyngklip | 0:051708395e3c | 117 | RFID(); |
iLyngklip | 0:051708395e3c | 118 | |
iLyngklip | 0:051708395e3c | 119 | |
iLyngklip | 0:051708395e3c | 120 | void check(); |
iLyngklip | 0:051708395e3c | 121 | void init(); |
iLyngklip | 0:051708395e3c | 122 | void reset(); |
iLyngklip | 0:051708395e3c | 123 | void writeMFRC522(unsigned char addr, unsigned char val); |
iLyngklip | 0:051708395e3c | 124 | void antennaOn(void); |
iLyngklip | 0:051708395e3c | 125 | unsigned char readMFRC522(unsigned char addr); |
iLyngklip | 0:051708395e3c | 126 | void setBitMask(unsigned char reg, unsigned char mask); |
iLyngklip | 0:051708395e3c | 127 | void clearBitMask(unsigned char reg, unsigned char mask); |
iLyngklip | 0:051708395e3c | 128 | void calculateCRC(unsigned char *pIndata, unsigned char len, unsigned char *pOutData); |
iLyngklip | 0:051708395e3c | 129 | unsigned char MFRC522Request(unsigned char reqMode, unsigned char *TagType); |
iLyngklip | 0:051708395e3c | 130 | unsigned char MFRC522ToCard(unsigned char command, unsigned char *sendData, unsigned char sendLen, unsigned char *backData, unsigned int *backLen); |
iLyngklip | 0:051708395e3c | 131 | unsigned char anticoll(unsigned char *serNum); |
iLyngklip | 0:051708395e3c | 132 | |
iLyngklip | 0:051708395e3c | 133 | |
iLyngklip | 0:051708395e3c | 134 | int card; |
iLyngklip | 0:051708395e3c | 135 | unsigned char serNum[5]; // Constante para guardar el numero de serie leido. |
iLyngklip | 0:051708395e3c | 136 | unsigned char AserNum[5]; // Constante para guardar el numero d serie de la secion actual. |
iLyngklip | 0:051708395e3c | 137 | |
iLyngklip | 0:051708395e3c | 138 | private: |
iLyngklip | 0:051708395e3c | 139 | DigitalOut _chipSelectPin; |
iLyngklip | 0:051708395e3c | 140 | DigitalOut _NRSTPD; |
iLyngklip | 0:051708395e3c | 141 | SPI _rfid; |
iLyngklip | 0:051708395e3c | 142 | }; |
iLyngklip | 0:051708395e3c | 143 | |
iLyngklip | 0:051708395e3c | 144 | #endif |