基于MF-RC500的通用射频卡读写模块的设计
时间:12-21
来源:互联网
点击:
3系统软件设计
系统软件主要分为2个模块:卡操作模块与接口通信模块。卡操作模块主要包括卡识别、卡选择、读/写卡、修改密码、增/减值、卡激活和卡休眠等;接口通信模块主要完成接收外部指令并输出指令结果,在系统的通信软件设计中采用了两次握手的通信协议,以保证通信的可靠和有效。
3.1卡操作模块软件设计
图3为基本卡操作流程图
复位应答(Answertorequest):M1射频卡的通讯协议和通讯波特率预先定义好,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。防冲突机制(AnticollisionLoop):当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式,等待下一次选卡,该过程会返回被选卡的序列号。选择卡片(SelectTag):选择被选中的卡的序列号,并同时返回卡的容量代码。
3次互相确认(3PassAuthentication):选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在3次相互认证之后就可以通过加密流进行通讯。
为实现基于RC500芯片的IC卡操作的基本操作,需要对RC500芯片内部64个字节的寄存器进行复杂的配置,并对90个寄存器标志位进行分析和判断。为方便用户对IC卡产品的开发应用,该读/写模块设计对用户屏蔽了复杂的RC500的编程和配置,用户的应用接口是3类简单的高级读/写命令,用户通过这些简单的命令操作该读写模块,容易实现对卡的操作。
3类读写操作命令包括:模块操作命令、基础命令集、高级命令。模块操作命令集提供对模块本身的操作,如模块初始化、读取模块设备号、读取模块控制软件版本号、控制模块指示灯及蜂鸣器动作。基础命令集提供了对Mifare卡的最基本底层读写和控制操作,如卡呼叫、读取卡片序列号、卡激活、卡认证、读/写卡数据块、加电子钱包、减电子钱包和卡睡眠。
高级命令是基础命令的集成,它是为方便用户系统使用特别提供的。用高级命令可极大地提高用户系统的开发速度。该类命令包括读卡类型、读卡序列号、密码认证方式、加载密码A、加载密码B、修改卡片密码、读/写数据块、读/写电子钱包内容和加/减电子钱包内容。以读卡为例说明所提供指令的基本操作格式,该命令用于读取某序列号的卡片中的1个数据块中的数据,指令格式如下:
3.2 通信接口及通信协议的软件设计
目前可以实现各种嵌入应用模块的接口技术很多,如I2C总线和串口通信等。该读写模块设计除提供基本的串口通信方式外,还包括一种不占用应用系统串口资源的二线制通信方式。实际应用证明:这种自定义的二线制通信方式占用系统资源少,通信快速可靠,可应用于应用系统中串口已被占用的情况下。
3.2.1 线制通信模式
使用二线制通信,用户可以利用应用系统中MCU的任意2根I/O线与该读/写模块进行通信,将2条通信线分别定义为时钟线SCK和数据线SDA,在通信过程中,用户设备为主控方。在通信空闲时,主控方将SCK和SDA置成高电平;通信开始时,主控方将SDA置低,先发送起始位,接着发送8位数据,最后发送停止位,数据在SCK的下降沿被发送;读/写模块在通信过程中始终查询SDA的状态,若检测到低电平,则开始接收数据。主控方发送完毕后,将SCK和SDA上拉成高电平。在发送起始位时,SCK的低电平宽度为55μs,在发送其他位时,时钟低电平宽度为16μs,高电平宽度典型值为40μs,模块和应用系统通信的典型时序见图4,能数说明见表1。
图4模块通信时序图
3.2.2 两次握手通信协议
应用系统和该射频卡读/写模块的通信可采用标准RS232或自定义二线制通信模式,系统设计为该2种通信模式设计了基于两次握手的通信协议,该协议简单,可靠性高。假定A代表主控板或应用系统,B代表读/写模块,通讯字符为16进制,图5给出了设计的基于两次握手通信协议流程,其关键点描述如下:
(1)A方与B方通过握手字符进行连接,在发送命令和接收数据时设计有两次握手。
第1次的握手字符分别是23H和45H,即A方在发送命令序列前,先发送23H;B方接收到23H后对A方应答45H,A方接收到45H认为第一次握手成功,然后给B方发送命令序列;第二次的握手字符分别为67H和89H,即B方接收完A方的命令序列并进行相应的处理,将结果数据发送给A方前,B方先发送67H,A方接收到67H后给B方回应的89H,B方接收到89H认为是第2次握手成功,然后给A方发送数据序列。
(2)A方发送的命令序列的格式为
系统软件主要分为2个模块:卡操作模块与接口通信模块。卡操作模块主要包括卡识别、卡选择、读/写卡、修改密码、增/减值、卡激活和卡休眠等;接口通信模块主要完成接收外部指令并输出指令结果,在系统的通信软件设计中采用了两次握手的通信协议,以保证通信的可靠和有效。
3.1卡操作模块软件设计
图3为基本卡操作流程图
复位应答(Answertorequest):M1射频卡的通讯协议和通讯波特率预先定义好,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。防冲突机制(AnticollisionLoop):当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式,等待下一次选卡,该过程会返回被选卡的序列号。选择卡片(SelectTag):选择被选中的卡的序列号,并同时返回卡的容量代码。
3次互相确认(3PassAuthentication):选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在3次相互认证之后就可以通过加密流进行通讯。
为实现基于RC500芯片的IC卡操作的基本操作,需要对RC500芯片内部64个字节的寄存器进行复杂的配置,并对90个寄存器标志位进行分析和判断。为方便用户对IC卡产品的开发应用,该读/写模块设计对用户屏蔽了复杂的RC500的编程和配置,用户的应用接口是3类简单的高级读/写命令,用户通过这些简单的命令操作该读写模块,容易实现对卡的操作。
3类读写操作命令包括:模块操作命令、基础命令集、高级命令。模块操作命令集提供对模块本身的操作,如模块初始化、读取模块设备号、读取模块控制软件版本号、控制模块指示灯及蜂鸣器动作。基础命令集提供了对Mifare卡的最基本底层读写和控制操作,如卡呼叫、读取卡片序列号、卡激活、卡认证、读/写卡数据块、加电子钱包、减电子钱包和卡睡眠。
高级命令是基础命令的集成,它是为方便用户系统使用特别提供的。用高级命令可极大地提高用户系统的开发速度。该类命令包括读卡类型、读卡序列号、密码认证方式、加载密码A、加载密码B、修改卡片密码、读/写数据块、读/写电子钱包内容和加/减电子钱包内容。以读卡为例说明所提供指令的基本操作格式,该命令用于读取某序列号的卡片中的1个数据块中的数据,指令格式如下:
3.2 通信接口及通信协议的软件设计
目前可以实现各种嵌入应用模块的接口技术很多,如I2C总线和串口通信等。该读写模块设计除提供基本的串口通信方式外,还包括一种不占用应用系统串口资源的二线制通信方式。实际应用证明:这种自定义的二线制通信方式占用系统资源少,通信快速可靠,可应用于应用系统中串口已被占用的情况下。
3.2.1 线制通信模式
使用二线制通信,用户可以利用应用系统中MCU的任意2根I/O线与该读/写模块进行通信,将2条通信线分别定义为时钟线SCK和数据线SDA,在通信过程中,用户设备为主控方。在通信空闲时,主控方将SCK和SDA置成高电平;通信开始时,主控方将SDA置低,先发送起始位,接着发送8位数据,最后发送停止位,数据在SCK的下降沿被发送;读/写模块在通信过程中始终查询SDA的状态,若检测到低电平,则开始接收数据。主控方发送完毕后,将SCK和SDA上拉成高电平。在发送起始位时,SCK的低电平宽度为55μs,在发送其他位时,时钟低电平宽度为16μs,高电平宽度典型值为40μs,模块和应用系统通信的典型时序见图4,能数说明见表1。
图4模块通信时序图
3.2.2 两次握手通信协议
应用系统和该射频卡读/写模块的通信可采用标准RS232或自定义二线制通信模式,系统设计为该2种通信模式设计了基于两次握手的通信协议,该协议简单,可靠性高。假定A代表主控板或应用系统,B代表读/写模块,通讯字符为16进制,图5给出了设计的基于两次握手通信协议流程,其关键点描述如下:
(1)A方与B方通过握手字符进行连接,在发送命令和接收数据时设计有两次握手。
第1次的握手字符分别是23H和45H,即A方在发送命令序列前,先发送23H;B方接收到23H后对A方应答45H,A方接收到45H认为第一次握手成功,然后给B方发送命令序列;第二次的握手字符分别为67H和89H,即B方接收完A方的命令序列并进行相应的处理,将结果数据发送给A方前,B方先发送67H,A方接收到67H后给B方回应的89H,B方接收到89H认为是第2次握手成功,然后给A方发送数据序列。
(2)A方发送的命令序列的格式为
射频 电路 电容 电子 电压 MCU LED 单片机 CMOS 电感 电阻 PCB 总线 相关文章:
- WCDMA与TD-SCDMA终端射频测试差异性分析(01-04)
- 可以应对移动电话的设计挑战的GPS导航系统(01-11)
- 无线射频技术应用大有作为(02-19)
- 直放站的指标调试及整体测试(03-02)
- 无线电发射设备杂散发射的测试方法探讨(03-12)
- 基于CC1020的无线通信模块设计(03-24)