SIM卡通信协议
SIM卡通信过程分为4个步骤
- SIM卡连接和激活
- SIM卡复位
- SIM卡和ME之间的命令和响应过程
- SIM卡释放
1 SIM卡的连接和激活
正确连接ME和SIM卡后,ME按照如下的顺序激活SIM卡
- 置RST为低电平
- 给Vcc供电
- ME和SIM卡的IO口均设置为接收状态
- CLK上有稳定的时钟信号
2 SIM卡的复位
在激活SIM卡后,ME会冷复位和热复位SIM卡。随后,SIM卡应该复位内部数据并且发起ATR过程。ME根据ATR的信息,有可能发起PTS过程来进一步商议通信协议和波特率。这些都成功后,ME和SIM卡就可以进行APDU交互过程。
2.1 SIM卡冷复位
正确连接SIM卡后,ME就会立刻对SIM卡进行冷复位,复位时序如下
注:SIM卡应当在RST被拉高后的400到40000个时钟周期内发起ATR过程。
2.2 SIM卡热复位
ME可以在SIM卡被激活后的任何时间里随时对SIM卡进行复位,这叫热复位。热复位时,RST会仙贝拉低40000个时钟周期,然后被拉高,SIM卡应答跟冷复位相同。
注:SIM卡应当在RST被拉高后的400到40000个时钟周期内发起ATR过程。
2.3 字符帧传输
1.SIM卡和ME之间使用IO的半双工通信(一般为异步),IO上的信息被打包成字符帧来传输。PTS和APDU都是这种方式。
2.字符帧的结构如下图
S是开始位,低电平。
Bi是i字节的有效数据据。
C 是奇偶校验位。
P是保护时间
S是停止位。
3.字符帧的时序
字符帧内每一位的持续时间定义为基本时间单元(etu),他依赖与时钟频率(f),时钟转换因子(f),比特调整因子(D),
etu = F/(f*D)秒
保护时间P一般为2+N etu
参数F,D,N可以在ATR和PTS过程中由SIM和ME商榷确定。默认值为F=372,D=1,N=0。
2.4 ATR过程
ATR过程使用默认参数F=372,D=1,N=0,若CLK上是3.579HZ 那么etu = 372/2.579波特率为1/etu=9600bps。
ATR 过程包含如下信息:传输协议的类型,控制参数,和识别信息。ATR过程由一系列字符组成。应该遵循如下格式
TS :初始字符(必须传输)
TO :格式字符(必须传输)
TAi~TBi : 接口字符(可选)
TCK :奇偶校字符
字符具体含义和编码参考GSM11.11文档
2.5 PTS过程
在协商模式下,ATR过程默认使用的参数所表明的协议会一直用下去,直到一个成功的PTS过程完成。GSM11.11规定,如果TA1不等于‘11’那么ME就会发起PTS过程。
PTS过程包括ME的PTS请求和SIM卡的PTS应答。他们一般由4个字符组成。
- PTSS初始字符 总为FF
- PTS0格式字符 高四位分别表示后面字符的存在,低4位表示协议类型
- PTS1参数字符 高半字节代表FI,低半字节代表DI.(与TA1匹配)
- PCK校验字符
SIM卡和ME之间的APDU交互过程。
SIM卡在复位,ATR过程,PTS过程正常结束后就可以正式接收ME的各种命令APDU应该使用T=0来传输,正常的APDU分为命令和响应两部分,响应的编码如下
APDU命令格式
APDU响应格式
详细状态参考GSM11.11第9章。