RFID介绍
射频识别:英文名称是(Radio Frequency ldentification),简称是“RFID”又称无线射频识别,RFID是物联网的其中一种终端技术。
RFID是一种通信技术,可通过无线电讯号耦合识别特定自标并读写相关数据,而无需衰变 系统与特定目标之间建立机械或光学接触。
正被广泛用于采购分配、商业贸易、生产制造、物流、防伪以及军事用途上。
RFID主要位于典型物联网架构中的感知层,是整个物联网的最底层,也是与“万物”链接的媒介之一。
正因其具有非接触式特性,其运用很广泛,且随着不同应用场景的出现,RFID协议也随着增多,很难统一。
如在消费电子行业中比较典型的应用NFC(RFID的子集),以统一的标准,高安全,低功耗,近距离等特性,在支付领域应用广泛。

应用场景

识别原理
读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单间导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。

RFID组成
应答器(PICC) Proximity Intergrated Circuit Card
由天线,耦合元件及芯片组成,一般来说都是用标签作为应答器,一般分为被动式、主动式、半主动式。每个标签具有唯一的电子编码,附着在物体上标识目标对象。
阅读器(PCD) Proximity Couple Device
由天、耦合元件、芯片组成,读写标签信息的设备,可设计为手持式rfid读与器或固定式读写器。
应用软件系统
是应用层软件,主要是把收集的数据进一步处理,并为人们所使用。
nfc可以既是应答器,也可以是阅读器存在。近场通信(Near Field Communication,简称NFC)。
RFID协议
ISO/IEC 14443:国际标准ISO 14443定义了两种信号接口,分别是TypeA和TypeB且互不兼容。
TypeA类卡:MIFARE Std 1k(MF1 IC S50):国内常称MF1 S50。MIFARE Std 4k (MF1 IC S70):国内常称为MF1 S70。
TypeB类卡:我国第二代居民身份证:上海华虹、北京同方THR9904、天津大塘和北京华大生产。AT88RF020:美国爱特梅尔(ATMIL)生产,典型应用如广州地铁卡。
卡的状态
POWER OFF:缺少载波能量。
IDEL:等待读写器发来的请求。
READY:收到读写器发来的请求。
ACTIVE:收到读写器发来的选择。
HALT:读写器发来的停止命令。
卡片请求命令
REQA:请求未被HALT的TypeA卡——0x26
WAKE-UP:请求所有的TypeA卡——0x52

