RFID

Dependents:   RoboticHackathon2 RoboticHackathonFINAL

Committer:
iLyngklip
Date:
Mon Apr 07 06:23:00 2014 +0000
Revision:
0:051708395e3c
RFID

Who changed what in which revision?

UserRevisionLine numberNew 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