首页 技术 正文
技术 2022年11月17日
0 收藏 672 点赞 4,362 浏览 5379 个字

WWT:Work Waiting Time

ATR:Answer To Reset,复位应答

etu =F/Df

1.     PSAM概述和应用

PSAM(PurchaseSecure Access Module):销售点终端安全存取模块

SAM(Secure AccessModule):安全存取模块

用于支持消费交易的SAM成为PSAM,用于支持充值交易的SAM成为ISAM

PSAM符合《中国金融集成电路(IC卡)PSAM卡规范》,

包括普通PSAM卡和高速PSAM卡。

PSAM符合以下标准及规范:

识别卡,带触点的集成电路卡标准

《ISO/IEC 7816-1/2/3/4》

《中国人民银行PSAM卡规范》

……….

支持多种通讯协议:接触界面支持T=0(字符传送)和T=1(块传送)通讯协议。

PASM常用于脱机交易的安全认证,比如我们一个客户,在用手持设备读取公交卡的时候,先和PSAM卡通信,以便确认这个手持机是否有资格从公交卡上扣钱,如果吻合才能扣钱

安装PSAM卡以后,该消费终端就获得了系统运营商的许可,有权鉴别卡片的真伪,有权从卡上的钱包扣款

PSAM卡,存放消费安全控制密钥并具有计算功能的特殊接触式CPU卡,此卡放置在收费车道的终端设备中,用于完成消费过程中用户卡和车道终端之间的安全认证功能。

2.     PSAM硬件设计

先来借用一张设计框图:

PSAM读卡芯片TDA8007BHL开发

图1

2.1   TDA8007BHL简介

控制器通过TDA8007BHL的并行接口(D0~D7)

TDA8007BHL满足ISO 7816、GSM 11-11、EMV4.2和EMV2000所有的要求,依靠地址寄存器AD0~AD3,可以对非复用(non-multiplexed)的8位数据总线编址。通过复用访问可以对TDA8007BHL/C3进行编址。内置的ISO UART和超时计数器,就算是非实时限制的高波特率情况下,也便于使用。

主要特性如下:

(1)  通过8位并行接口控制和通讯,兼容复用和非复用的存储器访问。,其中TDA8007BHL/C3可以通过复用内存访问来编址。

(2)  特有的ISO UART和并行访问输入/输出用于自动的常规处理,通过频率或是分频因子的编程,可以获得不同的波特率。对T=0协议进行字符级的错误管理和附加有保护时间寄存器。

(3)  接收模式的FIFO可以接收1到8个字符。

(4)  接收模式和发送模式下都有奇偶校验计数器,在发送模式下可用于重发。

(5)  两个VCC发生器:可以提供5V(A类)、3V(B类)和1.8V(C类)的供电电压(为卡供电)。

(6)  双卡时钟可到10MHz,提供3次同步倍频(with three times synchronous frequency doubling).

(7)  卡断电模式下支持卡时钟停止(高或低电平)或是1.25MHz(内部振荡器)。

(8)  通过独立的序列发生器提供自动激活和停活序列。

(9)  遵循ISO 7816和EMV4.2,支持异步协议T=0和T=1。

(10) 全能的24位超时计数器为复位应答(Answer To Reset:ATR)和等待时间提供处理。

(11) 特定基本时间单元(Specific Elementary Time Unit:ETU)计数器提供块保护时间(Block Guard Time:BGT):22 in T=1和16 in T=0。

(12) 接收模式下两个字符的最小延时。

TDA8007BHL的原理图涉及如下:

PSAM读卡芯片TDA8007BHL开发

图2

应该去掉此图的R816和R818,以便判断卡的插拔这些动作。

2.2   TDA8007BHL主要引脚

(1)  PRES1和PRES2:用于指示是否插入SAM卡,如果插入为高电平,但我们这里没有用到,直接接到VDD-TDA8007B(3.3V)。

(2)  RST1和RST2:卡1和卡2的复位输出引脚,用于复位SAM卡。

(3)  I/O1和I/O2:连接卡的ISO C7引脚,用于和卡进行读写数据。

(4)  CLK1和CLK2:卡1和卡2的时钟引脚,用于为卡提供时钟。

(5)  /RD:读或是写选择,高为读,低为写。

(6)  /WR:使能引脚,和/CS功能一样(低电平选中)。

(7)  /CS:片选,低电平选中。

(8)  ALE:TDA8007BHL/C4 NC,对于TDA8007BHL/C3,如果是复用配置,则为地址锁存使能引脚,如果为非复用配置,直接连接到VDD。

