首页 > 其他分享 >智能卡 7816协议【转】

智能卡 7816协议【转】

时间:2022-12-20 14:00:55浏览次数:39  
标签:7816 协议 ETU 传输 ATR 字符 智能卡 Card 时钟

本文转载自:

​​smartcard T0 T1 T14协议区别​​

1) T0 异步半双工字符传输协议 停止位是2, T1是1。

2) T1是异步半双工块传输协议。 有起始域,信息域, 中止域 组成一个 块。

3) T14叫做私有协议。T14没有奇偶校验, ATR期间时钟因子也不同。像irdeto是620。


4、通讯协议说明(字符传输)

 

Smart Card的字符传输采用的是异步半双工模式,这种异步的模式很像个人电脑上的RS232通信。传输一个字符时,除了8Bits的数据外,还加了以下几个Bits:

起始位 -- 用于字符帧的同步

校验位 -- 用于校验检测

Guard Time -- 两个字符间的间隔时间

 

Guard Time一般为两个bit的时钟周期,这一点很像PC上的UART的通信,用两个停止位来间隔相连的字符。

复位应答(ATR):

当RST信号被触发,即将RST管脚被拉低400~4000个时钟周期,Smart Card检测到这个信号后,将会回传“复位应答”ATR信号出来,ATR最多包含33个字节,有以下几个段:

l 初始化字符(TS)

l 格式化字符(TO)

l 接口字符(TAi, TBi, TCi, TDi) (i=0/1)

l 历史字符(T1, T2, T3 … TK)

l 校验字符(TCK)

它们包含哪些意思呢?请看下面的解析:

首先,TS初始化字符展示了电平的逻辑,反向约定(Inverse Convention即负逻辑)和正向约定(Direct Convention即正逻辑)。那么一般来说,回传TS有两个可能的HEX值0x3F和0x3B,0x3F代表反向约定,0x3B代表正向约定。

格式化字符TO段分为两个部分,Bit Map和No of History Bytes,各占4个bits。

接口字符的TAi定义了串口传输中最基本的特性,其中包含两个4-Bits的DI和FI,当中的FI时钟频率的转换因子,DI则是定义了比特率的调节因子。通过这两个因子,我们可以通过以下的公式验算出Work ETU的大小:

Work ETU = 1/D*F/f sec (f为工作的时钟频率)

正常来说,一个ETU(Elementary Time Unit),一个bit的时间周期。因此我们计算得出,传输一个字符帧为12个ETU=1 START + 8 DATA + 1 PARITY + 2 GUARDTIME。

接下来,便会有个问题了,字符通信是需要D和F这个两个调节因子,保证其工作时序,而这两个因子又是Smart Card复位后,由通过字符传输回传的ATR获得的,那么谁来保证ATR传输的时序呢?原因是这样的,Card复位时,会有D和F的两个初始值,分别 D=1,F=372。而且,复位时时钟频率f会在1~5MHz范围之内,比较常见的是3.579545MHz。

我们可以计算得出Default ETU = 1/1*372/3579545 sec;

Baud Rate = 1/Default ETU = 9600s/s;

TC提供的Guard Time也是如此,Default值为2个bit的时钟周期。

TD则是要说明的是传输协议的类型,标准里罗列了16种,但是常用也就是两种T0和T1,即异步半双工字节传输和异步半双工块传输。

因此,我们知道多数Smart Card复位时,是工作在3.579545MHz和9600s/s上的,一旦复位后,就根据ATR的值重新进行配置工作时钟频率、波特率和Guard Time。使其能更高效的通信。

T=0 传输协议:

IFD和Smart Card之间存在主从设备关系。在通信之前,我们知道ATR中协议是多于一个,因此接口设备会发一个PTS信号,以便确认通信协议的类型。

CLA - 指令集 (FF 是预留给 PTS)

INS - 指令码 (例如,读内存)

P1 - 指令跟的参数1 (例如,内存地址)

P2 - 指令参数2

P3 - 数据长度

另外,再说说Smart Card的两个状态字SW1和SW2。它们是用来通知上位设备目前Smart Card的工作状态,如果工作正常,则返回值如下所示:

SW1,SW2 = 0x90, 0x00

如果工作异常了,也能通过这两个状态字获得一些信息,如:

SW1= 6E - Card 不支持该款指令集

= 6D - 无效的指令码







Integrated Circuit Card  集成电路卡,也叫CA卡或智能卡,将一个微电子芯片嵌入符合ISO 7816标准的卡基内,做成卡片形式,也是一个嵌入式小系统。由CPU,ROM,RAM及E2PROM及串行通行单元组成。

其操作系统称为COS,一般带有自已的安全体系,其安全性是衡量COS的重要指标。其功能包含有传输管理,文件管理,安体体系及命令解释。

一般STB机顶盒与智能卡连接图如下:


I/O 串行输入输出

CLK 时钟信号

RST 复位信号

VCC 供电电压 一般5V

GND 接地

智能卡与CPU之间按照异步方式传送字节,其具有统一的字符传输格式,一个字由连续的10个ETU完成发送,期间传送1个起始位,8个数据位和1个奇偶检验位。其数据帧传输格式:10bit



