! " # $ % & ’ "! ( ) * $ % +,,-./,
实践与经验
现
代
计
算
机
︵
总
第
一
九
七
期
︶
¡¢£¤¥¦
FIFO ¡¢
64¡¢ FIFO
¡¢£¤¥
32 16¡¢
EEPROM
¡¢£¤
¡¢£
¡¢£¤¥
¡¢£¤¥¦
¡¢£¤¥
CRC¡¢£¤¥
¡/¡¢£¤¥
¡¢£¤¥¦
¡¢£¤ ¡¢£¤ ¡¢£¤
¡¢£¤
¡¢£¤
¡¢£¤
VMID AUX RX TVSS TX1 TX2 TVDD
OSCOUT
OSCIN
MFOUT
MFIN
IRQ
RSTPD
DVDD
DVSS
D0~7 A2 A1 A0 ALE NCS NRD NWR
引 言
随着社会经济的日新月异,在金融行业、公共
交通行业、无线通信领域、卫生保健行业、封闭式场
所管理、身份识别、电话通信、大楼保安系统等等的
应用中,人们已愈来愈多地开始接受和使用 0’ 智
能卡。特别是银行服务系统,0’智能卡替代古老的
磁卡而服务于大众已日渐成熟,“一卡通”,一卡多
用,给我们的生活质量带来了很大的提高。0’智能
卡自动电
抄表系统,煤气 1 自来水抄表系统,公
交 1 地铁自动售票 1 检票系统,移动通信手机中 0’
智能 20! 卡等等,0’ 智能卡已愈来愈贴近我们的
生活,成为我们生活的一步分。“刷卡”已成为人们
日常生活中不可或缺的一部分。
近几年来,随着 0’ 智能卡中的接触式 ’() 卡
以及非接触式智能射频卡(内建 !’),320’ 等)的
高度安全保密性,使之在 0’智能卡领域中异军突
起,成为当今 0’智能卡中的流行宠物,应用前景十
分广阔。
/ %’45/ 介绍
%’45/ 是 (67879:公司开发的非接触式智能卡
读卡器芯片系列中的一种,它可以读写符合 02" 1
0$’ /---5
的 *;($ 3 和 *;($ < 卡,其内部
自带的发射部件能够直接驱动天线,操作距离达到
/,=>,不需要增加额外的驱动电路。接收电路提供
可靠的 02" 1 0$’ /---5模拟信号的解调和解码,内
部数字电路可以实现 02" 1 0$’ /---5 帧的处理和
错误检测,灵活的并行接口可以和多种 !’) 相
连,另外还支持 2(0兼容接口。图 /为 %’45/内部
结构,图 + 为 !’) 接口电路。欲了解更多 %’45/
的内容可以参考 (67879:公司的产品手册。
图 / %’45/ 内部结构
基于 !"#$%的 &’()*+读卡器开发
黎 明 / ,罗利华 + ,卢 邦 5 , 吴大伟 - , 张治国 4
(/. 广州广电运通金融电子有限公司研发中心,广州 4/,,,,;+. 中国民主同盟广州市委员会,广州 4/,,,,;
5. 广州市公安局十五处,广州 4/,,,,;-. 中山大学公共卫生学院,广州 4/,,,,;
4. 中山大学信息科学与技术学院? 广州 4/,+@4)
摘 要:本文主要介绍使用 (67879:公司开发的非接触式智能卡(射频卡)读卡器芯片 %’45/读写符合
02" 1 0$’ /---5标准的 *;($ < 卡,包括 *;($ < 卡的操作原理和 ’4/实现程序。
关键词:非接触式智能卡;02" 1 0$’ /---5;(’#;(0’’
!
!"
现
代
计
算
机
︵
总
第
一
九
七
期
︶!! " # $ % & ’ "! ( ) * $ % +,,-./,
实践与经验
¡¢£¤
¡¢ REQB
¡ WUPB
AFI ¡¢
¡¢
N=1?
¡¢£ 1¡ N ¡
¡¢£¤¥ R
R=1?
¡¢ ATQB ¡ ¢ SLOT
MARKER = R
¡¢ ATTRIB ¡ HTLB
¡¢ HTLB
¡¢
¡¢ CID ¡¢
¡¢ ATTRIB
¡¢
¡¢£¤
¡¢£¤ ¡ ¢
WUPB
N
Y
¡¢£
¡¢£ Y
N
¡¢£¤¥¦ N
¡¢ REQB
¡ WUPB
= R
¡¢ REQB
¡ WUPB
ATTRIB HTLB
DESELECT
图 + !’) 接口电路
图 0 *123 4 卡操作流程
+ *5($ 4卡操作原理
先介绍下文所要用到的一些缩写词:
678(6229:;<=:>? 7<@:91 8A3?=:B:3C):应用家族
标识码;
6*D4(6?EF3C => %3GH3E=I *123 4):对请求命
令的回答;
6**%84 ((8’’ J393;=:>? ’>@@@@O:@:=1 ’>H29:?L #3P:;3 Q%3
O:@:=1 8?=3LC<=3A ’:C;H:= ’ )?:GH3 (8’’ 8A3?=:B:3C):唯一的
(8’’标识码;
%$D4(%3GH3E= ’>@@@@?@A%BC4"((/D(+):把数据写入 %’98/ 寄存
器,(/为寄存器,(+为数据;
’EAB>2?@!BFG((/D(+):清除 %’98/ 寄存器中
的某些位,(/为寄存器,(+中为 /的位将被清 ,。
通用的寄存器初始化程序如下:
HIB> !98/(HJ’KLM?NOPK?JQ
R
HIB> ?JB@B F@B@SFT
?M OOF@B@SF 5 !98/(HJ%AFA@())55 !4U";Q
77 对 %’98/ 复位
R
77 时钟 1 校准
=>?@A%BC4"O%AN’EKHG1’KL@>KED,V,QT
=>?@A%BC4"O%AN’EKHG1’KL@>KED,V-,QT
JAEBWU9,SFO+QT
77等待校准完成,大约 /,, SF
’EAB>2?@!BFGO%AN’EKHG1’KL@>KED,V-,QT
77清除位 ’EG1’BE?X 允许自动校准
=>?@A%BC4"O%AN2?@(IBFAD,V0#QT
77设定位相位
=>?@A%BC4"O%AN%V*I>AFIKEJD,V::QT
77 设定接收门限
=>?@A%BC4"O%AN%V’KL@>KE+D,V,/QT
77禁止接收电路自动休眠
=>?@A%BC4"O%AN%V=B?@D,V,YQT
77设定接收等待时间
=>?@A%BC4"O%AN:4:"EAPAE为 -
=>?@A%BC4"O%AN*?ZA>’KL@>KED,V,+QT
77定时器设置
!98/(HJ6A@*ZKO/QT
77 设置定时器为 /ZF
=>?@A%BC4"O%AN4%[(?L’KLM?ND,V,8QT
77中断允许,低有效
!98/(HJ%M%AFA@O+QT
77 打开射频场
\
>A@S>L F@B@SFT
\
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
设置 %’98/工作在 *^($ 2方式:
HIB> !98/(HJ’KLM?N46"*W_A2()
R
=>?@A%BC4"O%AN*V’KL@>KED,V-XQT
77禁止 /,,‘06G
=>?@A%BC4"O%AN’KJA>’KL@>KED,V+,QT
77发射 &%ab<编码D *^($ 2 波特率 /,YGX_F
=>?@A%BC4"O%AN%V’KL@>KE/D,Vc8QT
77接收设置
=>?@A%BC4"O%AN#AHKJA>’KL@>KED,V/dQT
77接收 2(6; 编码
=>?@A%BC4"O%AN’%’(>AFA@<62D,VMMQT
77预置 ’%’ 为 ,VMMMM
=>?@A%BC4"O%AN’%’(>AFA@!62D,VMMQT
!!!=>?@A%BC4"O%AN*W_A2:>BZ?LND,V+eQT
77 设置 *^($ 2 帧
!!!=>?@A%BC4"O%AN2(6;#AZ’KL@>KED,V/AQT
77解调设置
=>?@A%BC4"O%AN!KJ’KLJSH@BLHAD,V,YQT
77调制系数设为 /+‘
!!!=>?@A%BC4"O%AN’IBLLAE%AJSLJBLHWD ,V+HQT
77 ’%’设置
!!!>A@S>L !4U";T
\
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
%$12和 =)(2命令实现程序:
HIB> !98/(?HH%A[SAF@2 OSLF?NLAJ HIB> >A[UHKJAD SLf
F?NLAJ HIB> 0:4D SLF?NLAJ HIB> &D SLF?NLAJ HIB> ]0*12Q
R
HIB> F@B@SF 5 !4U";T
SLF?NLAJ HIB> >AHUEALT
’EAB>2?@!BFGO%AN’KL@>KED,V,eQT
!"
现
代
计
算
机
︵
总
第
一
九
七
期
︶!! " # $ % & ’ "! ( ) * $ % +,,-./,
实践与经验
00 禁止 123456 / 单元
!78/(19:;5*<6=7>?
00 设定接收等待时间
!@"ABCC;2D,E F ,G,7?
00 往发送缓冲区 !@"ABCC;2填写命令码
!@"ABCC;2D/E F HI@?
00 家族码
!@"ABCC;2D+E F =2;JK169;L,G,M>N=&L,G,O>?
00参数
00 发出命令并接收 (@’’ 返回的命令
P5Q5BP F $G1RQST;A35;:52;Q< =(’#K*%H&:’$@U$V
!@"ABCC;2V 8V H*WAV L2;1KX;S>?
YC =P5Q5BPZ F!@K"[ LL P5Q5BPZ F!@K&"*H\$%% LL
=H*WAD,EFF,G7, NN H*WAD,EFF,G,7>>
P5Q5BP F !@K’"]]$%%?
00 发生冲突
YC =P5Q5BP FF !@K"[>
YC =2;1KX;S^8 NN =H*WAD,EZ F,G7, LL H*WAD,EZ F,G,7>>
P5Q5BP F !@K&"*H\$%%?
00 (@’’ 没有回答
;XP; YC =2;1KX;S_/+>
P5Q5BP F !@K’"]]$%%?
00 发生冲突
YC =P5Q5BP FF !@K"[>
‘
!78/(19:;5*<6=H*WAD//E__->?
00 设定帧等待时间 Ia*
bRYX; =2;1KX;S ^ /c>
00 装载收到的数据
H*WAD2;1KX;SddE F ,?
e
2;5B2S P5Q5BP?
e
fffffffffffffffffffffffffffffffffffffff
:]"* !H%[$%命令实现程序:
1RQ2 !78/(Y11:X65!Q2g;2=BSPYTS;9 1RQ2 &V BSPYTS;9 1RQ2
fH*WA>
‘
1RQ2 P5Q5BP F !@K"[?
BSPYTS;9 1RQ2 2;1KX;S?
!78/(19:;5*<6=7>?
00设定接收等待时间
YC=Z & NN & _ /7>
P5Q5BPF!@Ka%"&\K(H%H!$*$%KUH])$?
;XP;
‘
!@"ABCC;2D,E F ,G,7N=&^^->?
00 往发送缓冲区 !@"ABCC;2填写命令码
00 发出命令并接收 (@’’ 返回的命令
P5Q5BP F $G1RQST;A35;:52;Q< =(’#K*%H&:’$@U$V
!@"ABCC;2V /V H*WAV L2;1KX;S>?
YC =P5Q5BPZ F!@K"[ LL P5Q5BPZ F!@K&"*H\$%% LL
=H*WAD,EFF,G7, NN H*WAD,EFF,G,7>>
P5Q5BP F !@K’"]]$%%?
00 发生冲突
YC =P5Q5BP FF !@K"[>
YC =2;1KX;S^8 NN =H*WAD,EZ F,G7, LL H*WAD,EZ F,G,7>>
P5Q5BP F !@K&"*H\$%%?
00 (@’’ 没有回答
;XP; YC =2;1KX;S _ /+>
P5Q5BP F !@K’"]]$%%?
00 发生冲突
YC =P5Q5BP FF !@K"[>
‘
!78/(19:;5*<6=H*WAD//E__->?
00 设定帧等待时间 Ia*
bRYX; =2;1KX;S ^ /c>
00 装载收到的数据
H*WAD2;1KX;SddE F ,?
e
e
2;5B2S P5Q5BP?
e
ffffffffffffffffffffffffffffffffffffffffff
H**%@A命令实现程序:
1RQ2 !78/(Y11H552Yh=BSPYTS;9 1RQ2 f()(@V BSPYTS;9 1RQ2
’@#V BSPYTS;9 1RQ2 h2*GV BSPYTS;9 1RQ2 h2%GV BSPYTS;9 1RQ2
(H%H!8V BSPYTS;9 1RQ2 fH*WA>
‘
1RQ2 P5Q5BP F !@K"[?
BSPYTS;9 1RQ2 2;1KX;S?
!@"ABCC;2D,E F ,G/9?
00往发送缓冲区 !@"ABCC;2填写命令码
16439Q5Q=L!@"ABCC;2D/EV()(@V->?
00填写卡标识码
!@"ABCC;2D7E F ,G,,?
00 需要 $"I 0 :"I,缺省的 *%, 0 *%/
!@"ABCC;2DcE F ,G,ON==h2*GL8>^^->N==h2%GL8>^^c>?
00 最大帧尺寸 /+M
!@"ABCC;2DOE F (H%H!8?
!"
! " # $ % & ’ "! ( ) * $ % +,,-./,
实践与经验
现
代
计
算
机
︵
总
第
一
九
七
期
︶
01 !234 5 0)" 016789 5 0) :934 5 ;) #96<=2 5 >?@&A >72648B
(/. A%A :93C234 $D82EF=3G ’B.50*#5 A8934H7B8 I/,,,, ’7239;
+. A8934H7B8 ’BFF2GG== BJ ’7239 #=FBKL9G2K 0=948=,A8934H7B8 I/,,,, ’7239 ;
M. :8L=98 BJ (8NO2K P=K8L2GQ BJ A8934H7B8 !832K2E9O2GQ,A8934H7B8 I/,,,, ’7239;
-. PK7BBO BJ (8NO2K ?=9OG75 P83 R9G6S=3 )32T=LS2GQ,A8934H7B8 I/,,,, ’7239;
I. PK7BBO BJ 13JBLF9G2B3 PK2=3K= 93U *=K73BOB4Q5 P83 R9G6S=3 )32T=LS2GQ,A8934H7B8 I/,+VI ’7239)
@NSGL9KG:*72S E9E=L U2SK8SS=S G7= U=S243234 BJ 1P" W 1$’ /---M *R($ : K9LU L=9U=L 8S234 (72O2ES ’B3G9KGO=SS PF9LG
’9LUS L=9U=L 1’ %’IM/5 23KO8U234 G7= BE=L9G2B3 EL23K2EO= BJ *R($ : K9LUS 93U G7= ’I/ 2FEO=F=3G9G2B3 BJ
G7= K9LU L=9U=L.
X=Q