标题:
RC522读取7字节M1卡的UID遇到的问题
[打印本页]
作者:
HelloPan111
时间:
2020-9-29 13:40
标题:
RC522读取7字节M1卡的UID遇到的问题
现在的情况是:
4字节的卡能正确寻到卡并能读取到UID,7字节能读取到前3字节,利用二级防冲撞读取后四字节出错。具体表现为:读取RC522寄存器超时,说明RC522没有响应这个命令。
想请教有没有这方面经验的坛友可以解答下?我的做法是二级防冲撞和一级防冲撞的操作一样,包括寄存器的配置与发送的字节,唯一的改变就是将防冲撞命令从0x93改为0x95.
char PcdAnticoll(unsigned char *pSnr)
{
char status;
unsigned char i,snr_check=0;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
ClearBitMask(Status2Reg,0x08); //清MFCryptol On位 只有成功执行MFAuthent命令后,该位才能置位
WriteRawRC(BitFramingReg,0x00); //清理寄存器 停止收发
ClearBitMask(CollReg,0x80); //清ValuesAfterColl所有接收的位在冲突后被清除
ucComMF522Buf[0] = PICC_ANTICOLL1; //卡片防冲突命令
ucComMF522Buf[1] = 0x20;
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);//与卡片通信
if (status == MI_OK) //通信成功,读出卡的UID
{
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;
}
复制代码
作者:
szb314
时间:
2022-1-12 13:21
参考一下这个
https://www.nxp.com/docs/en/application-note/AN10927.pdf
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1