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

news2024/11/15 11:08:32

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卡、身份证读卡器等定制,可私信。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图片高清修复怎么做?4种高清修复方法分享给你

照片已经成为我们记录生活、珍藏回忆的重要方式。然而,随着时间的推移,不少珍贵的照片可能因保存不当或拍摄技术限制而变得模糊不堪。想要将这些模糊的照片变清晰成为当下的急迫需求。不过不用担心,下面就来给大家分享4种高清修复图片方法&am…

TCP系列相关内容

一、TCP上传文件 loop——本地回环测试地址。 void *memset(void *s,int c,size_t n)——给一个变量设定一个值。 1、“粘包”问题 两次分别发送的数据,被一起接收形成该现象。 原因:TCP流式套接字,数据与数据间没…

超低排放验收流程的全方位指南

近年来,随着环保要求的不断升级,朗观视觉超低排放验收成为了众多工业企业必须面对的关键环节。本文将详细介绍超低排放验收流程的安装要求、最新政策、国家标准以及企业应对的解决方案,帮助企业更好地理解和应对这一重要课题。 一、超低排放验…

校园一卡通_q7e7o

TOC springboot576校园一卡通_q7e7o--论文 第一章 概述 1.1 研究背景 近些年,随着中国经济发展,人民的生活质量逐渐提高,对网络的依赖性越来越高,通过网络处理的事务越来越多。随着校园一卡通的常态化,如果依然采用…

JS中Promise用法(简要说明)

文章目录 1、下方自定义名词约定2、官方流程图3、构造函数Promise <状态>fulfilled 用法代码图示 4、构造函数Promise <状态>rejected 用法代码图示 5、第3和4结合使用&#xff0c;可以将promise状态settled为2种情况之一代码图示&#xff08;图中if和else都是调…

移动硬盘直接拔下来有什么影响吗?数据丢失如何恢复

在日常的工作与生活中&#xff0c;移动硬盘成为了我们不可或缺的数据存储和传输设备。然而&#xff0c;很多人或许都曾有过这样的经历&#xff1a;在数据传输或使用中&#xff0c;由于一时疏忽或赶时间&#xff0c;直接拔下了正在工作的移动硬盘。这样的行为&#xff0c;虽然看…

冷却液温度传感器检测诊断

检测发动机冷却液温度&#xff0c;向ECU输入温度信号&#xff0c;作为燃油喷射和点火正时的修正信号&#xff0c;同时也是其他控制系统的控制信号。 冷却液温度传感器安装位置 冷却液温度传感器&#xff08;俗称水温传感器&#xff09;一般安装在缸体水道上&#xff0c;缸盖水…

docker命令实现容器管理

容器镜像分类 1.系统类镜像 2.应⽤镜像 搜索镜像 下载镜像 默认下载最新版本 1.安装docker环境 #配置变量 2.启动并且使⽤ 2.配置远程管理 帮助和指令

JVM的五个 invoke 指令详解

文章目录 概述invoke 指令概览1. invokespecial2. invokevirtual3. invokestatic4. invokeinterface5. invokedynamic 总结 概述 Java 虚拟机 (JVM) 是 Java 语言的核心组件之一&#xff0c;负责执行 Java 字节码。在 JVM 中&#xff0c;invoke 指令用于执行方法调用。本文将详…

K8s 集群巡检

K8s 集群巡检 上次发文 K8s 无备份&#xff0c;不运维&#xff0c;文章开篇&#xff0c;插入了一张 K8s 集群巡检的图片&#xff0c;好多小伙伴私信留言&#xff0c;问我要开源地址。由于其通用性不高&#xff0c;大多数公司需要结合自身的架构情况进行不同的巡检&#xff0c;…

互联网应用主流框架整合之Redis配置

在实际的商用系统中&#xff0c;Redis常用的机制包括备份、回收策略、主从复制、哨兵模式、集群模式等&#xff0c;在保证性能的同时还要保证其高可用 首先要熟悉一下Redis的配置文件&#xff0c;如果实在linux系统中&#xff0c;配置文件是redis.conf&#xff0c;而在windows…

linux系统编程:网络通信

1.网络 1.粘包 tcp特点 面向连接 字节流&#xff08;TCP 将数据视为连续的字节流&#xff0c;没有明确的消息边界。会发生粘包问题。 避免粘包 特殊分隔符&#xff1a;在消息间加入特殊的分隔符&#xff08;如换行符或其他特殊字符&#xff09;&#xff0c;接收方根据分…

404炫酷单页面html5源码

源码介绍 404炫酷单页面html5源码&#xff0c;感觉应该符合一些人的感觉&#xff01;可以用来做404页面。记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 源码下载 分…

Java基础再学习

作为一名实习生&#xff0c;为了夯实基础、查缺补漏&#xff0c;我跟随 B 站学习了以下知识&#xff0c;欲将其留存纪念&#xff0c;故对其中内容进行优化&#xff0c;以使其更为优雅。 面向对象 面向对象编程的定义&#xff1a;借助合适的对象来解决问题&#xff08;如运用 …

可视化表单设计生成器可以实现流程化办公吗?

实现流程化办公一直都是很多客户朋友追求的目标。那么&#xff0c;如何才能实现这一目标&#xff1f;如何为客户提供更优良的产品助力提质、降本、增效&#xff1f;低代码技术平台拥有可视化操作界面、更灵活、更高效、更可靠&#xff0c;是专注于职场办公&#xff0c;助力流程…

牛客笔试小题

目录 牛客.小红取数 牛客.哈夫曼编码​编辑 牛客.字符编码(上一道题的资料) 牛客.最小的完全平方数 牛客.小红取数 01背包问题:在满足总和必须为k的倍数的情况下&#xff0c;选择最大的总和 1.状态表示: dp[i][j]:表示从前面i个数字中挑选&#xff0c;总和%k等于j时候,最大的…

Java SpringBoot+Vue实战教程:如何一步步实现Cosplay论坛设计与实现

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

JWT-JSON Web Token

JSON Web Token&#xff08;缩写 JWT&#xff09;是目前最流行的跨域认证解决方案。 1 跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 用户向服务器发送用户名和密码。服务器验证通过后&#xff0c;在当前对话(session)里面保存相关数据&#xff0c;比如用…

8.23题目:矩阵数字查找

一些闲话&#xff1a; 小编打算给这个刷题系列改个名&#xff0c;以后就用日期做标题吧&#xff0c;哪一天写了就写哪一天的日期&#xff0c; 不然就跑题了&#xff0c;你说是吧&#xff01;啊啊啊&#xff0c;根本做不到每日一题&#xff01;&#xff01;~~>_<~~ 一、…

Mix|使用VS2017CMake构建Qt工程 仿照MVS(仅用于学习)

MVS下载链接&#xff1a;https://www.hikrobotics.com/cn/machinevision/service/download/?module0 CMake工程构建参考&#xff1a;CMake|VS2017CMake3.8搭建Qt项目 文章目录 效果图整体结构实现代码最外层CMakeLists.txt代码实现及CMakeLists.txt搭建CMakeLists.txt搭建主函…