1 Mifareone射频卡的结构和工作原理
1.1 工作原理
射频卡的电气部分由天线、1个高速(106KB波特率)的RF接口、1个控制单元和1个8K位EEPROM组成。其工作原理如下:读写器向射频卡发一组固定频率的电磁波,卡片内有1个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有1个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可作为电源为其他电路提供工作电压,将卡内数据发射出去或接收读写器的数据。
1.2 结构和组成
每张卡有唯一的32位序列号,其工作频率为13.56MHz,存储量为1KB,分为16个扇区,每扇区一组密码,各扇区的存储区域相互独立,每区可作为不同用途(第0区一般不用),实现一卡多用。Mifare卡可擦写10万次以上,其密码验证机制严密,可保证存储存信息的安全可靠;同时该卡具有防冲突机制,可支持多卡同时操作。
Mifareone卡有16个扇区,每个扇区又分为4块(块0、块1、块2和块3),每块16个字节,以块为存取单位。除第0扇区的块0(即绝对地址0块)已经固化,用于存放厂商代码,不可更改之外,其余每个扇区的块0、块1、块2为数据块,可用于存贮数据,块3为控制块,包括密码A(6字节)、存取控制(4字节)和密码B(6字节),其结构如图1所示。
图1Mifareone卡内部结构
Mifareone卡每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制,存取控制决定各块的读写权限与密码验证。16扇区中的每块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。
2 系统硬件设计
硬件主要包括MCU电路模块、基于RC500的基站模块、天线模块电路、通信接口模块、LED状态显示和蜂鸣器报警电路,系统原理图见图2。
2.1 MCU部分
单片机选用低功耗、高性能和支持ISP(in-systemprogrammable)功能的CMOS 8位单片机 AT89S52,该单片机与MCS-51系列兼容,同时片内带有防死锁的WATCHDOG,确保系统稳定运行。MCU单元的复位电路选用芯片X5045,带SPI接口的内部FLASH,能存储该读写模块的配置信息与模块ID.
图2MF-RC500读写模块原理图
2.2 基站部分
系统的基站单元采用PHILIPS公司的MF-RC500芯片。MF-RC500是与射频IC卡实现无线通信的核心部件,也是读写器读写Mifare卡的关键接口芯片,该芯片为目前用于13.56MHz频段非接触通信的主流读卡IC.MF-RC500芯片采用先进的调制和解调技术,支持13.56MHz频段所有被动非接触式通信方式和协议,并支持ISO14443A中所有的层。RC500芯片内的发送器部分在不增加外接有源电路时可直接驱动的天线操作距离为100mm,接收器部分则提供一个稳健可靠的解调/解码电路,用于ISO14443A兼容的应答信号。RC500芯片的基带部分包括ISO14443A帧处理、CRC校验和快速CRYPTO1加密算法,同时该芯片提供的并行接口可直接与8位微处理器连接,给读卡器/终端的设计提供了极大的灵活性。
2.3 天线部分
天线设计中,最重要的是计算出天线线圈的电感值,从而确定天线旁路电容和电阻值。对天线线圈电感量一般采用经验公式进行估算,假定天线设计成常用的环形或矩形,则
式中:I1为导体环一圈的长度;D1为导线的直径或者PCB导体的宽度;K为天线形状因素(对环形天线K=1.07,对矩形天线K=1.47);N1为圈数。
2.4 通信部分
为了使所设计的射频卡读写模块能方便地嵌入到各种应用系统中(如门禁、公交收费、考勤),该读写模块可通过3种方式通信:RS232、TTL串口和自定义两线制通信模式。通信方式的选择,可在模块中通过跳线来实现。如图2所示,当连接跳线1时,可选择的通信方式为TTL电平串口和二线制通信方式。当采用TTL电平串口方式时,读写模块的串口与外面应用系统串口直接相连;而当采用二线制通信方式时,读写模块内单片机的串口当作普通I/O口使用,方便与应用系统I/O口连接,以实现二线制通信方式,该通信模式主要用于外接应用系统串口被占用的情况。在连接跳线2时,所选择的是RS232串口通信方式,此时,读写模块可直接与PC通信,电路中MAX232芯片的作用是实现RS232电平到TTL电平之间的转换。
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方发送的命令序列的格式为
其中:命令块长度等于命令块中字节的个数;校验码
A是命令码、命令块长度和命令块中的所有字节进行
异或而生成的校验码。
(3)B方发送的数据序列的格式为
其中:数据块长等于数据块中字节的个数,校验码B是返回码、数据块长度和数据块中的所有字节进行异或而生成的校验码。
图5基于二次握手的通信协议流程
4 结束语
介绍了一种基于PHILIPS公司RC500芯片的通用射频卡读/写模块,该模块的主要特点如下:
(1)可以通过3种通信方式,包括二线通信模式和应用系统接口,方便嵌入到应用系统中;
(2)该模块为用户提供了简单高级读/写指令,极大地简化了应用系统对射频卡的操作;
(3)应用系统和读/写模块的通信是基于二次握手的通信协议,保证了通信可靠性。通用读/写模块设计完成后,已成功用于多个应用系统中,包括某移动基站门禁监控系统中,实际应用表明:该读写模块具有响应速度快、使用简便、读卡距离远和通信稳定可靠的显著特点。
1 Mifareone射频卡的结构和工作原理
1.1 工作原理
射频卡的电气部分由天线、1个高速(106KB波特率)的RF接口、1个控制单元和1个8K位EEPROM组成。其工作原理如下:读写器向射频卡发一组固定频率的电磁波,卡片内有1个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有1个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可作为电源为其他电路提供工作电压,将卡内数据发射出去或接收读写器的数据。
1.2 结构和组成
每张卡有唯一的32位序列号,其工作频率为13.56MHz,存储量为1KB,分为16个扇区,每扇区一组密码,各扇区的存储区域相互独立,每区可作为不同用途(第0区一般不用),实现一卡多用。Mifare卡可擦写10万次以上,其密码验证机制严密,可保证存储存信息的安全可靠;同时该卡具有防冲突机制,可支持多卡同时操作。
Mifareone卡有16个扇区,每个扇区又分为4块(块0、块1、块2和块3),每块16个字节,以块为存取单位。除第0扇区的块0(即绝对地址0块)已经固化,用于存放厂商代码,不可更改之外,其余每个扇区的块0、块1、块2为数据块,可用于存贮数据,块3为控制块,包括密码A(6字节)、存取控制(4字节)和密码B(6字节),其结构如图1所示。
图1Mifareone卡内部结构
Mifareone卡每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制,存取控制决定各块的读写权限与密码验证。16扇区中的每块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。
2 系统硬件设计
硬件主要包括MCU电路模块、基于RC500的基站模块、天线模块电路、通信接口模块、LED状态显示和蜂鸣器报警电路,系统原理图见图2。
2.1 MCU部分
单片机选用低功耗、高性能和支持ISP(in-systemprogrammable)功能的CMOS 8位单片机 AT89S52,该单片机与MCS-51系列兼容,同时片内带有防死锁的WATCHDOG,确保系统稳定运行。MCU单元的复位电路选用芯片X5045,带SPI接口的内部FLASH,能存储该读写模块的配置信息与模块ID.
图2MF-RC500读写模块原理图
2.2 基站部分
系统的基站单元采用PHILIPS公司的MF-RC500芯片。MF-RC500是与射频IC卡实现无线通信的核心部件,也是读写器读写Mifare卡的关键接口芯片,该芯片为目前用于13.56MHz频段非接触通信的主流读卡IC.MF-RC500芯片采用先进的调制和解调技术,支持13.56MHz频段所有被动非接触式通信方式和协议,并支持ISO14443A中所有的层。RC500芯片内的发送器部分在不增加外接有源电路时可直接驱动的天线操作距离为100mm,接收器部分则提供一个稳健可靠的解调/解码电路,用于ISO14443A兼容的应答信号。RC500芯片的基带部分包括ISO14443A帧处理、CRC校验和快速CRYPTO1加密算法,同时该芯片提供的并行接口可直接与8位微处理器连接,给读卡器/终端的设计提供了极大的灵活性。
2.3 天线部分
天线设计中,最重要的是计算出天线线圈的电感值,从而确定天线旁路电容和电阻值。对天线线圈电感量一般采用经验公式进行估算,假定天线设计成常用的环形或矩形,则
式中:I1为导体环一圈的长度;D1为导线的直径或者PCB导体的宽度;K为天线形状因素(对环形天线K=1.07,对矩形天线K=1.47);N1为圈数。
2.4 通信部分
为了使所设计的射频卡读写模块能方便地嵌入到各种应用系统中(如门禁、公交收费、考勤),该读写模块可通过3种方式通信:RS232、TTL串口和自定义两线制通信模式。通信方式的选择,可在模块中通过跳线来实现。如图2所示,当连接跳线1时,可选择的通信方式为TTL电平串口和二线制通信方式。当采用TTL电平串口方式时,读写模块的串口与外面应用系统串口直接相连;而当采用二线制通信方式时,读写模块内单片机的串口当作普通I/O口使用,方便与应用系统I/O口连接,以实现二线制通信方式,该通信模式主要用于外接应用系统串口被占用的情况。在连接跳线2时,所选择的是RS232串口通信方式,此时,读写模块可直接与PC通信,电路中MAX232芯片的作用是实现RS232电平到TTL电平之间的转换。
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方发送的命令序列的格式为
其中:命令块长度等于命令块中字节的个数;校验码
A是命令码、命令块长度和命令块中的所有字节进行
异或而生成的校验码。
(3)B方发送的数据序列的格式为
其中:数据块长等于数据块中字节的个数,校验码B是返回码、数据块长度和数据块中的所有字节进行异或而生成的校验码。
图5基于二次握手的通信协议流程
4 结束语
介绍了一种基于PHILIPS公司RC500芯片的通用射频卡读/写模块,该模块的主要特点如下:
(1)可以通过3种通信方式,包括二线通信模式和应用系统接口,方便嵌入到应用系统中;
(2)该模块为用户提供了简单高级读/写指令,极大地简化了应用系统对射频卡的操作;
(3)应用系统和读/写模块的通信是基于二次握手的通信协议,保证了通信可靠性。通用读/写模块设计完成后,已成功用于多个应用系统中,包括某移动基站门禁监控系统中,实际应用表明:该读写模块具有响应速度快、使用简便、读卡距离远和通信稳定可靠的显著特点。
举报