刚发现我的程序不能使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.如下
使用的休眠程序如下:
/////////////////////////////////////////////////////////////////////
//功 能:命令卡片进入休眠状态
//返 回: 成功返回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)
所以现在搞不懂这里了!是不是我调用的休眠程序有问题呢?还是怎么回事?另外补充一点,我的程序充值 退费 都没有问题了。
|