剛發(fā)現(xiàn)我的程序不能使RC522 讓卡片進入休眠狀態(tài)。我用的命令是status=PcdRequest(PICC_REQIDL,CT); //0X26 尋找未進入休眠的卡。然后調(diào)用了休眠程序!status=PcdHalt();(這里休眠狀態(tài)調(diào)用后的返回值一直是1而不是0)!!!可現(xiàn)在問題是不能讓卡片進入休眠的狀態(tài),特別的疑惑不知道是哪里出了問題~~~status=PcdRequest(PICC_REQIDL,&CT[2]); //只尋卡一次 0x26
//status=PcdRequest(PICC_REQALL ,CT); // 尋卡程序 尋找所有卡片 不停尋卡 0X52
if(status==MI_OK)
{
UART2_send_TC(0x99); //串口發(fā)送尋卡輸出測試數(shù)據(jù) 輸出99
status=MI_ERR;
PcdHalt(); //命令卡片進入休眠狀態(tài)
}
以上這個是主程序里面的尋卡程序,意圖是想讓設(shè)備尋到卡后讓其進入休眠的狀態(tài)不在進行尋卡操作,除非第二次貼卡!但是實際貼上卡后我的串口會一直有數(shù)據(jù)輸出,顯示99.如下
使用的休眠程序如下:
/////////////////////////////////////////////////////////////////////
//功 能:命令卡片進入休眠狀態(tài)
//返 回: 成功返回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;
}
而我這里的休眠程序返回的狀態(tài) UART2_send_TC(status); 這個status一直是1(MI_ERR)而不是0(MI_OK)
所以現(xiàn)在搞不懂這里了!是不是我調(diào)用的休眠程序有問題呢?還是怎么回事?另外補充一點,我的程序充值 退費 都沒有問題了。
|