深入理解7816(1)---- 关于F/D和etu【转】
本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0101gkss.html
深入理解7816(1)---- 关于F/D和etu
对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭。尤其是在看到复位应答中的F和D设置以及对应的etu的时候,会觉得有些复杂和难以理解。
其实从本质上说7816-3定义了智能卡(这里指的是接触式CPU卡,对于逻辑加密卡以及非接触IC卡不在此列)和读写设备之间的通讯协议,说白了就是数据位传输的格式。
如果学习或者接触过单片机,那么对于RS232一定不会陌生,它属于异步串行通讯接口(UART),通过RxD、TxD进行数据的收发,RS232曾经是PC机的标配,但是目前在多数PC上基本不复存在了(当然还可以通过USB-232转换器来扩展)。
接下来我们看看7816-3定义的通讯协议,其实基本上可以说是RS232的翻版并在此基础上进行的改进,7816中只有一个IO同时兼具数据收发的功能,这点和RS232用RxD和TxD进行数据收发是不同的。在RS232中我们有9600波特率、起始位、奇偶校验位、停止位这些概念,而在7816-3中都完整地保留了下来,只不过7816-3中引入了etu,没有使用bps,但是基本原理是一致的。etu的定义可以更加精确地描述每个数据位在传输过程中收发双方的职责和角色转换。
根据定义在智能卡上电复位的时候 1 etu = 372 / f ,其中f = 读写设备通过CLK管脚提供给智能卡的时钟频率,通常在1--5 MHz之间。
etu的单位是时间单位秒(毫秒、微秒),等同于传输每个数据位所需的时间。对其取倒数得出来的就是每秒传输的数据位,也就是bps。我们取f = 3.579545 MHz,用3579545除以372结果等于9622.4约为9600 bps。
通用的etu计算公式: 1 etu = (F / D) * (1 / f) ,F和D的值根据7816-3规范中的约定来进行设置。对于上电复位时的取值 F = 372,D = 1即作为默认值Fd和Dd。如果智能卡支持其他速率则需要在ATR中的TA1来指出其他的F和D的值,比如设定F=372,可以把D分别设定为2/4,那么智能卡能支持的通讯速率可以分别为19200/38400。
那么为什么要选择时钟频率为3.579545 MHz?为什么默认的F值选择为372呢?首先3.579545 MHz 是常用石英晶振的标称值,9600 * 372 = 3.5712 MHz,与之最为接近。再说为什么是372,372 = 12 * 31。标准的8051单片机每个指令周期为12个时钟周期,而且定时/计数器也按照1/12 进行分频后再计数的,这样设定对于智能卡芯片来说可以比较容易实现对IO数据通讯的控制,也可以更好地和PC机串口9600速率配合(当然这是指上个世纪80年代的时候,对于现在的智能卡芯片设计技术而言实现任意分频的控制都不是问题了)。
由此可见,这些参数的选择都是为了能够更好地利用当时既有的标准和技术,要知道7816-3在1989年的时候就已经制定了,按照当时的主流PC机配置把串口速率设为9600,用一个232接口芯片(比如Max232)再加上3.579545MHz的晶振,再配合几片74系列的门电路外加5伏的直流电源和几个阻容器件,这就是最基本的RS232串口读卡器了。
深入理解7816(1)---- 关于F/D和etu【转】的更多相关文章
- 深入理解7816(3)-----关于T=0 【转】
本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0102vcyp.html 深入理解7816(3)-----关于T=0 卡片和终端之间的数据传输是通过命令响应 ...
- 深入理解7816(2)---关于ATR【转】
本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0102vcrk.html 深入理解7816(2)---关于ATR 智能卡(此处主要指接触式CPU卡)本身始终 ...
- 深入理解7816(1)---- 关于F/D和etu
对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭.尤其是在看到复位应答中的F和D设置,以及对应的etu的时候,会觉得有些复杂和难以理解. 其实 ...
- 通俗理解T检验与F检验的区别【转】
转自:http://blog.sina.com.cn/s/blog_4ee13c2c01016div.html1,T检验和F检验的由来一般而言,为了确定从样本(sample)统计结果推论至总体时所犯错 ...
- 深入理解7816(3)-----关于T=0
卡片和终端之间的数据传输是通过命令响应的方式进行的,卡片只能被动地接收命令,并且给出响应.所有的命令都是以命令头开始,而该命令被完整地执行后(无论结果对错),必须以包含状态字(SW1 SW2)的响应结 ...
- 深入理解7816(5)-----关于文件DF/EF/MF/FID/AID/SFI
刚开始接触CPU卡的时候,对于各种文件.应用的定义容易模糊不清,通常不能准确地界定什么是文件?什么是应用?DF和EF的区别真的就像计算机里的目录和文档那样吗?FID.AID.SFI这些概念都在什么时候 ...
- 深入理解7816(4)---关于T=1
之前说过的T=0协议,基本上相当于是透明的数据,也就是说从应用的角度看,通过T=0传递的TPDU数据信息大都可以直接转换为对应的APD命令响应数据,“字节”是T=0协议最小的数据传输单元. 对于T=1 ...
- 深入理解7816(2)---关于ATR
智能卡(此处主要指接触式CPU卡)本身始终处于被动的状态,所以终端设备在和智能卡进行数据交互的时候,需要首先给智能卡发指令,智能卡才会对应地给出应答.而智能卡告诉终端的第一句话就是ATR,亦即“复位应 ...
- 便于理解mysql内幕的各种逻辑图组
便于理解mysql内幕的各种逻辑图组 http://blog.sina.com.cn/s/blog_445e807b0101ggtl.html 以下是个人一直以来从网络等各种途径收集到的一些对理解my ...
随机推荐
- POJ_2536_Gopher II
题意:n只地鼠,m个地鼠洞,地鼠必须以v的速度在s秒内钻进洞且每个洞仅能容纳一只地鼠,问最少有几只地鼠会被老鹰吃掉. 分析:最大匹配问题,将s秒内地鼠能够跑到的洞与该地鼠连成一条边,在最后得到的图中使 ...
- 梦想CAD控件关于id与handle问题
ID和句柄具有各自的特点: (1) ID:在一个任务中,本次任务中都是独一无二的.在不同的任务中,同一个图形对象的ID可能不同. (2) 句柄:在一个任务中,不能保证每个对象的句柄都唯一,但是在一个图 ...
- anaconda镜像
下载一个包老是下载不下来,于是放弃了官方版改为国内镜像. 清华镜像 (打开Anaconda Prompt 或者 打开cmd,运行下面的命令) conda config --add channels ...
- Android jdbc连接mysql报错解决方案 (Communications link failure)
最近调试安卓连接mysql真是心态爆炸,快两天才搞出来.以下整理一些常见问题. 检查manifest文件里网络权限是否打开 检查数据库IP是否有问题(包括一些沙雕错误,比如是不是在ip首或尾多了个空格 ...
- v-on(事件处理)
1.监听事件 v-on:click="msg+=1" (msg是写在data里) 2.方法事件处理器 v-on:click = "jia" (jia是写在me ...
- 【Codeforces 1129A】Toy Train
[链接] 我是链接,点我呀:) [题意] 火车从1,2,3...n->1的方式绕圈走.(即每次从i走到i+1) 有一些点有货物需要装载,但是每个点只能装上去一个货物. 每个货物都有目标点卸货点( ...
- Hyper-v交换机添加出错解决方法
这个问题中文找不到解决方法,只能重新安装系统了 重新安装系统后,按照顺序操作,不要去动设备管理器中的东西,也不用动驱动,先删除虚拟机的网络连接,在删除虚拟交换机就可以了,没有再出现问题
- SQL Server死锁总结 [转]
1. 死锁原理 根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态. 死锁的四个必要条件:互斥条件(Mutua ...
- P1516 青蛙的约会 洛谷
https://www.luogu.org/problem/show?pid=1516 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上, ...
- Eclipse新建/导入Gradle项目
一.新建 1.[New]->[Project] 二.导入 1.[Import] 2. 参考: http://www.vogella.com/tutorials/EclipseGradle/art ...