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的基本数据结构和数据元

最低0.47元/天 解锁文章
1289

被折叠的 条评论
为什么被折叠?



