在字符传输之前,I/O 应该处于高电平。一个字符由10个连续的时段组成,每一个时段为高电平或低电平。
第一个时段 m1 为低电平,为起始时段,用于字符帧的同步
中间 8 个时段(2 到 9)为要发送的一个字符
最后一个时段 m10 为奇偶校验位
每一个时段持续时间为一个 etu。如果在一个时段 mn(第n位)的结尾状态改变,那么这个字符的起始
边沿到mn的结束边沿之间的延时为(n±0.2)etu。注释
etu = Fi/(Fclk*Di)
其中Fclk是CLK引脚时钟
频率(1~4MHz),Di = 1,Fi=372
为了适配UART的9600波特率,可以设置MCU输出3.6MHz的PWM送入到IC卡的CLK引脚。这样etu=103.3us,与UART的9600误差在1%内,可以正常通信。
接受方对 I/O 进行定期采样,采样时间不少于 0.2etu。接收方必须在((n-1)+0.5±0.2)个 etu 内确认相应的时段 mn。
两个连续字符的起始边沿之间的延时至少为 12etu。这包括一个字符的持续时间和保护时间。在保护时间内卡和接口设备都处于接收模式,即高电平状态。
在复位应答期间,两个被卡发送的连续字符的起始边沿之间的延时不能超过 9600etu。这个最大值被称为是初始等待时间。
此处我们只针对物理层最基本的通信进行讲解,不对应用层协议深入讲解。ISO7816的协议层讲解有一百多页,有兴趣的朋友,可以网上下载ISO7816的协议深入研究。
PART.3 协议和参数选择
上面降到了ISO7816 标准IC卡的控制过程,但是不同的IC卡可能使用的协议不相同,但都符合ISO7816规范,接口设备可以发送协议和参数选择指令(PPS),选择要和 IC 卡进行通信的协议和相关的参数。此处不详细讲解,可以参看ISO7816相关资料。
PPS协议如下:
1、
IFD 发送一个 PPS 请求给 ICC;
2、如果 ICC 收到一个错误的请求,则不响应;
3、如果 ICC 受到一个正确的请求,则返回一个 PPS 响应,否则将超过初始等待时间;
4、如果 ICC 超出初始等待时间,则 IFD 复位或者拒绝 ICC;
5、如果 IFD 收到一个错误的应答,则复位或者拒绝 ICC;
6、如果 PPS 交换失败,则 IFD 复位或者拒绝 ICC。