ATR结构及内容: 

TS初始字节定义随后字符的逻辑电平及位序

0x3B 表示高电平为逻辑'1', lsbf

0x3C 表示低电平为逻辑'1', msbf

T0格式字符,标记协议参数,协议类型 


协议参数:

其基本的读写流程图如下:




下面重点说一下smartcard驱动编写主要逻辑:

1、设定卡工作频率

打开设备的时候需要设置频率参数,而芯片实际给SCI 的时钟是由外部传入的

时钟频率参数计算的分频因子分频得来,因为计算公式会舍弃计算的分频因子的小数部分,

所以通过系统时钟分频之后给卡的时钟会存在增量误差,实际配置考虑与需求最接近的值来

设置和权衡

具体算法:

Fsci_clk = Frefclk/((clkicc+1)*2);

其中Frefclk是系统96M时钟?Fsci_clk 是外部需要设置的sci时钟,实际要配入寄存器分频因子

clkicc = Frefclk/(2*Fsci_clk) -1;

clkicc 有时候计算出来是浮点数,但只取整,所以设置的频率与实际频率有偏差。

一般来说,其值设定:

对于T0,T1卡,支持频率1MHz~5MHz;对于T14卡,只支持6MHz。单位为khz


2、ETU 串口波特率 Elementary Time Unit

ETU = F / (clk * D) 其中 F 和 D 为调整因子,在TA1中,初值为372和1

则 ETU = 372 / (clk * 1) 则波特率为9600则clk值为 3.57112MHZ


对于寄存器设置如下:

ETU = ((1 + baud) / F(refclk) ) * value ETU范围:5~255


F(refclk) 参考时钟频率,一般为 96000UL

band 为 SCI_BAUD 配置的值 (波特率晚钟分频值寄存器)

value 为 SCI_VALUE配置的值 (ETU内SCI_BAUD 周期数寄存器)

以上的两个参数可能会导致数据发送成功但却无法收到数据的情况!天柏CA就比较特别需要设为[372,2]

3、中断接收数据

利用GPIO作为irq中断线用于数据处理

request_irq(IRQ_SCI,Smartcard_ISR,IRQF_DISABLED,NULL,NULL); 注册中断

利用中断可检测到 Card IN/OUT和 RX 接收数据

对于ATR数据的接收与正常的机卡通讯数据同样操作的,只不过card的状态不同时的操作而已。

init->card in->wait atr->read atr->ready--> 后面就是RX/TX两种数据状态



标签:7816,协议,ETU,传输,ATR,字符,智能卡,Card,时钟
From: https://blog.51cto.com/u_8475449/5954814

相关文章

  • DNS协议 是什么?
    DNSDNS(DomainNamesSystem),域名系统,是互联网一项服务,是进行域名和与之相对应的IP地址进行转换的服务器简单来讲,DNS相当于一个翻译官,负责将域名翻译成ip地址IP地址:一......
  • TCP/IP 协议(10):TCP 协议一百问
    TCP/IP协议(10):TCP协议一百问​​杨领well的TCP/IP协议专栏​​TCP协议部分一直没有更新,是因为我不确定到底应该怎么来介绍TCP协议才能干货满满。最后我决定以Q&A......
  • 网络协议RFC编号表
    常用网络协议的rfc文档编号:网络协议rfc编号描述IP791TCP793rfc9293淘汰了rfc793UDP768ICMP792RIP1058OSPFv21247rfc2328淘汰了rfc1......
  • 路由协议ISIS第1篇---ISO
    为什么学习ISIS之前要介绍ISO?ISIS路由协议最初被设计出来并不是为了TCP/IP协议的网络层,而是为ISO协议的网络层协议CLNP,后来随着TCP/IP协议成为主流的应用,IETF组织对ISIS......
  • USB规范分类大全和USB协议关系树
    参考:USB规范分类大全和USB协议关系树-USB中文网(usbzh.com)基于USB的数据传输规范和最新的TYPE-C/USB数据传输接口,伴随着USB技术的发展,当前的USB及其子规范分类如下:US......
  • HCIA 交换机原理与ARP协议
    一、概述交换机(Switch),在网络通讯中属于非常重要而基础的设备,常见资料往往侧重于介绍某一点或对某个名词的解释,本文试图从用户使用的角度来理解交换和交换机,不过仅限于HCIA的......
  • Java实现基本的HTTP/HTTPS请求 - 包含协议头
    importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importja......
  • Ubuntu 22.04 显示检测到窗口系统采用wayland协议
    解决方法sudovim/etc/gdm3/custom.conf#WaylandEnable=false的注释井号去掉sudoservicegdm3restart参考资料https://zhuanlan.zhihu.com/p/546516064......
  • 值得学习的ICMPv6 协议
    在IPv4中,路由器使用ICMP向源节点报告向目的地传输IP报文过程中的错误和信息。它为诊断、信息通知和管理目的定义了一些消息,如目的不可达、报文超长、超时、回显请求和回显应......
  • DNS用的是TCP协议还是UDP协议
    DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议?DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。(一)TCP与UDP简介TCP---传输控制协议,是......