三天搞定射频识别技术(二)2.3寻卡防冲突选卡

2023-10-27

寻卡防冲突

/*******************************************************************************
//功    能:寻卡
//参数说明: req_code[IN]:寻卡方式
//                0x52 = 寻感应区内所有符合14443A标准的卡
//                0x26 = 寻未进入休眠状态的卡
//          pTagType[OUT]:卡片类型代码
//                0x4400 = Mifare_UltraLight
//                0x0400 = Mifare_One(S50)
//                0x0200 = Mifare_One(S70)
//                0x0800 = Mifare_Pro(X)
//                0x4403 = Mifare_DESFire
//返    回: 成功返回MI_OK
*******************************************************************************/
char PcdRequest(unsigned char req_code,unsigned char *pTagType)
{
    char status;
    unsigned int  unLen;
    unsigned char ucComMF522Buf[MAXRLEN];

    ClearBitMask(Status2Reg,0x08);    //清零Status2Reg的MFAuthent Command执行成功标志位
    WriteRawRC(BitFramingReg,0x07);   //清零Transceive命令开始位
    SetBitMask(TxControlReg,0x03);    //开启天线
    ucComMF522Buf[0] = req_code;      //取522要执行的命令
    //printf("%x\n",ucComMF522Buf[0]);
    //printf("%x\n",ucComMF522Buf[1]);
    status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);//向PICC发送寻天线区内全部卡命令,并接收PICC返回的数据

    if ((status == MI_OK))
   if ((status == MI_OK) && (unLen == 0x10))//没有错误并接接收为2个字节
    {
        *pTagType     = ucComMF522Buf[0];//取接收缓冲区的第一个字节
        *(pTagType+1) = ucComMF522Buf[1];//取接收缓冲区的第二个字节
    }
    else
    {
        status = MI_ERR;      //错误
    }
	#if PRINT
	printf("card type is:\n");
    printf("%x\n",ucComMF522Buf[0]);
    printf("%x\n",ucComMF522Buf[1]);
	#endif
    
    return status;
}
/*******************************************************************************/
/*******************************************************************************
//功    能:防冲撞
//参数说明: pSnr[OUT]:卡片序列号,4字节
//返    回: 成功返回MI_OK
//协	议:SEL  NVB(0X20)  
*******************************************************************************/
char PcdAnticoll(unsigned char *id)
{
    char status;
    unsigned char i,snr_check=0;
    unsigned int  unLen;
    unsigned char ucComMF522Buf[MAXRLEN];


    ClearBitMask(Status2Reg,0x08);//清除标志位
    WriteRawRC(BitFramingReg,0x00);//000 指示最后一个字节的所有位将被发送。
    ClearBitMask(CollReg,0x80);//发生碰撞所有接收位将被清除
    ucComMF522Buf[0] = PICC_ANTICOLL1;//0x93 防冲撞 发到卡里的命令
    ucComMF522Buf[1] = 0x20;

    status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);//获得卡的序列号,ucComMF522Buf[]
    if (status == MI_OK)
    {
        for (i=0; i<4; i++)
        {
			id[i] = ucComMF522Buf[i];		//返回卡的序列号
            snr_check ^= ucComMF522Buf[i];	//计算校验码
        }
        if (snr_check != ucComMF522Buf[i])
        {
            status = MI_ERR;       //有错误
        }
    }

    SetBitMask(CollReg,0x80);//置位防碰撞位
    return status;

}

在这里插入图片描述

选卡

/*******************************************************************************
//功    能:选定卡片
//参数说明: pSnr[IN]:卡片序列号,4字节
//返    回: 成功返回MI_OK
//协	议:SEL  	NVB(0X70)  	ID(4个byte)  	IDCHECK  	CRC16
*******************************************************************************/
char PcdSelect(unsigned char *id)
{
    char status = 0XFF;
    unsigned char i;
    unsigned int  unLen;
    unsigned char ucComMF522Buf[MAXRLEN]; 	//MAXRLEN = 18

    ucComMF522Buf[0] = PICC_ANTICOLL1;//防冲撞命令
    ucComMF522Buf[1] = 0x70;
    ucComMF522Buf[6] = 0;
    for (i=0; i<4; i++)
    {
        ucComMF522Buf[i+2] = *(id+i);//填充卡的序列号
        ucComMF522Buf[6]  ^= *(id+i);//计算校验码
    }
    CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf[7]);//获得CRC校验结果的16位值
    //放入ucComMF522Buf【0,1】
    ClearBitMask(Status2Reg,0x08);//清零MFAuthent Command执行成功标志位

    status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen);//把CRC值和卡号发的卡里

    if ((status == MI_OK) && (unLen == 0x18))//返回24个字节&状态为无错误
    {
        status = MI_OK;
    }
    else
    {
        status = MI_ERR;
    }

    return status;
}

