无线射频辨识 (Radio Frequency IDentification,缩写:RFID) 是一种无线通讯技术,可以通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或者光学接触。
RFID 使用的范围很广,票卡、门禁卡、会员卡,eTAG、宠物身上的标签...等,使用的射频频率也依需求的不同有多种选择,一般常用的卡大都是选择使用 13.56MHz 的 MIFARE 卡,而读写卡片的控制芯片大都是使用 NXP 的 RC522,因此市场上有很多厂家生产了这类的感应模块,而这些感应模块大致分成了 2 类,一类是板子上没有 MCU,主板需透过 SPI/I2C/UART 的连接方式去控制模块上的 RC522 读写感应卡,使用这种模块的优点是除非芯片停产否则不会有买不到的风险,而缺点就是主程序必须要自己去存取 RC522 的内部寄存器,这多少增加了程序的复杂性。
另一类是板子上有 MCU,厂家会规划出特定的通讯协议,使用者只需要透过这些通讯命令就可以读写感应卡,本次调试就是使用这种模块。使用这种模块的优点是模块上的 MCU 已经处理了 RC522 的控制,因此主程序只要直接发送命令就可以了,甚至于有些模块上已经具备了 RS485/RS232 的转换芯片,可以直接应用在长距离的需求。不过缺点就是这类模块的通讯协议并没有标准,每家厂家都不一样,因此也就受制于该生产厂家了。
我们选择所使用的模块可设定成"主动模式"或是"被动模式",所谓主动模式就是当感应到 RFID 卡时模块会主动将卡内的 ID 或是内部扇区数据经由串口主动送出,而被动模式就是主程序要自己发送命令给模块读取数据。
本次调试中我们将模块设定在主动模式,当有 RFID 卡感应时将卡上的 32 位 ID 显示在 N5110 液晶屏上面。 while 回圈先呼叫读取 RFID 卡的函数 ReadCardID(),然后将读取到的 ID 存入记录的 5 组数组之中,最后呼叫显示函数 Ds_IDBUF() 显示数组内容。
|