复位:阅读器通过特定协议验证卡片类型,并切换状态为IDLE。
寻卡:获取复位时确定的卡的类型数据,并切换状态为READY。
防冲突:多卡操作,获取完整卡号UID。
选择:根据完整的UID,选择相应的卡片,并切换状态为ACTIVE。
HALT:停止该卡,直到WAKE-UP请求。
验证密码:指定加密类型,指定密码块号(0~63),指定密码,指定卡号。
读块内容:验证密码通过后,可读取指定块(0~63)数据。
写块内容:验证密码通过后,可以写入指定块(0~63)数据。
充值扣款:充值扣款前该块数据必须要先初始化成指定格式。每一块数据长度是16字节,但金额内容只有4字节,所以剩下12字节用于保存金额和块信息的校验值。
充值扣款过程:验证密码通过后,可对指定块(0~63)数据进行充值扣款操作。
CRC(初始化不同卡片时需要设置):检验值为6363(A类卡); 校验值为FFFF (B类卡)。
RFID应答器——卡片PICC
ID卡(Identification Card,身份识别卡)
一种不可写入的感应卡,含固定的编号。
主要有台湾SYRIS的EM格式、美国HIDMOTOROLA等各类ID卡。
ID卡与磁卡一样,都仅仅使用了“卡的号码”而己,卡内除了卡号外,无任何保密功能,其“卡号”是公开、裸露甚至可以修改的。
ID卡就是“感应式磁卡”。
IC卡(Integrated Circuit Card,集成电路卡)
是将一个微电子芯片嵌入符合ISO 7816标准的卡基中,做成卡片的形式。
IC卡与读写器之间的通讯方式可以是接触式,也可以是非接触式。
由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用。
常见的有二代身份证,银行的电子钱包,电信的手机SIM卡,公共交通的公交卡、地铁卡,用于收取停车费的停车卡等。
S50非接触式IC卡性能简介(M1)
容量为8K位EEPROM。
分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位。
每个扇区有独立的一组密码及访问控制。
每张卡有唯一序列号,为32位。
具有防冲突机制,支持多卡操作。
无电源,自带天线,内含加密控制逻辑和通讯逻辑电路。
数据保存期为10年,可改写10万次,读无限次。
工作温度:-20℃~50℃(湿度为90%)。
工作频率:13.56MHZ。
通信速率:106 KBPS。
读写距离:10cm以内(与读写器有关)。
RFID阅读器——FM17550(MFRC522)PCB
通信频率
支持协议
读写距离
通信速率
寄存器配置:天线发送、接收; 系统复位; 调制方式;缓存区操作。
常见的有F17550、FM17522,MFRC523、MFRC522
软件通信接口:SPI,I2C,UART
数据流:上位机<–>读写器<–>射频卡
软件架构:软件通信接口初始化; 读写器初始化;根据相应射频协议组包,通过读写器与射频卡通信。
对于FM17550串口配置
FM17550等读写器默认复位后串口配置为:波特率刀9600; 无奇偶校验位; 无硬/软流;控数据位为8bit;1位停止位。
在linux下配置串口应按上述配置,尤其注意我们需要将串口配置成原始输出模式,以及关闭软流控。

硬件复位:外部IO,保持低电平一定时间,一般为50ms。
确认复位成功:读地址为0x37h的版本寄存器的值。mfrc522–0x92; fm17550–0x88;
接下来步骤:寻卡、防冲突、选卡、操作卡。
软件复位:向CommIEnReg寄存器写复位命令。
发送部分:TxModeReg寄存器,根据A类、B类设置相应bit。
接收部分:RxModeReg寄存器,根据A类、B类设置相应bit。
天线:TxControlReg寄存器。
特征参数:Status2Reg寄存器,关闭加密传输。ModeReg寄存器,根据A类、B类设置相应的CRC校验值; TreloadRegL、TReloadRegH、TModeReg、TPrescalerReg寄存器用于设置定时器;TxASKReg寄存器设置调制方式,A类100%ASK,B类无需100%ASK。
reg_set()给FM17550寄存器写入值
reg_get ()从FM17550寄存器中读取值
reg_set_bit()给FM17550寄存器指定位置1,遵循读改写原则.
reg_clr_bit()给FM17550寄存器指定位置0,遵循读改写原则
只要是PCD_开头的命令,都是操作PCD (FM17550)的命令
只要是PICC_开头的命令,都是操作PICC(卡片)的命令。
卡的型号:0x0400,Mifare_one(S50); 0x0800, Mifare_pro(X); 0x4400,0x0200,0x4403;
S50卡共64块,16个扇区,每个扇区的前3块是用户数据,第4块用于保存密码和权限。所有出厂密码都是六个0xff。A密和B密都一样。
每个扇区的块通过3个bit进行管理,Cyx:y代表第几个bit位,x代表的是第几块,共4块。每一块通过3bit进行管理,4块需要12bit数据,12位再需要全部取反备份存储,就需要24位,也就是3个字节。
充值扣款数据校验格式:前4个字节是你保存的实际数据,接下来4个字节是实际数据的按位取反,再接下来4字节又是实际数据,最后4个字节,是当前块原值和取反值,注意的是,这里的块block,不是0-63,而是0-3针对当前扇区的
PcdIncrement()和 PcdDecrement(),这两个函数主要是做数据格式的合法性检测,如果不符合,是不会对块进行操作的。如果符合需要下达PICC_TRANS传输指令才能将缓冲区的充值扣款金额写入到块中。