在这里插入图片描述
因为S50卡所以select结果是8
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三天搞定射频识别技术(二)2.3寻卡防冲突选卡 的相关文章

  • RFID基础

    射频基础 1 射频 xff1a 射频 xff08 Radio Frequency xff0c RF xff09 是一种高频交流变化电磁波 xff0c 通常所指的频率范围为100 kHz xff5e 30 GHz 我们把具有远距离传输能力的高
  • RFID智能门禁系统设计

    博主福利 xff1a 100G 43 电子设计学习资源包 xff01 http mp weixin qq com mp homepage biz 61 MzU3OTczMzk5Mg 61 61 amp hid 61 7 amp sn 61
  • 第1章 前 言

    来源 我是码农 转载请保留出处和链接 本文链接 http www 54manong com id 1258 1 1 问题的背景 1 1 1 RFID技术 RFID即无线射频识别技术 Radio Frequency Identificatio
  • Arduino加速度计射频自动化系统

    该项目旨在设计基于加速度计的实验室自动化系统 该系统分为两部分 1 发送器部分和 2 接收器部分 对于该实验 考虑使用两个负载灯泡和风扇 图1给出了系统框图 物料清单 发送端 接收端 接线 发送端 接收端 原理图 代码 发送端代码 接收端代
  • RFID 复杂事件检测算法-毕业论文

    摘 要 本论文首先介绍了RFID技术的概念 工作原理 发展过程 应用背景等信息 然后对本系统所需的硬件条件 即RFID阅读器的特性和配置等信息进行说明 接下来介绍了基于RFID的仓储管理系统的开发背景 探讨了数据库的功能特点 做出了系统需求
  • 革命性创新:RFID技术引领汽车零部件加工新时代

    革命性创新 RFID技术引领汽车零部件加工新时代 RFID Radio Frequency Identification 射频识别 技术是一种利用无线电频率进行自动识别的技术 可以快速 准确地识别物体并获取相关数据 在汽车零部件加工中 RF
  • Arduino和LabVIEW射频灾害紧急报警系统

    该项目将在发生灾难时生成紧急警报 该系统分为两部分 传感器节点和 2 服务器 连接该开关阵列以在处理端生成紧急信号 然后将其发送到传感器节点 图1给出了系统框图 物料清单 接线 原理图 代码 传感器节点端代码 处理端代码 仿真模型 LabV
  • 原理图和PCB设计--EMC审查项(具体实施需结合公司实际项目做合理变更)

    原理图EMC设计检查要点 PCB EMC设计检查要点
  • 图解通信原理与案例分析-32:物流仓储、智能交通中的RFID通信技术详解

    前言 RFID射频身份识别 是一个非常成熟的通信技术 在仓储物流 交通运输等行业有广泛的应用 本文就将介绍RFID的通信原理 目录 第1章 RFID射频身份识别概述 第2章 RFID网络架构 2 1 RFID通信无线通信 2 2 RFID系
  • Arduino和LabVIEW射频校园火警系统

    该项目的目的是设计一个用于校园火灾警报的监控系统 该系统分为两个部分 1 发射器部分和 2 接收器部分 其方式是 它将在发射器部分的火灾传感器的帮助下感应周围的火灾 并与接收器进行通信 使用2 4 GHz RF调制解调器无线连接 在接收端
  • RFID叉车纸滑托盘管理应用方案

    1 RFID使用场景和意义 工业送货车单件满载卷烟1600件 按RFID纸滑托盘卷烟24件 托盘 上下两层左右两垛 一个横切面四托盘的装载模式 可装载卷烟64托盘1536件 装载率达96 采用RFID纸滑托盘比传统托盘联运960件的装载率提
  • SX1278学习

    一 简介 采用扩频技术 接收灵敏度更高 用户自行决定扩频调制带宽 BW 扩频因子 SF 纠错率 CR 支持标准的GFSK FSK OOK GMSK调制模式 带宽范围7 8 500KHz 扩频因子6 12 137MHz 1020MHz 低功率
  • “RFID与光伏板的完美融合:探索能源科技的新时代!“

    随着科技的不断发展 人类创造出了许多令人惊叹的发明 其中 RFID Radio Frequency Identification 技术的应用在各个领域日益广泛 最近的研究表明 将RFID技术应用于光伏板领域 不仅可以提高光伏板的效率 还可以
  • 毕业设计 stm32 RFID智能仓库管理系统(源码+硬件+论文)

    文章目录 0 前言 1 主要功能 3 核心软件设计 4 实现效果 5 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉学长自己做的项目系统达不
  • RFID桌面一体机在珠宝管理中的应用

    1 产品 铨顺宏 FU M6 USB N是一款以Thingamgic优异的M6e NANO模组为核心集成桌面式RFID一体机 RFID桌面工作台外观轻薄时尚 便于安装同时不影响美观 适用于进行RFID标签的读取 写入等绑定操作 同时 设备具
  • NFC 标签系列 - 真正独特吗?可克隆?

    NFC标签真的是这样吗UNIQUE彼此之间 至少在他们的序列号 我们可以相信没有 2 个 NFC 标签可以具有相同的序列号吗 我对此非常怀疑 因为那里有 并且将会有更多 NFC 标签 而且我不认为有人在控制这些连续剧 我问这个问题的原因是我
  • 树莓派 pico rfid rc522 (Micropython)

    我想使用 RPi Pico 从 mfrc522 Iduino RFID rc522 读卡器读取数据 但我不知道如何操作 我试图使用为此目的制作的 mfrc522 py MicroPython 库 阅读器正在通过 SPI 与 Pi 通信 我将
  • MIFARE Classic 标准按键

    我有两个 NFC 标签 其扇区具有不同的密钥 标签 1 此标签包含 NDEF 消息 扇区 0 A0 A1 A2 A3 A4 A5对于钥匙 A 扇区 1 至 15 D3 F7 D3 F7 D3 F7对于钥匙 A 标签 2 此标签上没有 NDE
  • 是否可以在 NFC 卡中实现令牌队列?

    这个问题专门针对 MIFARE Ultralight C EV1 或 MIFARE DESFire EV1 甚至 NTAG 卡 我想实现一个令牌系统 以便每次普通用户读取其中一张卡时 他们都会获得一个可用令牌 该令牌将从他们正在读取的 NF
  • Android 应用程序模仿物理 RFID 卡

    Android 应用程序是否可以将之前存储的 RFID 卡 ID 发送到 NFC 读卡器 目标是使用 Android 设备代替物理 RFID 卡来访问房间 在阅读了许多有关 NFC RFID 和卡模拟的其他帖子后 我得出的结论是 它目前在

随机推荐