当前位置: 首页 > news >正文

和菜鸟一起学linux总线驱动之初识smartcard操作过程

       学东西还是从实际的物体开始吧,先看下我们常用的触点式IC卡的管脚定义。

                             


     接口设备应通过触点VCC向卡提供下列标称电源:

—— A类:5V

—— B类:3V

因此,卡和接口设备应仅工作在A类,或者仅工作在B类,或者工作在A类及B类(以下表示为AB类)。

A类卡应能在A类或AB类接口设备上操作。AB类卡应能在A类、B类或AB类接口设备上操作。B类卡应能在B类或AB类的接口设备上操作;B类卡应具有防护卡在A类操作条件下不被损坏的功能(根据定义,损坏的卡为不能按规定操作或包含有错误的数据的卡)。

 

一、各个管脚的功能

1、VCC

该触点用来向卡提供电源电压。表1中的电流值是1ms时间内的平均值。为卡规定了最大电流。接口设备应能在规定电压值范围内提供此电流值或者更大的电流值。

 

2、  I/O

该触点用作输入(接收模式)或输出(发送模式)。通过触点I/O的信息交换使用了以下两种逻辑状态(如GB/T 3453-1994中定义):

—— 状态Z,如果卡和接口设备处于接收模式或者该状态由发送方强制。

—— 状态A,如果这个状态是由发送方强制。

当线路的两端处于接收模式时,这条线路应处于状态Z(高状态)。当线路的两端处于不匹配发送模式时,则该线路的逻辑状态可能是不确定的。在操作期间,接口设备和卡不应都处于发送模式。

当输入电压在允许范围内时,接口设备应能支持规定范围的输入电流。接口设备应对卡呈现一个阻抗,以使接口设备不妨碍卡能保持输出电压在规定的范围内。

 

3、  CLK

该触点用来向提供时钟信号。时钟信号的实际频率由f指定。

在稳定工作期间,时钟信号周期的占空比应为40%~60%。当频率从一个值切换到另一个值时,应注意保证没有比卡允许的最短周期的40%更短的脉冲。当切换频率值时,没有信息被交换。对于切换频率值,建议使用两个不同的时间:

—— 在复位应答后立即进行,或

—— 在一次成功的PPS交换后立即进行。

 

4、  RST

该触点用来向卡提供复位信号,有冷复位和热复位

 

5、  VPP

在B类操作条件下,该触点保留待将来使用。

在A类操作条件下,该触点可用来向卡提供为了写或擦除内部非易失性存储器所要求的编程电压。表6定义了触点VPP上的两种激活状态:暂停状态和编程状态。除非卡要求编程状态,接口设备应将触点VPP保持在暂停状态。

 

二、卡的操作过程

当卡的触点与接口设备的触点在机械上被连接时,电路才被激活。

接口设备和卡之间交互应通过下列条款规定的连续操作来进行。

—— 接口设备激活电路;

—— 卡和接口设备之间的信息交换总是起始于卡对冷复位的应答;

—— 接口设备停活电路。

电路的停活序列应在卡的触点和接口设备的触点机械断开前结束

 

1、  激活

为启动与机械上连接的卡交互,接口设备应按下图所示下列次序来激活电路:

—— 将RST置为状态L;

—— 按照接口设备所选择的操作条件:A类或B类,VCC应被加电;

—— 将接口设备上的I/O置于接收模式;

—— 在A类条件下,VPP应置于暂停状态;在B类条件下,VPP保留待将来使用;

—— 应为CLK提供时钟信号。至少在复位应答期间,时钟的频率f应在以下范围内:

●      1~5MHz,A类,或

●      1~4MHz,B类。

电路的激活序列结束(RST为状态L,VCC加电,接口设备上的I/O为接收模式,当操作在A类时VPP为暂停状态,为CLK提供一个合适且稳定的时钟信号)后,按规定的时序,卡准备好冷复位。

 

 

2、  信息交换

如果卡支持操作条件的类别,则卡应对任何复位进行应答。在任何复位应答完成后,接口设备可启动卡的热复位。对于热复位的应答可能会与对前一个复位的应答不同,而无论前一个复位是冷复位,还是热复位。在完成一个指明协商方式的复位应答后,接口设备可按照规定启动PPS交换。

