你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32单片机的PSAM卡驱动模块设计

[复制链接]
STMCU小助手 发布时间:2023-1-7 11:58

1. PSAM卡简介

  PSAM 卡是接触式CPU卡的一种。CPU卡也称智能卡,卡内集成电路带有微处理CPU,存储单元(包括随机存储器RAM、电可擦除存储器EEP ROM、程序存储器ROM)及芯片操作系统(Chip Operating System,COS)。装有COS的CPU卡不仅具有数据存储功能,同时具有命令处理和数据安全保护等功能。CPU卡芯片相当于芯片内装置了一个微处理器,其功能大致与一台微型计算机相同。在生活中,人们常使用的集成电路卡(IC卡)上的金属片就是CPU芯片。由于CPU卡具有存储空间大、处理能力强、信息存储安全、支持一卡多用以及读取速度快等优点,已经被广泛用于金融、交警、保险和政府行业等领域,并通过国家密码委和中国人民银行的认证。


. J$ F: A$ e3 k& E& M( L

  就外型而言,CPU卡与普通IC卡、射频卡相比无明显差别,但是使用性能、安全性却有巨大提升,这主要源于CPU卡内含有随机数发生器、3DES加码算法、硬件DES和3DES加密算法等,配合操作系统就可以达到金融级别的安全等级。减值密钥一般存储在PSAM卡中,通过PSAM卡对IC卡进行减值操作,实现安全扣款。在非接触逻辑加密卡的系统中,PSAM卡主要使用卡片认证密钥和各扇区的KEYA、KEYB密钥来产生非接触逻辑加密卡操作所需要的各扇区的 KEYA和KEYB认证码,交易信息不直接参与运算。而在非接触CPU卡系统中,PSAM卡通常用来计算和校验消费交易过程中出现的MAC码,同时在计算的过程中,交易时间、交易金额、交易类型等交易信息也都参与运算,使得交易更安全可靠。某些情况下,非接触CPU卡系统中的PSAM卡还可以用来支持安全报文更新数据时MAC的计算,以及交易TAC的验证。


7 Y; u( G; M' }& c4 d) V8 a" u6 a

  卡片内部逻辑结构如图1所示。

    

1951407979661.jpg ( A( C6 |3 m4 T

  其中CPU及加密逻辑保证EEPROM中数据的安全,使外界不能使用非法手段获得EEPROM中的数据。RAM是在COS 工作时存放命令参数、返回结果、安全状态以及临时工作密钥的区域。ROM用于存放COS程序。EEPROM中存放用户应用数据区域,COS将用户数据以文件的形式保存在EEP ROM中,当安全条件满足规定时,可以读/写文件。

8 [' w- B$ Q0 M( ^: A* q% ^

  2. 硬件设计

  2.1 PSAM卡电路设计

  2.1.1 PSAM卡电源切换模块

  ISO7816 协议里规定2种使用较多的,PSAM卡的类别(A类、B类),A类需要提供5 V电压,B类需要提供3V电压,为了保证对于两种类别卡的兼容性,要求设计的读写器,可以提供选择5V或者3 V的电压。于是本论文设计了如图2所示的电源切换模块。其工作原理是:PSAM POW为高时,P沟道的MOS管导通,提供5 V电压给PSAM_VDD,PSAM_POW为低时,P沟道的MOS管不导通,提供3.3 V电压,再经过二极管的压降,提供3 V电压。

    

72821407979661.jpg 1 S0 x. x, @1 [/ E  R

  2.1.2 PSAM卡复位信号

  同样考虑到PSAM卡的两种类别,尤其是当PSAM卡为A类的时候,主要考虑MCU的I/O口电压是3.3V,而PSAM卡需要的是5 V,防止复位电平不够,将PSAM_RST1信号通过三极管与SAM_RST1相连,以增强驱动能力。其中PSAM_RST1与MCU相连,SAM_RST1与PSAM卡相连。具体电路如图3所示。

    

44361407979662.jpg 6 @+ Y3 R, c* Z7 ~9 f+ P
4 b; R! G* ]% b# c% E  C4 K5 E7 E3 i
! c3 J; T4 R% {0 o3 E
  2.1.3 PSAM卡数据口电平转换电路8 X* {1 |2 P# W9 X. }
9 y: h8 M% b( A; U& F4 c
- j4 m# i6 O0 V$ k5 z: E7 O/ u# t
  为了保证MCU接收到的信号是3.3 V,设计了PSAM卡数据口电平转换电路,具体电路如图4所示,当PSAM卡是A类的时候,需要将5 V电压转换为3.3 V,这时在图4电路中,只需要焊接上两个三极管(Q1、Q2),不需要焊接电阻R,当PSAM卡是B类的时候,只需要焊接上电阻R,不需要焊接两个三极管 (Q1、Q2)。
# h6 W7 Q) W2 x: Q. M
5 m: R# ~& x6 E) q) y5 d% S

, J; x( D" |- n* i; S6 I- x  2.1.4 PSAM卡卡槽电路接口+ [, l- Y3 h6 k. K& F" p7 c

5 \: }7 Z: `4 P4 _- p: Z# _

+ v( A. ^( w. k1 r9 D  PSAM 卡卡槽电路接口如图5所示。由于是低电平复位,在RST端口需要接上PSAM VDD信号,在正常工作的时候将电平拉高。数据脚(DATA)正常情况下也需要上拉,这是为了防止电平幅度不够,尤其在5 V的时候,通过电平切换的信号是3.3 V,必须上拉到5 V才行。
7 {: o( n* [1 i) w2 j1 g2 g
% v# \2 U6 O5 G# H! `" X
+ @: i, a& A4 V+ h0 E$ _- Z' d
  2.2 主控模块设计
( u' c4 r. V  w3 a* F1 T) x/ P0 y( z) X7 ]& Z
4 q4 b/ t. o: a+ i- N, A
  图 6为主控模块以及相关的外围电路的原理图。主控模块选用的是STM32F103C8T6芯片。OSC32_IN、OSC32_OUT两个引脚外接 32.768 kHz的低速外部晶振,可以用其驱动实时时钟RTC。OSC_IN、OSC_OUT两个引脚外接8 MHz晶振,通过设置STM32的相关寄存器经过PLL倍频之后产生72 MHz的STM32系统时钟(SYSCLK)。C1、C2作为晶体的匹配电容。为了使晶振更加容易启振,在晶振旁边并联1 MΩ电阻(R)。主控模块低电平复位,电阻上接高电平,电容在下接地,中间位RST。具体工作原理是在上电时给电容充电,电容给RST一个短暂的低电平,此低电平随着VCC给电容充电的过程中变高。: U% |/ B7 [- u. ~9 t

    

98631407979663.jpg
2 }6 i* Q5 O0 s4 P/ c% B. i) _1 n( B# m2 ^+ Q$ d3 x' ]% M

  3. 软件设计

  对于PSAM卡的软件驱动设计要符合ISO7816—4协议。应用协议数据单元(APDU)可包含有命令报文或响应报文,它从接口设备发送到卡,或者相反地由卡发送到接口设备。

+ L- r3 {2 p- K, R

  APDU指令的格式如表1所列。

    

88491407979663.jpg % p! v  ?3 c9 l! [. V
  C7 X: `4 |$ a+ z

  APDU指令的命令头内容如表2所列。

  APDU指令响应结构如表3所列。

  APDU指令响应内容如表4所列。

    

44961407979664.jpg
+ z' a- v/ z) g' U5 u
5 S* i) I- ~5 o/ j6 ~

  (1)主要的数据结构

  Typedef struct{

  u8 Cla; //命令的类型

  u8 Cmd; //命令的编码

  u8 P1; //具体命令参数1

  u8 P2; //具体命令参数2

  u8 P3; //在发送模式的为Lc;//在接收模式时为Le

  u8*Data_Ptr;//命令和相应的数据字段

  u8 RspCode[2];//APDU响应的内容

  }APDU;

9 N5 |7 b1 W/ i. A8 t0 z

  (2)主要功能函数

  ①函数名:PSAM_APDU_Out

  功能描述:读取智能卡的数据。

  参数:*Data_out,返回从智能卡中读出的数据SAMConfig,智能卡的配置。

  返回值:读取数据成功标志(0为失败,1为成功)。

  ②函数名:PSAM_APDU In

  功能描述:向智能卡写数据。

  参数:*Data_in,向卡上写入的数据SAMConfig,智能卡的配置。

  返回值:写入数据成功标志(0为失败,1为成功)。

  ③函数名:PSAM_Send1 Byte

  功能描述:向智能卡发送1字节数据,并判断接收方是否成功接收。如果没有成功,则向收方发送两次该数据。

  参数:SendByte,待发送的字节数据。

  返回值:SendStatus,数据发送是否成功标志(成功为0x01,失败为0x00,超时为0xFF)。

  ④函数名:PSAM_Send1Block

  功能描述:向智能卡发送n个字节数据。

  参数:*SendPtr,待发送的字节数据指针;DataLen,传送的字节数;ByteDir,字节方向。

  返回值:SendStatus,数据发送是否成功标志(成功为0x01,失败:0x00)。

  ⑤函数名:PSAM_Receive1Byte

  功能描述:接收智能卡的1字节数据,当检测到奇偶出错时,可请求2次智能卡从发当前字节数据。

  参数:无。

  返回值:DataBuf,其中高字节是数据接收是否成功标志(成功为0x01,失败为Parity error(0x55),timeout overflow(0xff))低字节是收到的有效字节数据。

  ⑥函数名:PSAM_Reset

  功能描述:对智能卡进行复位操作,并等待智能卡的应答,如果应答成功则返回复位成功标志,否则返回复位失败标志。

  参数:*uiATR,保存复位应答信息的指针。

  返回值:复位成功标志(0x01为复位成功,0x00为复位失败)。


6 {! w% u" J# _5 C

  4. 模块测试

  通过串口调试助手对系统进行测试,分析发送和返回的数据,判断该模块工作是否正常。图7为发送对PSAM卡的复位操作的命令。图8为发送对PSAM卡进行透明数据流传输的命令。

    

43741407979665.jpg
7 f" _7 {$ |$ }1 f7 H+ t( P% Y  R3 s1 K/ F$ L% j  V* L

  结语

  本文设计的PSAM卡驱动模块,根据上述软件和硬件的设计思路进行的设计得到了实际的验证,取得了令人满意的效果。无论是软件的代码还是硬件的电源转换模块都具有很好的可移植性,方便在不同的系统中应用,并且提供了对外的接口函数,方便上层系统应用工程师的调用。该模块可以应用到固网支付、POS终端等设备上。

3 O" h# x# _* y, e6 y9 A) L

转载自:xqhrs232


  }( Y' T1 a4 {4 k# h
* T/ w1 u, E! ]( C7 ?4 K$ }
收藏 评论0 发布时间:2023-1-7 11:58

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版