标题:
RC522不能使卡片进入休眠状态?附单片机程序
[打印本页]
作者:
donny123800
时间:
2023-2-22 11:32
标题:
RC522不能使卡片进入休眠状态?附单片机程序
刚发现我的程序不能使RC522 让卡片进入休眠状态。我用的命令是status=PcdRequest(PICC_REQIDL,CT); //0X26 寻找未进入休眠的卡。然后调用了休眠程序!status=PcdHalt();
(这里休眠状态调用后的返回值一直是1而不是0)!!!
可现在问题是不能让卡片进入休眠的状态,特别的疑惑不知道是哪里出了问题~~~status=PcdRequest(PICC_REQIDL,&CT[2]); //只寻卡一次 0x26
//status=PcdRequest(PICC_REQALL ,CT); // 寻卡程序 寻找所有卡片 不停寻卡 0X52
if(status==MI_OK)
{
UART2_send_TC(0x99); //串口发送寻卡输出测试数据 输出99
status=MI_ERR;
PcdHalt(); //命令卡片进入休眠状态
}
以上这个是主程序里面的寻卡程序,意图是想让设备寻到卡后让其进入休眠的状态不在进行寻卡操作,除非第二次贴卡!但是实际贴上卡后我的串口会一直有数据输出,显示99.如下
99.png
(14.34 KB, 下载次数: 63)
下载附件
2023-2-22 11:25 上传
使用的休眠程序如下:
/////////////////////////////////////////////////////////////////////
//功 能:命令卡片进入休眠状态
//返 回: 成功返回MI_OK
/////////////////////////////////////////////////////////////////////
char PcdHalt(void)
{
char status;
u8 unLen;
u8 ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = PICC_HALT;
ucComMF522Buf[1] = 0;
CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);
UART2_send_TC(status);
//测试休眠程序运行后的返回值
return status;
}
而我这里的休眠程序返回的状态
UART2_send_TC(status); 这个status一直是1(MI_ERR)而不是0(MI_OK)
所以现在搞不懂这里了!是不是我调用的休眠程序有问题呢?还是怎么回事?
另外补充一点,我的程序充值 退费 都没有问题了。
88.png
(30.04 KB, 下载次数: 79)
下载附件
2023-2-22 11:27 上传
作者:
人工置顶员
时间:
2023-3-1 19:44
顶一下
作者:
player43
时间:
2024-5-20 20:28
为什么要用休眠呢?
作者:
188610329
时间:
2024-5-21 18:56
你的RC522 是个模块吧? 就市面上常见的RC522模块来讲,无法穿透一张IC卡读取另一张IC卡,所以卡片休眠指令毫无意义,这是其一。
其二,为什么发了休眠指令,卡片还能够读到?市面上80%的A1卡,根本是无视休眠指令的。你琢磨软件,不如去找发卡商确认。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1