(9)  /INT:NMOS中断输出(低电平有效)。

(10) INTAUX:辅助的中断输入。

(11) D0~D7:数据0~7的输入/输出引脚,对于TDA8007BHL/C3,如果在复用配置,则复用为地址0~7引脚。

2.3   TDA8007BHL读时序图

PSAM读卡芯片TDA8007BHL开发

图3

读操作时,RD=高电平,当CS和WR都为低电平时,根据地址信息被选中的数据在D0~D7总线上有效,此时主控就读取出来了。

2.4   TDA8007BHL写时序图

PSAM读卡芯片TDA8007BHL开发

图4

写操作时RD=低电平,当CS和WR都为低电平时,总线上的数据被写入到TDA8007BHL芯片中。

2.5   控制寄存器

TDA8007BHL有两个完整的可以驱动卡1和卡2的模拟接口,这两个卡数据的读写共享相同的ISO UART,卡3数据的读写需要外部接口(比如使用一个TDA8020或是TDA8004),也可以共享这个ISO UART。也就是说TDA8007和卡实际上是通过UART来通讯的,而且是只有一个I/O,所以在同一时刻,只能往卡写数据,或是从卡读取数据。

PSAM读卡芯片TDA8007BHL开发

图5

卡1、卡2和卡3有专门的用于设置ISO UART参数的寄存器,如下图:

PSAM读卡芯片TDA8007BHL开发

图6

这些寄存器如下:

ProgrammableDivider Register(PDR):可编程分频器寄存器

Guard TimeRegiser(GTR):保护时间寄存器

UART ConfigurationRegister1(UCR1):UART配置寄存器1

UART ConfigurationRegister2(UCR2):UART配置寄存器2

ClockConfiguration Register(CCR):时钟配置寄存器

由上图可以看出卡1和卡2也有自己专用于控制它们电源和时钟配置的寄存器,卡3的PCR(Power Control Register)由外部控制,PCR寄存器也用于读或是写辅助卡触点C4和C8的值。

卡1、卡2或是卡3通过CSR(Card Select Register)选中,当一个卡被选中,ISO UART就可以使用相应的参数(比如CSR寄存器的SC1~SC3)。CSR寄存器还包含了用于复位ISO UART的位/RIU(=0复位ISO UART)。上电之后这位被复位,而且在开始任何一个卡之前这位必须被设置为1,在需要的时候软件可以设置它。

当卡具体的参数被编程后,UART可能使用下列的寄存器:

UART ReceiveRegister(URR):UART接收寄存器

UART TransmitRegister(UTR):UART发送寄存器

UART StatusRegister(USR):UART状态寄存器

Mixed StatusRegister(MSR):混合状态寄存器

在接收模式下,一个支持1到8个字符的FIFO可以被使用,这可通过FCR(FIFO Control Register)来配置FIFO的具体长度。在发送模式下,FCR也可用于NAK(无应答)字符的自动发送。

HSR(HardwareStatus Register)给出电源电源的状态、硬件保护的状态和卡是否有移除的状态。HSR和USR在它们一些位改变时,通过/INT引脚发出中断。

MSR寄存器不能产生中断但可以使用查询模式来做一些操作,在这种情况下,USR和HSR寄存器的一些中断源将被屏蔽。

在往TOR1(Time-Out Register)、TOR2和TOR3寄存器写入一些ETU(Elementary Time Unit),超时后一个24位超时计数器就给出一个中断,这可帮助主控在处理不同实时任务(ATR、WWW1、BWT等等)时比较有用。这个计数是通过配置TOC(Time-Out Configuration)寄存器来完成的。可以用作一个24位计数器或是一个16位的外加一个8位的计数器。一旦计数输入被写入,或是检测到I/O的START位,或是作为自动装载,都可使每个计数器就开始计数。

PSAM读卡芯片TDA8007BHL开发

图7

2.6   ISO7816Security(安全性)

两个特定序列发生器确保卡激活(activation)和失活(deactivation)正确的顺序(sequence),时钟通过内部振荡器的分频因子(division ratio)来定义。

只有在卡存在(PRES引脚为高电平,通过寄存器MSR的PR1和PR2可以判断)和供电正确(voltage supervisor not active)的情况下,才有可能激活卡(通过设置PCR的START=1来激活)。可以通过寄存器HSR的PRL1和PRL2来通知主控卡插拔的动作

