非接触式 IC 卡模块由非接触式IC 卡读卡器芯片FM1702及其外围电路组成。
一、 FM1702 芯片介绍
FM17XX 系列是复旦微电子股份有限公司设计的,基于ISO14443 标准的系列非接触卡读卡机专用芯片,采用0.6 微米CMOS EEPROM 工艺,可分别支持13.56MHz 频率下的typeA、typeB、15693 三种非接触通信协议,支持MIFARE和SH 标准的加密算法,可兼容Philips 的RC500、RC530、RC531、及RC632 等读卡机芯片。芯片内部高度集成了模拟调制解调电路,只需最少量的外围电路就可以工作。支持6 种微处理器接口,数字电路具有TTL、CMOS 两种电压工作模式,适用于各类计费系统的读卡器的应用。
1、产品特点
●高集成度的模拟电路只需最少量的外围线路
●操作距离可达10cm
●支持ISO14443 typeA typeB 15693 协议
●包含512byte 的EEPROM
●支持MIFARE 和SH 标准的加密算法
●支持六种接口模式
●包含64byte 的FIFO
●数字电路具有TTL/CMOS 两种电压工作模式
●软件控制的power down 模式
●一个可编程计时器
●一个中断处理器
●一个串行输出输入口
●启动配置可编程
●数字模拟和发射模块都有独立的电源供电
●采用SOP32 封装
●FM17XXL 的版本表示该芯片的三路电源都可适用于低电压
2、各型号区别:
二、 FM1702 芯片功能框图及引脚图
三、对非接触式 IC 卡操作流程图如下:
上电后首先用程序对读卡器芯片(以下简称 PCD)进行寄存器初始化,完成后进入寻卡状态,通过天线发出寻卡信号。当有IC 卡(以下简称PICC,实验程序所使用的卡为MF1 S50 卡)进入天线有效操作区,并且得到能量后,返回给PCD 卡类型值。下一步PCD 对卡进行冲突操作,PICC 得到防冲突操作信号后,返回给PCD 卡序列号。PCD接收到序列号后,程序对序列号有效性判定。当确认PICC 序列号有效后,PCD 发送选卡命令,选卡命中包含送出所选卡序列号,这样保证进行下一步操作的卡唯一。PCD 装载密匙,所装载密匙与所要操作的PICC 扇区密匙一致,同一个扇有两组密匙,密匙A、B。如进行A 密匙认证则,装载的密匙为A 密匙,进行B 密匙认证,则需装载B 密匙。装载密匙成功后,开始三遍认证操作。
如下图所示为三遍认证的令牌原理框图:
认证过程是这样进行的:
(A)环:由 Mifare 1 卡片向读写器 发送一个随机数据 RB;
(B)环:由读写器收到RB 后向Mifare 1 卡片发送一个令牌数据TOKEN AB,其中包含了读写器发出的一个随机数据 RA;
(C)环:Mifare 1 卡片收到 TOKEN AB 后,对TOKEN AB 的加密的部分进行解密,并校验第一次由(A)环中Mifare 1 卡片发出去的随机数RB 是否与(B)环中接收到的TOKEN AB 中的RB 相一致;
(D)环 : 如果(C)环校验是正确的,则Mifare 1 卡片向读写器发送令牌TOKENBA 给读写器;
(E)环:读写器收到令牌TOKEN BA 后,读写器将对令牌TOKEN BA 中的RB(随机数)进行解密;并校验第一次由(B)环中读写器发出去的随机数RA 是否与(D)环中接收到的 TOKEN BA 中的RA 相一致;
如果上述的每一个环都为“真”,都能正确通过验证,则整个的认证过程将成功。读写器将能对刚刚认证通过的卡片上的这个扇区可以进入下一步的操作(READ/WRITE 等操作)。
卡片中的其他扇区由于有其各自的密码,因此不能对其进行进一步的操作。如想对其他扇区进行操作,必须完成上述的认证过程。认证过程中的任何一环出现差错,整个认证将告失败。必须从新开始。如果事先不知卡片上的密码,则由于密码的变化可以极其复杂,因此靠猜测密码而想打开卡片上的一个扇区的可能性几乎为零。
这里提醒一下程序员和卡片的使用者,必须牢记卡片中的 16 个扇区的每一个密码,否则,遗忘某一扇区的密码,将使该扇区中的数据不能读写。没有任何办法可以挽救这种低级错误。但是,卡片上的其他扇区可以照样使用。
上述的叙述已经可以充分地说明了 Mifare 1 卡片的高度安全性,保密性,及卡片的应用场合多样性,一卡多用(一卡通)。
详细操作流程参阅:FM1702 手册,MF1 S50 手册,14443 协议。
四、电路原理图
五、模块的基本测试方法
用跳线帽短接模块的 CS0,模式选择Mode_select 选择独立方式,即把ALE、A0、A1、A2 跳短选择全部接Separate 端。模块的REST 接实验箱的P+。
把模块插入单片机实验箱扩展插槽,上电,打开文件:Hardware.asm。编译、调试,按程序中注释弃置断点,运行程序,依次观察前三个断点处内容。
第一个断点处,30H-5FH 单元内容全部为:0FFH。
第二个断点处,A 内容为4,正常。
第三个断点处,39H-3CH 单元内容有变化,为读卡芯片的序列号。每个读卡芯片的序列号不同。
第四个断点处,L1,L2 右端测得有峰峰值为7V 左右的正弦波,并且L1 与L2 波形反向;C3,C5 右端有峰峰值为3.5V 左右的正弦波,波形反向;C12,C13 右端有峰峰值为7V 左右正弦波,波形反向。如把示波器探头的地端与探测端相连,圈成大小与天线线圈大相等的圈,圈放于天线上方紧贴电路板,则能感应到峰峰值为2.5V 左右的正弦波。前三个断点处都正确,则说明寄存器访问正常。第四个断点处,所测数据为正常模块数据。
去掉断点1,2,3。保留断点4,设置断点5,6。调试用M1卡(MF1 S50卡)。从断点4运行程序,把卡放于读卡模块天线线圈上方4厘米左右,反复执行程序观察断点5处A或R6的值是否正常,保持卡在天线上方的位置不改变。如正常则继续往下执行程序,到断点6处,观察30H,31H内容是否为:04H,00H。则寻卡有效。模块可以对卡进行正常操作。可以使程序反复运行,观察对卡操作的有效距离变化。