77 智能卡ATR TA1通信速率计算

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.youkuaiyun.com/michaelcao1980/article/details/8215135 https://blog.youkuaiyun.com/michaelcao1980/article/details/8215135

------------------------------------------------------------------------------------------------------------------------------

本文只是知识再总结记录,便于后续自己快速复习。

over!

------------------------------------------------------------------------------------------------------------------------------

最后的最后,卖个广告:如需IC、ID、sim卡、身份证读卡器等定制,可私信。

------------------------------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值