1 前言
智能卡读卡器在读卡前期会以默认标准通信速率9600与卡片交互,期间可通过卡片返回的ATR值中TA1字段获取卡片支持的最大通信速率,然后读卡器通过PPS指令与卡片协商更改通信速率,最后以协商的速率进行通信。
起初默认9600波特率是比较慢的,所以通过提速可加快智能卡读卡器与卡片的交互速度。那么怎么获取或计算得到卡片的通信速率呢?这就是本文所要记录的。
2 实验背景
这两天在弄智能卡高速读卡器,目前该款读卡器已实现2.5M通信速率读写,但是该读卡器还未兼容普通卡读卡,所以就要把普通卡读卡的功能合入进来。
在功能合入过程中,遇到普通卡读卡速度慢的问题,最后发现是普通卡读取没有做自适应速率功能,而是一直以9600速率进行读写,所以导致时间没有达到要求。
而卡片到底支持多少的通信速率呢?ATR不会直接返回类似9600、115200字段的,那么是怎么得到卡片的通信速率呢?
下面我们正式开始。
3 通信速率计算
在此之前列举一点点基础知识(抄别人的)。
(1)ATR也叫复位应答,是一个字节序列,这些字节是由卡作为对复位命令的响应发送给读卡器的。在I/O电路上,每个成功的复位操作都会导致I/O上的一个由初始字符TS开始,后跟最多32个字符的复位应答。ATR的作用是告诉读卡器,我是一张什么样的卡片,以便读卡器知道接下来该以什么样的方式和卡片通信。
(2)ISO/IEC 7816-3标准中对ATR的数据串和数据元做了规定和描述。
数据元 | 说明 |
TS | 起始字符 |
T0 | 格式字符 |
TA1,TB1,TC1,TD1,... | 接口字符 |
T1,T2,... ,TK | 历史字符 |
TCK | 校验字符 |
(3)ATR的基本数据结构和数据元
(4)ATR中的TA1字段 FI和DI编码对照表
下面是FI编码表:
FI | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
F | 372 | 372 | 558 | 744 | 1116 | 1488 | 1860 | RFU |
FI | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
F | RFU | 512 | 768 | 1024 | 1536 | 2048 | RFU | RFU |
下面是DI编码表:
DI | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
D | RFU | 1 | 2 | 4 | 8 | 16 | 32 | RFU |
DI | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
D | 12 | 20 | RFU | RFU | RFU | RFU | RFU | RFU |
有了上述的表格,那么我们差 计算公式:通信速率 = 晶振频率 / ( F / D )
差TA1字段的说明: TA1高4位表示 FI,低4位表示DI,公式中F = FI对应查表所得; D = DI对应查表所得;
4 计算示例
下面给出几个不同通信速率计算示例。
4.1 智能卡9600通信速率计算
如果卡片仅支持9600速率通信,那么其ATR中的 TA1 = 0x11,故FI = 0001、DI = 0001,查表所得F = 372 ,D = 1. 而由于晶振位3.5712M,则:
通信速率 = 3571200 / ( 372 / 1) = 9600
4.1 智能卡55800通信速率计算
如果卡片支持55800速率通信,那么其ATR中的 TA1 = 0x94,故FI = 1001、DI = 0100,查表所得F = 512 ,D = 8. 而由于晶振位3.5712M,则:
通信速率 = 3571200 / ( 512 / 8) = 55,800
5 参考资料
感谢下述链接博主的知识分享。
参考文章1: https://www.cnblogs.com/utank/p/5463269.html
参考文章2:https://blog.csdn.net/michaelcao1980/article/details/8215135 https://blog.csdn.net/michaelcao1980/article/details/8215135
------------------------------------------------------------------------------------------------------------------------------
本文只是知识再总结记录,便于后续自己快速复习。
over!
------------------------------------------------------------------------------------------------------------------------------
最后的最后,卖个广告:如需IC、ID、sim卡、身份证读卡器等定制,可私信。
------------------------------------------------------------------------------------------------------------------------------