开发者学堂课程【嵌入式之 RFID 开发与应用2020版:RFID 阅读器介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/665/detail/11117
RFID 阅读器介绍
RFID 阅读器
阅读器 PCD
RFID 消费电子一块,要求不高,使用国产 FM17550,要求较高使用 MFRC522,二者是兼容的,国产较为便宜
1、读写器:
(1)通信频率,固定 13.56MHz
(2)支持协议,TypeA 类或 TypeB 类、ISO/IEC 14443 协议,阅读器只要是13.56MHz 都可以完成,如 NFC 等
(3)读写距离,10cm 以内
(4)通信速率
(5)寄存器配置,所有开发者可发的寄配器,SDK、inf 等都是厂商提供,不需要自己写自己写较为困难,需要长时间调试稳定,一般使用官方接口完成所有寄配器配置,只需要粗略了解
天线发送,接收
系统复位
调制方式
缓存区操作
(5)常见的有 FM17550,FM17522,MFRC523,MFRC522
17550 兼容 522,17522 国产
17550 有官方数据手册,英文翻译为中文
官方数据手册内容较多,多是寄存器介绍,
支持三种通讯接口
2、软件通信接口,手册都有详细介绍
SPI,I2C,UART。UART 简单,没有时间改造卡片硬件功能,改造充放电电路后可以直接连接到电脑使用,相当于不要要 MC u 采集,直接连接上位机,是窗口的优势。如果原先使用单片机使用 I2C、SPI 都是可以的
3、数据流
上位机<-->读写器<-->射频卡
整个流程为射频卡通过读写器,读写器为 17550 或 552,,射频卡是白色的 s50卡,上位机是单片机 MCU,另一个上位机的服务器 service,是基本流程
4、软件架构
(1)软件通信接口初始化
(2)读写器初始化
(3)根据相应射频协议组包,通过读写器与射频卡通信
5、对于 FM17550 串口配置
(1)FM17550 等读写器默认复位后串口配置为:
波特率为 9600(默认配置)
无奇偶校验位
无硬/软流控
数据位为 8bit
1 位停止位
(2)在 linux 下配置串口应按上述配置,尤其注意我们需要将串口配置成原始输出模式,以及关闭软流控
linux 下系统配置串口方法较多,在网上可以查询到,有 40 多年的历史
绿色板是卡片外形,有核心芯片,各种器件构成一个系统,背面是一个线圈,线圈涉及到 PCD 板,早期使用过一堆线圈绕在上面,容易损坏,这个不容易坏。使用串口,将 RX 引出,接到开发板接口,五根线,有电源线、地线、2 个数据收发、RST是一个复位信号线,让设备工作之前,提供信号
6、硬件复位
(1)外部 I0,保持低电平一定时间
使用射频之前,提供低电平,提供脉冲,大约 50 毫秒,提供脉冲后,恢复高电平,相当于复位正常工作,可以通过硬件电路做,提供脉冲希望设备可控,电路板接死是不可控
7、确认复位成功
(1)读地址为 0x37h 的版本寄存器的值
(2)mfrc522——Ox92
(3)fm17550————0x88
8、接下来步骤:寻卡、防冲突,选卡,操作卡
9、软件复位
向 CommIEnReg 寄存器写复位命令
10、发送部分
TxModeReg 寄存器,根据 A 类,B 类设置相应 bit
以上操作都是对寄存器的操作
绿色是卡片,一面是线圈,一面是芯片,白线连接的是串口,黑线是控制线,引出控制器,去掉黑线可以直接通过电脑控制
10、接收部分
RxModeReg 寄存器,根据 A 类,B 类设置相应 bit
11、天线
TxControlReg 寄存器
12、特征参数
(1)Status2Reg 寄存器,关闭加密传输
(2)ModeReg 寄存器,根据 A 类,B 类设置相应的 CRC 校验值(3)TReloadRegL、TReloadRegH、TModeReg、TPrescalerReg 寄存器用于设置定时器
(4)TxASKReg 寄存器设置调制方式,A 类 100%ASK,B 类无需 100%ASK
13、上位机主动借助读写器与卡片通信
14、读写器内部有 64 字节的 FIFO 缓存区
(1)FIFOLEVELREG: 该寄存器表示缓存区内的待读取数据字节数
(2)FIFODATAREG: 64 字节的 FIFO 缓存区,上位机将要发送给射频卡的数据写入该寄存器,或上位机根据 FIFOLEVELREG 得到可用数据字节数N,连续读取 N 它节该寄存器得到读写器接收到射频卡的回应
通讯过程要下指令读取数据
(3)由于在通信过程中,数据接收可能存在非全字节,即可能为 5bit,而非完整的 8bit,出现非全字节的情况发生在按收数据的最后一个字节,所以我们需要对最后一字节内的比特数进行判断
(4)CONTROLREG: 寄存器内的 rxlastbits 位,该标志位表明最后一字节内的比特数
(5)实际接收到的数据比特位总数为:
假设 FIFOLEVELREG 读的值 N,N 字节
实际接收的数据比特位总数=(N-1)*8 +rxlastbits
读取数据的完整性如何保证
15、COMMANDRE G,该命令寄存器里的 command 位,可以写入相应的值代表相应的命令:
(1)(RESETPHASE)1111 代表读写器立即软复位命令
(2)(TRANSCEIVE)1100 代表读写器准备发送并接收射频卡的数据。
(3)读写器执行 TRANSCEIVE 命令收发数据前,需要将 BITFRAMINGREG 寄存器内的 startsend 位置 1 来开启信号发射。
(4)由于指令寄存器不会自动清空,所以最好在发指令前,通过写入 PCD_IDLE 指令来终止上一条指令
有什么命令、命令如何启动、停止
16、根据 14443 协议规定读卡器发送数据后,在 25ms 内阅读器必须接收到射频卡的响应,否则该次通信失效。
17、实现 25ms 定时:
(1)上位机可以启动定时器或通过软件延时
(2)也可以利用阅读器内部的定时器:
TMODEREG: 内部的 Tauto 位可以在读写器无线数据通信时,自动开启定时器
TPRESCLALERREG: 与 TMODEREG 的低两位组成一个 10 位的分频器
TRELOADHIREG,TRELOADLOREG: 共 2 字节,定时器装初值
芯片内部自带的定时器使用
有关阅读器,寄存器只有一边阅读代码才能够一边去理解。