基于ARM的双频RFID读写系统设计
3 系统的软件设计
3.1 RFID 模块操作
CR001 模块与S3C44B0X 的串口(UART0)相连,在接收数据前首先要对UART0 进行初始化。根据CR001 的使用规范,设置波特率为9600Baud,数据位为8 位,1 位停止位,无校验位。为使ARM 对低频RFID 卡及时作出响应,软件采用中断方式接收数据,即当S3C44B0X 的UART0 接收到数据时,产生中断,在中断服务程序中接收CR001 模块的数据。
根据 CR001 射频读写模块的使用规范,CR001 模块输出的数据包有5 个字段,即起始符(STX,02H)、数据(10 个ASCII 字符)、校验和(2 个ASCII 字符)、LD 和LF(0DH和0AH)、结束符(ETX,03H)。因此在软件设计中,当收到UART0 的数据时,首先要判断一个数据包的起始符和结束符,以确定一个数据帧的起止位置,然后再检验数据的校验和是否正确。只有在接收的数据无误时,再将其中的数据取出、存储,并在LCD 上显示。中断服务软件的流程如图2 所示。
图 2 CR001 模块的中断服务程序流程
CR013 射频读写模块是采用Philips 公司的Mifare 技术设计的微型嵌入式、非接触式IC卡读写模块,内嵌ISO14443 Type A 协议解释器,并可直接驱动射频天线。这是一种以被动方式工作的卡,刚进入天线有效感应区的卡得电进入空闲(IDLE)状态,它只吸收感应区内的磁场能量,不会首先发出信号。当读卡设备发出请求信号,符合条件的卡才会响应。因此处理器与模块之间以一问一答式的半双工方式进行通信。
对 CR013 模块的读写过程相对较复杂,要执行一系列的操作指令,包括询卡、请求、防冲突、选卡、装载密钥、验证密码、读块、写块,这一系列的操作必须按固定的顺序。寻卡时,处理器需要执行请求、防冲突、选卡操作,与CR013 模块建立起通信关系,在通过装载密钥、验证密码操作后,才可进行读卡或写卡操作。
1、防冲突
防冲突就是从多张卡中选出一张卡来操作,又叫防碰撞、防重叠。如果知道卡的序列号,则可跳过此步,直接执行下一步选卡命令。若不知道卡的序列号,则必须调用防碰撞函数,得到感应区内卡的序列号。若同时有多张卡在感应区内,防碰撞函数能检测到,并且从中选出一张卡的序列号来。
评论