
RC522完整程序详解
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
《RC522完整程序详解》是一份全面解析RFID模块RC522编程应用的技术文档,详细介绍了RC522的工作原理、电路连接及各类语言下的操作实例。适合初学者和进阶用户参考学习。
功能:寻卡
参数:
- `req_code[IN]` 寻找卡片的方式
- `0x52` 表示寻找符合14443A标准的所有感应区内的卡片。
- `0x26` 表示仅寻找未进入休眠状态的卡片。
返回值:成功时返回MI_OK
```c
signed char PcdRequest(unsigned char req_code, unsigned char *pTagType) {
signed char status;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
ClearBitMask(Status2Reg, 0x08);
WriteRawRC(BitFramingReg, 0x07);
SetBitMask(TxControlReg, 0x03);
ucComMF522Buf[0] = req_code;
status = PcdComMF522(PCD_TRANSCEIVE, ucComMF522Buf, 1, ucComMF522Buf, &unLen);
if ((status == MI_OK) && (unLen == 0x10)) {
*pTagType = ucComMF522Buf[0];
*(pTagType + 1) = ucComMF522Buf[1];
} else {
status = MI_ERR;
}
return status;
}
```
功能:防冲撞
参数:
- `pSnr[OUT]` 卡片序列号,4字节。
返回值:成功时返回MI_OK
```c
signed char PcdAnticoll(unsigned char *pSnr) {
signed char status;
unsigned char i, snr_check = 0;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
ClearBitMask(Status2Reg, 0x08);
WriteRawRC(BitFramingReg, 0x00);
ClearBitMask(CollReg, 0x80);
ucComMF522Buf[0] = PICC_ANTICOLL1;
ucComMF522Buf[1] = 0x20;
status = PcdComMF522(PCD_TRANSCEIVE, ucComMF522Buf, 2, ucComMF522Buf, &unLen);
if (status == MI_OK) {
for(i=0; i<4; i++) {
*(pSnr + i) = ucComMF522Buf[i];
snr_check ^= ucComMF522Buf[i];
}
if(snr_check != ucComMF522Buf[i]) {
status = MI_ERR;
}
}
SetBitMask(CollReg, 0x80);
return status;
}
```
功能:选定卡片
参数:
- `pSnr[IN]` 卡片序列号,4字节。
返回值:成功时返回MI_OK
```c
signed char PcdSelect(unsigned char *pSnr) {
signed char status;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = PICC_SElECTTAG;
for(int i=1; i<8;i++) {
ucComMF522Buf[i] = *(pSnr + (i-1));
}
status = PcdComMF522(PCD_TRANSCEIVE, ucComMF522Buf, 7, ucComMF522Buf, &unLen);
if((status == MI_OK) && ((ucComMF522Buf[0] & 0x0F) == PICC_CMD_SAK)) {
status = MI_ERR;
}
return status;
}
```
功能:验证卡片状态
参数:
- `auth_mode` 验证模式
- `addr` 地址
- `pKey` 密钥指针,6字节。
- `pSnr` 卡片序列号。
返回值:成功时返回MI_OK
```c
signed char PcdAuthState(unsigned char auth_mode, unsigned char addr, unsigned char *pKey, unsigned char *pSnr) {
signed char status;
unsigned int unLen;
unsigned char i, ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = auth_mode;
ucComMF522Buf[1] = addr;
for (i=0;i<6; i++) {
ucComMF5
全部评论 (0)


