找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 596|回复: 1
打印 上一主题 下一主题
收起左侧

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.如下


使用的休眠程序如下:
/////////////////////////////////////////////////////////////////////
//功    能:命令卡片进入休眠状态
//返    回: 成功返回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, 下载次数: 22)

88.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:301191 发表于 2023-3-1 19:44 | 只看该作者
顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表