微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > SIM卡读卡器的研究与设计

SIM卡读卡器的研究与设计

时间:07-15 来源:互联网 点击:


5.2 热复位时序(Warm reset)

热复位在冷复位失败情况下使用,过程中保持VCC为H态,且有稳定的CLK时钟信号;热复位时需保持RST端为L态的时间至少为400个时钟周期(te);在RST端置L态之前或之后200个时钟周期时间内(td),IO口应置为接收方式;在RST置为H态后的400~40 000个时钟周期内,I/O口有复位应答。

5.3 时钟停止时序(Clock stop)

外部控制停止时钟,可使SIM卡通信暂时中断,过程中保持VCC端与复位端RST为H态;要停止时钟,需在I/O口输出最后一个字符之后等待至少1 860个时钟周期(tg);恢复时钟后至少等待700个时钟周期(th),I/O开始有字符输出。

5.4 触点释放时序(Deactivation)
将RST端置为L态;结束CLK输入并将I/O口置为L态;最后将VCC端置为L态。

5.5 SIM卡的复位应答

SIM卡的触点被激活之后,终端启动一个冷复位。如果SIM卡在冷复位后回送的字节数不符,或在19 200个初始etu之内复位应答未完成,终端不立即终止卡片操作过程,而是再发一个热复位信号。如果仍然得到同样的结果,那么,接口没备应释放触点,否则卡将继续进行后续操作。流程如图6所示。



复位应答最多为32个字节(包括历史字符,不包括初始字符),其中历史字符最多为15个字符,协议分为T=O与T=1两种,一张SIM卡只支持其中的一种协议。位持续时间:在IO上的位持续时间被定义为一个基本时间单元etu。复位应答期间的位持续时间称为"初始etu"。初始etu=372/fs=372个时钟周期。复位应答之后的位持续时间称为"当前etu",当前etu=F/D/fs。F为时钟频率变换因数,D为比特率调整因数,均在SIM卡复位应答的接口字符TA1中给出,缺省值为F=372,D=1,即复位应答之后的当前etu=初始etu。复位应答过程中相连两字符起始位前沿之间的最小时间间隔为12个初始etu,最大时间间隔为9 600个初始etu,所有应答字符在19 200个初始etu的时间内传送完,即从第一个字符的起始位前沿到最后一个字符起始位前沿后的12个初始etu结束)。

复位应答格式:


TS 初始字符(强制性的),确定后续字符传送顺序(高位先送还是低位先送);
TO 格式字符(强制性的);
TA1/TB1/TC1/TD1~TAi/TBi/TCi/TDi 接口字符(选择性的);
T1~TK历史字符(选择性的);
TCK 校验字符(有条件的)T=0时不出现。

6 SIM卡信息交互规程

6.1 SIM卡信息交互指令格式

6.1.1 命令格式



CLA 命令类别代码,GSM为0xA0;
INS 指令编码;
P1/P2/P3 指令参量,P3由INS决定,代表通讯的数据信息长度,有指令与响应两个方向;
DATA 指令附加数据。

6.1.2 应答格式


DATA:响应数据; SW1/SW2:返回命令状态。

6.1.3 通用错误返回代码表


6.2 常用的基本指令

6.2.1 目录或文件选择指令(SELECT)

选择一个文件,选择成功后,对线性固定型文件,记录指针不确定。对循环型文件,记录指针指向最近更新或增加的一条记录。

CLA=A0,命令类别代码,GSM为0xA0;INS:指令编码,SELECT为A4;P1=00,按文件标识
符选择;P2=00,应答:


目录地址:


正确命令响应为:


0x9F代表命令正确执行,XX为SIM卡返回的数据长度;返回0x94/0x04,代表给出的目录地址是错误的。在复位应答之后(ATR),主要文件(MF)被默认为选中,成为当前目录。然后,可采用符合下列原则的SELECT功能来选择每种文件:
① 选择DF或MF设为当前目录;DF是在选择任何他的EF之前被先选择出来
② 选择EF设为当前文件,DF或MF是EF的上层。当前EF总是当前目录的下层。
可选择的文件包括:属于当前目录的直接子文件;属于当前DF的父文件的直接子DF;当前月录的上层;当前DF;MF。

6.2.2 取前一命令应答数据指令(GET RESPONSE)


Length(R):响应数据最大长度。
全部命令响应为:

0x90/0x00代表命令正确执行。

6.2.3 从透明的数据文件中读取以二进制形式存储的字节串指令(READ BINARY)


Offset:要读取数据的偏移地址; Length(R):响应数据最大长度。

全部命令响应为:



0x90/0x00代表命令正确执行;返回0x94/0x00,代表没有数据文件被选中,即当前被选中的可能是目录而不是文件;返回0x94/0x08,代表当前目录或数据文件与指令不一致,即当前数据不是以二进制形式存储的;返回0x98/0x04,代表本次操作不满足存取安全规则,密码认证未通过。

7 SIM卡数据读写测试

SIM卡数据读写测试的具体步骤及其结果如下:

Step1 SIM卡首先上电复位,原则是先接通触点,后启动冷复位,若冷复位失败,启动热复位,若热复位也不成功,则释放触点并报错。冷复位或热复位成功后,SIM卡应输出复位应答。

实验测试中取得的复位应答信号如下:


0x3B代表协议为正向约定;0x67代表TB1与TC1出现,历史字符字节数为7;0x00代表不需要VPP;0x29~0x22为7个历史字符。
Step2 复位成功后,发送目录选择指令,将当前目录选取到GSM目录,指令如下:


7F20为GSM目录地址;

SIM卡返回:


代表命令正确执行,且响应字符有34个字节。

Step3 发送取命令响应数据指令:


0x22代表指令返回数据最大为34个字节;
S
IM卡返回:


0xC0代表响应数据对应的指令为SELECT;0x90/0x00代表命令正确执行。

Step4 再次发送目录选择指令,将当前目录选取到IMSI目录,指令如下:



6F07为IMSI数据目录;

SIM卡返回:


代表命令正确执行,且响应字符有15个字节。

Step5:发送取命令响应数据指令:


0x0F代表指令返回数据最大为15个字节;
SIM卡返回:


0xC0代表响应数据对应的指令为SELECT;0x90/0x00代表命令正确执行。

Step6 选取到所需要进行操作的目录后,执行读取数据指令,由于IMSI号是以二进制形式存储的,所以使用二进制数据读取指令:


0x00代表数据偏移地址为0,即从第一个字节开始读数据;0x09表示IMSI信息有9个字节;

SIM卡返回:


0xB0代表响应数据对应的指令为READ BINARY;0x08代表IMSI号有8个字节数据;0x90/0x00代表命令正确执行。按照协议,该SIM卡IMSI号即为:
460 00 0104559542,符合国际移动用户识别码IMSI(International Mobile Subscriber Identification Number)的编码规则,即IMSI(国际移动用户识别码)=MCC(移动国家号)+MNC(移动网号)+MSISDN(移动用户号码)。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top