在通讯过程中,如果卡拔出,或是短路(short-circuit),那么序列发生器执行一个自动的紧急失活操作。在电源电压下降(a supply voltage drop)或是过热(overheating)的情况下,两个卡自动失活。这时HSR寄存器被更新和/INT引脚为低电平(低电平触发中断),这样系统主控就可以知道发生了哪些事情了。

2.7   Activationsequence(激活顺序)

卡在没有激活的情况下,引脚VCC、CLK、RST、C4X、C8X和I/O引脚为低电平和对地低阻抗、升压转换器(step-up converter)停止工作。

当所有条件满足(供电电压、卡在位和没有硬件问题),系统主控就可以开始一个在位的卡的激活顺序。在选择卡和离开UART复位模式后,接着配置计数器(counters)和UART所需要的参数,在t0时刻可以设置PCR寄存器的START位

PSAM读卡芯片TDA8007BHL开发

图8

2.8   Deactivationsequence(失活顺序)

当和卡的通讯完成之后,主控在t10时刻重置(reset)PCR寄存器的START位,电路然后就执行一个自动失活序列,如下图:

PSAM读卡芯片TDA8007BHL开发

图9

2.9   涉及的几个频率

PSAM读卡芯片TDA8007BHL开发

图10

fXTAL:晶体振荡器频率,给TDA8007BHL提供时钟,这里为14.785MHz。

fint:内部振荡器频率,给TDA8007BHL的step-up converter(升压转换器)提供时钟。

fCLK:时钟频率,给卡提供时钟。

3.     PSAM驱动实现

3.1   激活的流程图

PSAM读卡芯片TDA8007BHL开发

图11

3.2   复位及复位应答

PSAM读卡芯片TDA8007BHL开发

图12

此过程需要注意几点:

(1)  复位ISO UART

当复位时,会把UART大部分寄存器重置为它们原始的数值。在任何激活之前必须先重置/RIU(=0)引脚,且要保证逻辑0至少10ns以上。任何UART发生操作之前,必须通过软件先设置/RIU=1。

(2)  设置FIFO长度

设置FSR寄存器的FL[2:0]=111,就是说当FIFO有8个字节的数据后就会触发。

(3)  设置奇偶校验统计

对于接收模式,PEC[2:0]决定允许反复接收的次数。PEC[2:0]=000表明发生1次奇偶校验错误后就设置USR寄存器的PE=1,PEC[2:0]=111在发生8奇偶校验错误后就设置USR寄存器的PE=1。

在T=0协议下,如果在编程错误计数达到PEC[2:0]设定的值之前收到一个正确的字符,错误计数器将被重置。

如果PEC[2:0]设定的奇偶校验错误统计值达到之后就设置USR寄存器的PE=1,直到USR寄存器被读取。

对于发送模式,如果一个发送的字符没有收到卡相应的应答,那么TDA8007BHL/4就会自动重发PEC[2:0]规定的次数,这个字符保持有效的时间为15个ETU。

(4)  设置可编程分频寄存器(PDR)

PSAM读卡芯片TDA8007BHL开发

图13

CKU=0,选择fCLK;CKU=1,选择2fCLK。PSC=0,则PRESCALER=31;PSC=1,则PRESCALER=32。

(5)  设置串口配置寄存器2(UCR2)

PSAM读卡芯片TDA8007BHL开发

图14

我们fXTAL=14.745MHz,卡的fclk= fXTAL/4=3.686MHz(CCR寄存器的AC[2:0]=010决定的),结合图13,应该设置PSC=31

(6)  设置UCR1的软件约定设置SS(Software convention Setting)

为了自动约定监测(automatic convention detection)和过早应答的监测(early answer detection),在ATR之前需要先设置SS=1。在接收到初始字符TS(复位应答的第1个字节)后之后的10.5ETU时间点,硬件会自动重置此位。

(7)  获取混合状态寄存器MSR的FE判断是否有接收到数据

只要接收到一个字符到FIFO中,FE就被设置为1。

3.3   停活

PSAM读卡芯片TDA8007BHL开发

图15

此过程需要注意几点:

(1)  卡的选择

复位后默认情况下是没有选择任何卡的,而且每个卡的选择都是一次选择一个,也就是CCR的SC1、SC2和SC3一次只能设置其中一位。

(2)  卡的停活

先选中卡之后,设置PCR寄存器的START=1时,被选中的卡就会停活。在紧急停活的情况下,START自动被设置为1,为了停活选中的卡,只需要设置START。

参考:

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289