命令的操作规程取决于传输协议。主要有以接口设备为主的异步半双工字符传输和异步半双工块传输。当从卡没有传输(相当于一个命令完成后和另一个命令启动前),如果卡支持时钟停止,则接口设备甚至可以停止时钟信号。

 

2.1、冷复位

按上图,在Ta时刻对CLK施加时钟信号。在施加到CLK的时钟信号的200个时钟周期(ta)(时间段taTa之后)的范围内,卡应把I/O线置为状态Z。在时钟信号施加到CLK后,通过将RST保持在状态L至少400个时钟周期(tb)(时间段tbTa之后)来复位卡。

Tb时刻,RST被置于状态H。I/O上的应答应在RST上信号的上升沿之后的40040000个时钟周期tc)(时间段tcTb之后)之间开始。

在RST处于状态H的情况下,如果应答在40000个时钟周期内仍未开始,则RST上的信号应被返回到状态L,且接口设备将电路停活。

 

2.2、热复位

按图,接口设备通过将RST置为状态L至少400个时钟周期(时间段te)来启动热复位,同时VCCCLK仍保持稳定

Td时刻,RST置于状态H。I/O的应答应在RST上信号上升沿之后400到40000个时钟周期(tf)(时间段tfTd之后)之间开始。

在RST处于状态H时,如果应答在40000个周期内开始,应将RST上的信号返回状态L,且接口设备将电路停活。

 

 

2.3、时钟停止

当接口设备认为从卡没有传输且I/O保持状态Z至少1860个时钟周期(时间段tg)时,则按下图,接口设备可停止CLK上的时钟(在Te时刻)。

当时钟被停止(从Te时刻到Tf时刻),CLK应被保持在状态H或状态L;这个状态由参数X来指出。

Tf时刻,接口设备重启动时钟,I/O上的信息交换在至少700个时钟周期之后(时间段thTf之后)继续进行。

 

3、  停活

当信息交换结束或放弃时(例如,无卡响应或检测到卡移出),接口设备应按图所示下列顺序停活电路。

—— RST被置为状态L;

—— CLK置为状态L(除非时钟已停止在状态L上);

—— VPP被停活(如果它已被激活);

—— I/O置为状态A;

—— VCC停活。

 

 

 

 

转载于:https://www.cnblogs.com/wuyida/archive/2012/10/26/6300044.html

相关文章:

  • 日记(docker)
  • 浅谈使用Fiddler工具发送post请求(带有json数据)以及get请求(Header方式传参)(Header方式传参)...
  • Windows 8 微软官方 MSDN版 下载
  • Microsoft Power BI Desktop概念学习系列之Microsoft Power BI Desktop是什么?
  • 各种数据库的注入方法
  • git小技巧
  • 如何让ssh连接服务器或者sshtunnel保持连接呢?
  • 自从有了暴风AI无屏电视Real6,我想撤回所有买过的电视……
  • C/C++内存泄露及其检测工具
  • Silverlight缩略图生成(使用WriteableBitmap类)
  • 图像处理滤波应用(Halcon)
  • SQL快速查找
  • 21-Heartbeat配置文件authkey重要参数讲解
  • 手机不可以上网
  • springmvc+myabtis+dubbo分布式平台-maven构建根项目
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Angular2开发踩坑系列-生产环境编译
  • angular2开源库收集
  • Js基础知识(一) - 变量
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • 反思总结然后整装待发
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 排序算法之--选择排序
  • 微信支付JSAPI,实测!终极方案
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • (4)STL算法之比较
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (三)c52学习之旅-点亮LED灯
  • (译)计算距离、方位和更多经纬度之间的点
  • (转) RFS+AutoItLibrary测试web对话框
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net 知识杂记
  • .so文件(linux系统)
  • @angular/cli项目构建--http(2)
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [BT]BUUCTF刷题第4天(3.22)
  • [BUUCTF 2018]Online Tool(特详解)
  • [C/C++]关于C++11中的std::move和std::forward
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [dfs] 图案计数
  • [go] 策略模式
  • [HOW TO]如何在iPhone应用程序中发送邮件
  • [IE编程] 如何编程清除IE缓存
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装