- 1 -
基于飞思卡尔单片机的 IC卡读卡器的设计
李建孟,吴友宇
武汉理工大学信息工程学院,湖北武汉(430070)
摘 要:设计了一款基于飞思卡尔单片机 MC9S12D64 的 IC卡读卡器,给出了系统框图、
硬件电路图、密码校验流程图和写操作功能模块的软件流程图。MC9S12D64 是一款 16 位
单片机,内嵌一个 I2C模块。读卡器通过 RS232通信模块与主机通信。介绍了西门子接触式
逻辑加密卡 SLE4442 的三个存储器、四种操作模式和七条操作命令。SLE4442 芯片密码校
验正确前,除密码外数据均可读。密码校验正确后,可以进行写操作。选用摩擦推拔式常开
IC卡卡座。读卡器检测到有卡插入时,进行后续读写卡操作,否则,读卡器处于等待状态。
关键词:SLE4442卡;单片机;读卡器
1 引言
IC卡是集成电路卡(Integrated Circuit Card )的英文简称,是指在由聚氯乙烯(PVC)或聚氯
乙烯酸脂(PVCA)材料制成的塑料卡内嵌入处理器和存储器等 IC 芯片的数据卡。IC 卡以其
超小的体积,先进的集成电路芯片技术,以及特殊的保密措施等特点受到普遍欢迎。
根据卡中所镶嵌的集成电路类型的不同划分为存储卡、逻辑加密卡、CPU卡和射频卡;
根据卡与外界数据交换的界面不同划分为接触式 IC卡、非接触式 IC卡(RF卡)和双界面
卡[1]。接触式 IC卡是通过触点的连接进行数据传递的。
2 系统组成
本文设计的 IC卡读卡器是汽车行驶记录仪的一个子模块,汽车行驶记录仪采用 IC卡的
方式识别不同的驾驶员。为了保证驾驶员的信息不被随意更改,选用西门子公司接触式逻辑
加密卡 SLE4442,其是具备 I2C总线接口的 256字节的 E2PROM,在 SLE4442芯片中存储
驾驶员代码和驾驶证号码。本文介绍的 IC卡读卡器主要由主控芯片MC9S12D64[2],SLE4442
卡、RS232通信模块、主机和电源电路等部分组成。I2C 接口与 SLE442 卡通信,RS232 通
信模块负责与主机通信,电源电路负责给系统供电。系统的结构框图如图 1 所示。
图 1 系统结构框图
3 硬件设计
主控芯片
系统选用 Freescale 公司 S12 系列单片机中的 MC9S12D64作为主控芯片。该芯片是
一款性能优良的单片机, 包含一个16 位中央处理单元、64 KB Flash、4 KB RAM、1 KB
E2PROM、一个I2C接口、一个同步串行接口和两个异步串行通信接口等丰富资源, 能够满足
- 2 -
系统设计的需求。
SLE4442卡简介
SLE4442支持 I2C总线,有四种操作模式和七条操作命令。四种操作模式是复位响应、
命令模式、输出数据模式和处理数据模式。七条操作命令是读/写主存储单元、读/写保护单
元、读密码错误计数器、写密码和校验密码。SLE4442芯片每条命令包含三个字节,操作命
令和数据格式的排列顺序依次是控制字节、地址字节和数据字节,对于每个字节来说高位在
左,低位在右,数据读出从最低位(LSB)开始,写入时首先传送的也是字节的最低位。
SLE4442 主要包括三个存储器[3]:
(1) 256字节 E2PROM 型主存储器。
地址 0~31 为保护数据区,该区数据读出不受限制,写入受保护存储内部数据状态的限
制。每一字节可单独进行写保护,进行写保护后,内容不可再更改(即固化数据)。当保护
存储器中第 N 位(N=0~31)为 1 时,对应主存储器中第 N 个字节允许进行擦除和写入操
作。字节地址 0~7 出厂前 SIEMENS 公司已固化,不可更改,其内容分别为 A2H、13H、
10H、91H、46H、0BH、81H、15H。字节地址 8~20为用户区,21~26为制卡公司代码,SIEMENS
公司可为大用户在此专设一个全球唯一代码,以便用户统一发行使用(所有的卡出厂后不可
再修改)。27~31 为用户区。地址 32~255 后 244 字节为主存储区,数据读出不受限制,
擦除和写入受加密存储器数据校验结果的影响。
(2) 32 位 PROM 型保护存储器。
一次性编程,保护主存储器保护数据区。保护存储器受加密存储器数据校验结果的影响。
(3) 4字节 E2PROM 型加密存储器。
第 0 字节为密码输入错误计数器(EC),低三位有效,该字节可读。EC芯片初始化时设
置成“111”,密码校验出错 1次,便减掉一个 1。若计数器值为 0,则卡自动锁死,数据只可
读出,不可再进行密码校验,因而无法再进行更改。当计数器不为零时密码校验正确,在下
次上电时,密码计数器恢复初始值 3。EC 的 1,2,3 字节为参照字存储区。该 3 字节称
为可编程加密代码(PSC)。其读出,写入和擦除均受自身“比较”操作结果的控制。校验通过
后,至卡下电一直有效。校验通过后密码本身可更改。
IC卡读卡器电路图
MC9S12D64单片机内嵌一个 I2C模块,硬件实现较为简单,只需把SLE4442的两线(SCL
和 SDA)和MC9S12D64对应的引脚相连即可,由于 SCL和 SDA是开漏输出,所以要加上
拉电阻[4]。RST引脚与单片机 IO脚相连。接触推拔式 IC卡卡座有常开、常闭两种类型,本
文采用常开卡座。IC 卡插入方向为 IC 卡触点面向上,并且触点端朝前。U5D 的 10 脚为
常开卡座的辅助触点,PW—IC 脚与单片机 IO 引脚相连,有 IC 卡插入时,辅助触点与
CARD—STA接通,Q2导通,PW—IC为高电平,D15点亮;反之,无 IC卡插入。
VCC
SLE_IOSLE_CLK
VCC1
NC2
SCL3
NC4 NC 8
SDA 7
NC 6
GND 5
SW19 SW2 10
U5
SLE4442-ICCARD
R57
10K
R56
10K
R58
10K
CARD-STA
C
A
R
D
-ST
A
Q2
9012
VCC
PW-IC
R59
-IC
R16 470
SLE_RST D15 LED
- 3 -
图 2 SLE4442卡读卡器原理图
4 软件设计
复位应答
开始,地址计数器随一个时钟脉冲被设置为零。当 RST 线从高电平变为低电平时,第
一个数据位的内容被送至 I/O 上。连续输入 32 个时钟脉冲,主存储器的前四个字节地址
单元内容被读出[5],分别为 A2H、13H、10H、91H。第 33 个时钟脉冲的下降沿,I/O 线被
置成高电平关闭。复位响应以后,芯片处于等待命令模式状态。接受命令后芯片处于输出数
据模式或处理数据模式状态。SLE4442复位应答调试通过,SLE4442的时序调试基本成功,
就可以进行密码校验等操作。
密码校验流程
图 3 密码校验流程图
其中 EC(Error Counter)代表密码错误计数器,如果 EC不等于零,将低 3 位中的某
个 1 写为 0(命令:39H;地址:00H;数据:bit2~bit0 中至少有一个 1),然后校验密码
低字节(命令:33H;地址:00H;数据:密码低字节),校验密码中字节(命令:33H;
地址:01H;数据:密码中字节),校验密码高字节(命令:33H;地址:02H;数据:密
码高字节),擦除密码:(命令:39H,地址:00H,数据:FFH),读密码错误计数器(EC)
(命令:31H;地址:XXH;数据:XXH),如果 EC等于 7,则校验密码成功,否则校验
失败。
- 4 -
写操作流程
图 4 读卡器写操作流程图
写卡操作包括写主存储器、写保护存储器、写密码和校验密码四部分,其操作控制字分
别为 38H、3CH、39H和 33H。首先复位应答,而后校验密码,之后进入处理数据模式写卡,
写卡时序参考芯片手册。读卡操作包括读主存储单元、读写保护单元和读密码错误计数器三
部分,其控制字分别为 30H、34H和 31H。读卡无需密码校验,复位应答进入输出数据模式,
其它类似写卡操作。
5 结论
本文设计和实现西门子接触式逻辑加密卡SLE4442读卡器,系统检测到有卡插入时,即
PW—IC为高电平时,进行后继读写卡操作,否则系统处于等待状态。系统采用RS232串口
与主机通信,对速度要求高的场合可以外扩USB接口与主机通信。接触式卡座类型可分为摩
擦式和下压式两大类。摩擦式 IC 卡座价格低廉,但对卡的触点有磨损。下压式价格较高,
对卡基本没有磨损。如果需要频繁使用IC卡,可以选用下压式卡座或者使用非接触式IC卡。
- 5 -
参考文献
[1] 杨振野.IC卡技术及其应用[M].北京:科学出版社,。
[2] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社, 。
[3] 周立功.基于 P87LPC764单片机的 IC卡保险箱[Z]广州:广州周立功单片机发展有限公司,。
[4] 马忠梅,籍顺心,张凯等.单片机的 C语言应用程序设计[M].北京:北京航空航天大学出版社,。
[5] 高建卫,应武.一种基于单片机直接读写的 IC卡读卡器[J].世界电子元器件,:71-72.
Design of IC Card Reader Based on Freescale MCU
Li Jianmeng, Wu Youyu
School of Information Engineering, Wuhan University of Technology, Wuhan (430070)
Abstract
The IC card reader based on MC9S12D64 MCU is introduced. System block diagram, hardware
schematics, verification procedure and written function module are given. MC9S12D64 is a 16-bit
single-chip, with an I2C module. The IC card reader communicates with the host computer by RS232
module. The operation principle of logic chip SLE4442 made by SIEMENS is described, including
three memory, four modes and seven commands. Before PSC verification, data expect compare
verification can been read. After correct verification, written can be carried out exactly as described.
When IC card is inserted,the IC card reader works, otherwise, the IC card reader is in a wait state.
Keywords: SLE4442 card;microcomputer;IC card reader