PSAM嵌入式驱动——原理

前言

本部分内容是前一篇《PSAM嵌入式驱动——概念》的后续篇,本节主要是PSAM做驱动开发要了解的一些基本原理,在此一一阐述,部分内容也是借鉴前辈基础上,加上实践中整理及理解,与项目实际密切相关。

一、PSAM基本交易过程

在这里插入图片描述
一般含PSAM的交易终端交互过程如上图,对于嵌入式驱动而言,前四部分是需要实现的,后的步骤都是APDU指令交互的重复,即驱动无关。只需关注如下几个概念即可:

  • 时钟要求:
    CLK提供时钟信号:
    A类:1~5MHz
    B类:1~4MHz

  • 冷复位:
    VCC和VPP上电后,加CLK,在200个CLK周期以内将I/O置于状态Z,加时钟后置于RST为状态L,并保持400个CLK周期。然后将RST置为H,在RST置为L结束后的400到40000个CLK周期里CARD将应答复位,否则接口释放电路。

  • 热复位:
    冷复位是在稳定的VCC和CLK期间,将RST置为L 400个CLK周期,在RST的上升沿后的400到4000个CLK周期里接口设备的I/O将受到复位应答,否则接口释放电路。

二、复位应答ATR

1. 数据格式

在这里插入图片描述
这是ISO中给出的,简单理解复位答复的格式:
在这里插入图片描述

2. 格式解析

  • TS:称为初始字符,他后面最多跟32个字符。
  • T0:为格式字符(强制)。
  • A1、TB1、TC1、TD1、……TA(i) 、TB(i) 、TC(i) 、TD(i)为接口字符(可选)。
  • T1、T2、……….TK为历史字符(条件)。

1)TS初始字符

定义后继字符的解码协议。
在这里插入图片描述

它有两种形式:

  1. LHHLLLLLLH(3F)建立一个极性反相协议,m2时刻传输最高有效位(msb)。

  2. LHHLHHHLLH(3B)建立一个正常的协议,并且m2时刻传输最高有效位(Lsb)。

2)T0格式字符

他由两部分构成Y1(m8m5),K(m4m1)。

  1. Y1(m8~m5)说明后继的TA1、TB1、TC1、TD1是否存在

  2. K(m4~m1)他是传输协议的编码。常用的有T=0(异步半双工字符传输协议)和T=1(异步半双工块传输协议)。

3)接口字符

  • 接口字节采用逐层嵌套的方式来表示的:
  • 第一层TA1、TB1、TC1、TD1是否存在由T0的高4位决定;
  • 第二层TA2、TB2、TC2、TD2是否存在则由TD1的高4位决定;
  • 依此类推,每层的TDi的高4位都决定了下一层的TA(i+1)、TB(i+1)、TC(i+1)、TD(i+1)是否存在。
  1. TD(i):他也由两部分构成Y(i+1)(m8~m5)说明后继的TA(i+1)、TB(i+1)、TC(i+1)、TD(i+1)是否存在。

  2. TA1、TB1、TC1、中的T是对FI、DI、II、PI1、N、PI2、XI和UI等参数进行编码。这些参数是用来计算F、D、N、P、I、X和U的值。
    (F,D用来计算ETU,P、I可编程电压和最大可编程电流,N是用于从接口设备到发送字符的卡的额外保护时间。X为时钟停止符,以及CLK上电是优先选用的状态。U为级别指示符:指明卡的操作级别)。

  3. TA(2):专用模式字节,描述了卡操作专用模式的有关特点

  4. TB(2):用八位上的编程电压值PI2编码以代替PI1

  5. TA(i):在TD(i-1)(i>2)中的T=15的第一个出现后编码。XI,位b8b7上时钟停止指示的参考,UI,位b6到b1上级别指示的参考。

  6. 在TD(i-1) (i>2)中的T=15后正常忽略TA(i) TB(i) TC(i)所不支持的协议的接口字节特性。

3.分频因子和波特率调整因子(Fi/Di)

在这里插入图片描述
在这里插入图片描述

  • 1etu =(F/D) * (1/f) ,卡上电时默认F = 372, D = 1,所以1etu = 372/3.579Mhz=
    103us,也就是每一位是103us,对应波特率为9600。

三、PPS

  • 关于此协议参数协商部分,ISO中这样定义
    在这里插入图片描述
    在这里插入图片描述

  • 主要包括通讯协议,字符传输速率,以及超时等待时间和数据块的大小等。

    如果卡片在ATR里给出的信息表明其可以支持若干种通讯协议,终端该如何和它打交道呢?

  • 相当于卡片用默认的“英语”告诉终端“I can speak English, Chinese, Japanese, French.”

  • 这个时候终端可以进行协议选择(PPS)也可以不选择直接使用默认协议,如果进行协议选择的话,那么PPS就是终端在收到ATR后发出的第一个指令,相当于终端告诉卡片“OK, Let’s speak in Chinese.!”,然后它们“就可以用中文拉呱了”。

  • 如果不进行协议选择的话,终端则使用默认的协议给卡片发送其他的APDU指令,相当于二者使用默认的英语进行后续对话,
    其实就目前项目接触而言,绝大多数的卡,不使用PPS也是可以正常交互的,只有少数卡,不使用PPS无法进行后续交互。

四、APDU交互

  • APDU交互ISO中定义了T=0和T=1两种协议,具体的如下:- List item在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    简单而言,就是APDU的交互遵循两种数据交换格式。

总结

  • 原理性的东西,大概理解下就好,具体用到时再对照标准看下就好,后续篇章将讲解嵌入式MCU中如何实现…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值