对于刚接触智能卡的工程师来说,在阅读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相关推荐

  1. 深入理解7816(1)---- 关于F/D和etu【转】

    本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0101gkss.html 深入理解7816(1)---- 关于F/D和etu 对于刚接触智能卡的工程师来说, ...

  2. Zookeeper理解---ZAB协议

    ZAB协议 Zookeeper并不是完全采用Paxos算法,而是使用了一种称为Zookeeper Atomic Broadcast(ZAB,Zookeeper原子消息广播协议)作为数据一致性的核心算法 ...

  3. 分布式一致性协议三部曲-深入理解一致性协议Paxos

    在理解分析分布式一致性协议前,我们必须先看下CAP理论 CAP CAP是指在一个分布式系统中,一致性(Consistency).可用性(Availability).分区容错性(Partition to ...

  4. 智能卡 7816协议【转】

    本文转载自: smartcard T0 T1 T14协议区别 1) T0 异步半双工字符传输协议 停止位是2, T1是1. 2) T1是异步半双工块传输协议. 有起始域,信息域, 中止域 组成一个 块 ...

  5. 使用 Saleae LLC 监控 7816 协议数据

    复位应答 正常 APDU 通讯 7816速率计算公式: 注意规范有规定复位应答期间,Fi 和 Di 必须为默认值(否则双方如何确定要用多少速率通讯). Fi = 372 | Di = 1 1 etu ...

  6. 智能卡 7816协议

    smartcard T0 T1 T14协议区别 1) T0 异步半双工字符传输协议 停止位是2, T1是1. 2) T1是异步半双工块传输协议. 有起始域,信息域, 中止域 组成一个 块. 3) T1 ...

  7. 理解OAuth2协议原理

    理解OAuth2协议原理 OAuth2简介 角色 流程 客服端注册 Client Type 四种授权模式 授权码模式 隐藏式 密码式 凭证式 RefreshToken Github Demo加深理解 ...

  8. python爬虫入门教程--快速理解HTTP协议(一)

    http协议是互联网里面最重要,最基础的协议之一,我们的爬虫需要经常和http协议打交道.下面这篇文章主要给大家介绍了关于python爬虫入门之快速理解HTTP协议的相关资料,文中介绍的非常详细,需要 ...

  9. 在实践中深入理解IP协议

    本文为我个人计划撰写的博客专题<在实践中深入理解常见网络协议>中关于IP协议的一篇,有兴趣的朋友可以继续关注我的博客,我将会陆续撰写各种协议的实践分析文章. TCP/IP协议栈其实当然不止 ...

最新文章

  1. mac 安装 python mysqlclient 遇到的问题及解决方法
  2. HTML5 本地数据库IndexedDB数据库
  3. Python爬虫百度搜索
  4. Snort日志输出插件详解
  5. C语言正则表达式regex
  6. 实验2-4-3 求平方根序列前N项和 (C语言)
  7. mysql系统特性_MySQL · 引擎特性 · InnoDB 事务系统
  8. 整理一下N年前写的java web考勤管理系统
  9. 华为ensp ftp 上传下载
  10. 匹配滤波器及matlab仿真
  11. 工频变压器和高频变压器
  12. JQuery注册登录
  13. c语言程序设计21点扑克牌,C语言程序设计21点扑克牌游戏.doc
  14. 教你用记账方法了解账户总收支结余
  15. 【联想RQ940】联想RQ940更换主板电池+重新设置BIOS
  16. 什么决定你的江湖地位
  17. 极度调查:“变阵”中国移动
  18. 织梦 简单的会员系统
  19. 算法 - 鸡尾酒排序(CocktailShaker_sort)
  20. 计算机科学导论实验(一)

热门文章

  1. 嫁人要嫁灰太狼,做人要做喜洋洋
  2. 20考研规划及寒假复习小建议
  3. 一分钟了解 Flaky Test
  4. 福建农信 计算机 考试试题,2020福建农信社招聘考试模拟试题——计算机知识(13)...
  5. 一篇优秀的论文是怎么写出的?
  6. html 怎么让div卷角,css实现简约的纸张卷角效果
  7. 2021-06-23对深度学习模型进行更小,更快,更好的综述——微软研究院
  8. 【Linux】sed命令初接触(1)
  9. 2022中国甲烷排放控制峰会
  10. 十进制转BCD码的方法