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

【中文文档】AN2598_使用STM32F101xx和STM32F103xx的智能卡接口

[复制链接]
STMCU-管管 发布时间:2019-4-24 10:33
使用 STM32F101xx 和 STM32F103xx 的智能卡接口
: _3 _& k* @; U6 h( l2 V1 X

, e9 f4 j+ i% ^( `简介 5 K6 \7 R2 {7 c5 g) S# h, `8 Q0 _
* X: m! J8 s7 S+ A' w( m1 S
本文叙述了如何使用STM32F10xxx的USART模块实现智能卡接口解决方案,包括固件和硬件接口的实现。该固件和硬件包的目的是提供相应的资源,使用户使用USART模块的智能卡模式,更加便捷地开发应用程序。 5 ~0 H3 Y7 u* \7 L7 n: R' D

; J( ^' ~* W) \; q# N4 s这个固件接口包括支持ISO 7816-3/4规范的库文件,同时提供基于ST的STM3210B-EVAL和STM3210E-EVAL评估板的应用程序示例。 - C% V, x3 z3 \
4 X, u, s0 G! X/ h- {% t: @
本文档及其相关的固件可以从ST的网站下载:www.st.com , [$ o7 {, J& f* v. R: H- x% |0 ]5 _
/ A: N8 w0 r( E7 X& j$ u. S/ T
术语表
0 E( a+ I4 R5 u! f  ?! n/ r6 N" n3 H9 A" G) X+ k! g- G) r
小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。
7 b# C+ w! t) W+ N5 p
! m! _: |1 P% |; X5 z# K中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。在ST的STM3210B-EVAL评估板上集成的即为中容量产品。
# N" N8 Y" H/ Z# Y7 h; s" T

- s* ~% e8 H8 C) ?4 S大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。在ST的STM3210E-EVAL评估板上集成的即为大容量产品。5 F& b3 o( p0 t' C. V7 u' z' _
, T6 ]" ^+ X+ c, \/ ~
1 智能卡接口
$ z) c9 I$ ?! X( E7 D! _6 H
5 Y1 w1 W' g) x) c9 ~1.1 简介
) v5 v" Q# w3 @; ~4 |9 n

$ [- L4 g: {8 w7 T& x智能卡接口是在USART模块的智能卡模式下开发的。关于USART寄存器的描述,请参阅STM32F10xxx参考手册。USART智能卡模式支持ISO 7816-3标准中定义的异步智能卡协议。
. {3 C2 o  W6 s4 b$ K% C. v8 s. `
' ?% {2 Z$ x% h" x
在使能智能卡模式的情况下,必须如下配置USART模块:% \" s5 y8 J; g# V5 @/ E. a
● 8位数据位加上奇偶校验
: Q8 S# k8 q0 i- t6 s7 t2 g ● 0.5或1.5位停止位
- M# X, p4 y2 n% J4 l# X( o
& B1 y5 x! [5 E% |一个5位的预分频器和智能卡时钟发生器为智能卡提供时钟。智能卡接口的其他功能则由软件配合GPIO口实现。
7 o: ^1 ^6 P* ?& E0 I* O7 o
6 A! O0 r* T9 V1 F" J6 b- e
软件中不处理ISO 7816-3中定义的反向信号传输约定,反转数据和最高有效位优先的情况。
  d/ ]. a3 C/ f. ^/ U
  w3 _  X/ b( ?5 q: O$ E
1.2 外部接口
1 E0 A7 ^  f" P- l2 ~& y( y6 L- K7 s$ R6 \8 ]- j
表1 智能卡引脚% d' ?9 O% ~; }5 F- L/ i4 T
1.png
% T% i2 ?0 T3 @3 a$ I. T, I
Smartcard_RST(智能卡复位)、Smartcard_3/5V(3V或5V)、Smartcard_CMDVCC (管理VCC)以及Smartcard_OFF信号(智能卡检测信号)由软件控制GPIO的端口实现。为了使数据信号以正确的驱动连接到智能卡IO引脚,应当把USART_TX端口的GPIO位编程为复用开漏输出模式,为把时钟发生器连接到Smartcard_CLK的引脚,USART_CK端口的GPIO位应配置为复用推挽输出模式。$ i: i, ^; A* f9 _7 _5 i( {0 t0 d+ B

# }- W- `8 Q' I# {9 |1.3 协议 + c% O/ B# E' p+ r* d) a) ^8 @
ISO 7816-3标准为异步协议定义了时间基准单位,称作ETU(elementary time units),它与输入至智能卡的时钟频率有关。一个ETU的长度是一个位时间。USART接收器和发送器在内部通过Rx_SW信号相连接。必须将USART模块设置为智能卡模式,才能实现从STM32F10xxx向智能卡传输数据。

4 L4 e  ~! A/ g

2 }+ d- K$ M5 L  V: q图1 ISO 7816-3异步协议( V8 v* G0 I1 r% w% }; P: b
; {' d3 A  y, R0 i* E
1.png
1.4 智能卡时钟发生器

( t, {# Q0 K; x/ x0 x7 w
智能卡时钟发生器为与之相连的智能卡提供时钟信号。智能卡使用这个时钟产生在智能卡与USART模块之间进行串行通信的波特率时钟。如果智能卡上有CPU,该时钟将同时提供给CPU使用。

) m1 d7 U  \6 D& a( C; \* d& A# G4 x
智能卡接口操作要求,在卡上的CPU运行代码时可以调整时钟速率,这样可以改变通讯的波特率,或者可以提升智能卡的性能。在ISO7816-3标准中详细描述了,协商时钟速率和改变时钟速率的协议。

; k3 n1 r9 q& E0 E1 N1 p
这个时钟被用作智能卡内CPU的时钟,因此更新微控制器输出的时钟频率必须和智能卡时钟同步,应注意保证没有比短周期的40%更短的脉冲。

: B- B; [: X$ K* ^; j4 P6 j9 i
.........
( Z) N' R" f& s( y
想了解更多,请下载原文阅读

" T& d" S  L* K- J$ A5 X# r) N- B$ L* c5 W, B* w" w
收藏 1 评论2 发布时间:2019-4-24 10:33

举报

2个回答
Kevin_G 回答时间:2019-4-24 23:36:21
收藏
访客1989 回答时间:2019-4-29 09:26:03
收藏收藏
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版