摘要:详细介绍SLE4418/SLE4428 IC卡的操作逻辑,着重说明密码校验过程;给出操作流程和的应用示例以及全部的操作源代码。
关键词:SLE4418/SLE4428 IC卡 校验程序
概述
随着国家“金卡工程”的不断发展,各种IC卡应用方案与系统不断涌现,涉及到各个领域各个行业与部门,如各地的IC卡预付费表、
零售服务业的汀货与送化等;而这些系统在各行业的推广与实施,又进一步推动了IC卡的应用。目前,我国在用的IC卡卡就有1亿多,随着科学技术与经济的不断发展,IC卡必将得到更广泛的应用。
SLE4418/SLE4428卡是西门子公司的产品,价格便宜,使用方便,比较适合于数量较小的应用,是我国使用较为广泛的一种IC卡。
1 SLE4418/SLE4428 IC卡特点和操作时序分析
1.1 SLE4418/SLE4428 IC卡的基本特征
SLE4418 IC卡共有10248位EEPROM,可逐字节地进行写操作与删除操作,每个字节都有具有程序写保护位。SLE4428 IC除了以上功能外,还带有程序密码校验逻辑(PSC)。由于SLE4418/SLE4428 IC卡内置了高压产生器,因而只需即可进行操作,简化了接口电路的设计,可直接由单片机驱动,几乎不要其它和外接元件。此瞳的基本特点如下:
①具有10248位的EEPROM存储器;
②以字节为编址单位;
③具有10241位保护存储器,保护存储器设置后不可撤消;
④三线串行总线;
⑤可进行10万次擦写操作;
⑥数据保存10年;
⑦卡内具有2个字节的PSC程序加密位,数据仅在密码检验正确后,方可进行写操作。
1.2 操作时序分析
SLE4418/SLE4428 IC卡通过三线串行总线性与芯片接口进行信息交换。数据在程序控制器的统一协议下,进行数据序列转换与安全逻辑校验。SLE4418/SLE4428 IC卡的引脚配置及功能说明如图1和表1。
表1 IC卡引脚功能
引脚名称 功 能
VCC 工作电压
RST 复位端
CLK 时钟
N.C 空
GND 地
I/O 数据线
(1)复位与复位应答
IC卡在上电时,芯片进入到上电复位状态(POR),POR由一个复位操作(Reset)终止。当RST引脚由“0”状态变换变换为“1”状态时结束。复位时,将终止所有当前的操作命令。
上电复位(POR)后,地在写数据或删除数据前,必须先进行一次读操作。芯片复位时,地址计数器偏移置被设置为“0”,第一个数据位出现在数据线(I/O)上中,如图2所示。
(2)命令输入逻辑
SLE4418/SLE4428共有5条控制命令,SLE4428另有3条密码操作命令,如表2所列。
表2 SLE4418/SLE4428IC卡操作命令
字节1 字节2 字节3 操作内容
S0 S1 S2 S3 S4 S5 A8 A9 A0~A7 D0~D7
1 0 0 0 1 1 地址高位
地址低位
输入数据 带保护位写与删除
1 1 0 0 1 1 输入数据 不带保护写或删除
0 0 0 0 1 1 比较数据 带信号位写(校验)
0 0 1 1 1 1 忽略 带保护位数(读9位)
0 1 1 1 0 0 忽略 (不带保护位读(读8位)
0 1 0 0 1 1 1 1 253 位掩码 写错误计数器
1 0 1 1 0 0 1 1 254 PSC字节1 校验第一个PSC字节
1 0 1 1 0 0 1 1 255 PSC字节2 校验第二个PSC字节
由表2可看出,每条命令由6位控制位,10位地址位和1个字节的数据组成。进行写数据时,数据字节即是所要写入的数据,可见SLE4418/SLE4428不能进行一次性多字节的数据,可见SLE4418/SLE4428不能进行一次性多字节的写操作;读数据时,数据忽略不计,一次性可读出多字节。当RST由“0”状态变为“1”状态,CLK由“0”状态变为“1”状态时命令输入逻辑启动。命令输入完成后,设置RST为“0”状态,时序如图3所示。
(3)写操作/删除操作逻辑
对IC卡进行写操作,意味着数据位由“1”状态变为“0”状态;删除操作意消味着数据位由“0”状态变为“1”状态。SLE4418/SLE4428 IC卡在进行写操作与删除操作时,时钟(CLK)必须进行延续。一般来说,单独的写操作或者单独的删除操作,数据输入后,时钟须延续103个脉冲,数据删除后立即进行写操作则需要延续203个时钟脉冲。SLE4418/SLE4428 IC卡具有三种擦写操作,即删除操作后立即写操作、单独的写操作与单独的删除操作三种方式。如图4所示。写保护位时,只须将数据重写一次,当第二次写入的数据与前一次写入的数据相同时,设置保护位。保护位一旦设置便不能更改。
(4)读操作逻辑
按表2配置好读命令后,输入命令即启动读操作。当CLK为“0”状态变为“1”状态时,第一位数据出现在I/O数据线上,此后每个CLK脉冲即接收1位数据。接收8位或9位数据(带保护位时,第9位为保护位)时即为1个字节。每读完1个字节,IC卡地址计数器偏移量自动加1。当RST为“0”状态转变为“1”状态时,读操作结束。读时序逻辑如图5所示。
(5)密码校验逻辑
SLE4428 IC卡具有2个字节的密码保护字节(地址偏移量分别为1022、1023)以及1个错误计数器(地址偏移量为1021)。如果没有进行密码校验,则SLE4428 IC卡只能读出,不能写入,也不能读取密码字节。在没有通过密码校验即读取密码字节,将返回“00”.进行密码校验时,必须按以下步骤进行。
*改变一个没有写入的位(没有写入的位,其当前状态为“1”,改变一个没有写入的位即使期由“1”状态变为“0”状态);
*写入第一位密码;
*写入第二位密码;
*删除错误计数器。
密码校验的时序逻辑如图6所示。(写错误计数器请参看写时序逻辑)。
对于密码校验,虽然操作流程说得很清楚,但实际使用时如何实现,还是有一些技巧,因而同时列出图7所示的操作流程,以供参考。
2 SLE4418/SLE4428在予付费系统中的应用
预付费系统最先是为了解决电能表收费难而提出的一种收费管理方式,在得到用户的认可后,逐步在水、气行业得到推广,并有在其它行业得到应用的趋势。不管其行业如何,预付费管理系统,归根到底是收费问题,因而管理与操作方式上具有一般性。下面以飞利浦的87LPC764处理器芯片为例进行介绍。
图8
预付费系统基本电路原理如图8所示。
图8中,J1为IC卡卡座;U1为87LPC764单片机;U2为串行存储器,用于保存现场数据;SIGN为信号输入;BIT、STAGE、DATA为显示输出线,以串行的形式驱动LED显示器 Power为显示输出线,以串行的形式驱动LED显示器;Power为电源监控,以保护电源电压切断时导至的数据安全问题;Ctrl为控制输出线,用于控制受器件。主程序流程如图9所示。