ATR介绍

2024-04-17 00:18
文章标签 介绍 atr

本文主要是介绍ATR介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

7816协议上摘抄的一段

ATR:复位应答,它是一系列字节的值,这些字节是由卡作为对复位命令的响应发送给接口设备的

ATR的字符序列,首先一个初始字符TS,TS后面按照下面的次序最多32个字符:


T0 TA(i) TB(i) TC() TD() ... T1 T2 Tk ... Tck


T0                                                格式字符,用于申明第一组接口字符和所有历史字符 (强制性)

TA(i)/TB(i)/TC(i)/TD(i)               接口字符,由格式字符和TD(i-1)字符的低4位来指明(可选)

T1 T2 Tk.                                    历史字符(可选)

Tck                                               检测字符(有条件)


Reset

3B FA 13 00 00 81 31 FE 45 4A 43 4F 50 34 31 56 32 32 31 96

复位应答 ATR

[@more@]

Reset

3B FA 13 00 00 81 31 FE 45 4A 43 4F 50 34 31 56 32 32 31 96

复位应答 ATR

TS( The Initial character ) = 3B

--表示正向约定,高电平为1,低电平为0,传输时先传输LSB,最后传输MSB

  LSB和MSB说明

T0( The Format character ) = FA

--表示接口字符的个数和历史字节的数量

----其高4位有几个bit为1,则表示后续有几个历史字符(Historical bytes)

高4位 = f( 1 1 1 1 )表示后续字符中存在TA1 TB1 TC1 TD1

--------------------( TA1, TB1, TC1, TA2, TB2 是全局接口字符,TC2是专用接口字符 )

TA1 = 13

--表示有增强的波特率,公式 3571200 / ( Fi / Di )

--------其中Fi由TA1的高4位(F)查表得出,Di由TA1的低4位(D)查表得出

----F = 01 ,查下表,则Fi = 372

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| F | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| Fi | 372 | 372 | 558 | 744 | 1116 | 1488 | 1860 | RFU |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| 最高时钟MHZ | 4 | 5 | 6 | 8 | 12 | 16 | 20 | -- |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| F | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| Fi | RFU | 512 | 768 | 1024 | 1536 | 2048 | RFU | RFU |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| 最高时钟MHZ | -- | 5 | 7.5 | 10 | 15 | 20 | -- | -- |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

----D = 03 ,查下表,则Di = 4

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| D | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| Di | RFU | 1 | 2 | 4 | 8 | 16 | 1860 | RFU |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| D | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

| Di | RFU | 512 | 768 | 1024 | 1536 | 2048 | RFU | RFU |

+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

--------实际波特率为 38400

TB1 = 00

----表示编程电流 I /电压 P,高2位表示电流I,低6位表示电压P

----高2位 = 00 ,则编程电流 I 如下

+-------+--------+--------+--------+--------+

| 高2位 | 00 | 01 | 10 | 11 |

+-------+--------+--------+--------+--------+

| 电流I | 25 | 50 | RFU | RFU |

+-------+--------+--------+--------+--------+

----低6位 = 00 ,则编程 P 电压为0

TC1 = 00

----额外保护时间N = 0

TD1 = 81

----通讯协议 T = 1

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

没有TA2

没有TB2

没有TC2

TD2 = 31

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

TA3 = FE

TB3 = 45

没有TC3

没有TD3

4A 43 4F 50 34 31 56 32 32 31

----是历史字节

TCK ( XOR T0 - TCK ) = 96 校验成功

这篇关于ATR介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910301

相关文章

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题