- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于STM32USB读卡器设计
基于STM32USB读卡器设计
摘要:采用具有ARM Cortex-M3 内核的STM32F103R8T6等芯片进行相关的硬件设计,使用KEIL4.0进行固件程序和驱动程序的开发,设计了一种基于STM32的CCID协议的USB读卡器.该读卡器支持符合ISO 7816-3 规范的接触式IC卡。实验表明,该设计可以提高智能卡系统的通信速度和中断响应速度。
关键词:USB;CCID协议;STM32;ISO7816-3
中图分类号:TB
文献标识码:A
文章编号:1672-3198(2012)07-0169-02
1 通信设备接口协议
CCID协议是集成电路卡与设备进行通讯的一种规范,它通过一个接口让读卡器和主机进行数据交换。CCID读卡器通过USB口和主机进行连接,在确认了主机的各项性能指标后就可以和主机进行通讯。CCID读卡器可实时检测出ICC(银行技术和惯例委员会)卡片的插入,并将这个信息传递给主机,实现ICC卡和主机之间的数据通讯。
CCID协议模式是假定一个ICC卡为可插入该设备,这个模式也适用于ICC卡集成在CCID设备中。这种协议模式使读卡器和PC机之间的通信变得更加容易,使使用者可以实现即插即用。CCID协议软件预先安装在Windows封装中,因此不需要安装任何驱动程序。
2 读卡器的软件架构
读卡器的软件架构如图1所示,由USB驱动模块、CCID协议处理模块和ISO7816Master接口协议处理模块三部分组成。
图1 读卡器的软件架构
2.1 USB驱动模块
此模块实现USB的初始化以及枚举功能,并负责设备通过USB通道与主机进行收发数据。STM32平台的USB枚举与通讯处理都通过中断方式实现。USB驱动模块处理流程图如图2所示。
2.2 CCID协议处理模块
此模块解析并处理CCID数据,将APDU数据交给ISO7816协议层处理,并接收相应的响应,组织成CCID消息。
CCID协议中定义了14种BULK-OUT Messages和5种BULK-IN Messages,BULK-OUT Messages和BULK-IN Messages两两匹配用来实现主机和CCID设备数据交互过程。BULK-OUT Messages和BULK-IN Messages都是由10个字节的包头和包头后紧跟着的DATA域组成,有些Messages的DATA域不存在。此次CCID协议的实现主要是通过对标志位的查询实现的(除PC_to_RDR_XfrBlock的其他CCID命令)。CCID通讯的实现可由图3和图4表示。
2.3 ISO7816Master接口协议处理模块
本模块处理读卡器与卡片之间的数据交互、实现复位功能、应用APDU数据传输等。
(1)ISO7816协议命令结构。
(2)ISO7816 Maseter接口模块实现。
根据ISO7816-3标准规定,响应字节的响应可以分为四种情形:INS、INS?01、INS?FF和INS?FE,这四种情形分别指示了IC卡的后续操作的资源要求,接口设备则根据这一响应字节进行下一步的操作。发送及回送的数据字段由指令的操作性质决定,是双方信息交换的目的字段,其长度一般由P3或其他方式制定。在上述操作执行后,或操作中出现错误情况,IC卡将向接口设备回送两个字节的? ?状态信息,接口设备则依据此来判断一条命令是否正确完成,实际使用的三条命令结构分别为:
①无数据命令结构(Case1),其操作过程为。
命令Case1结构
该结构主要出现在无数据控制命令和一条错误的命令执行的时候。
②获取数据命令机构(Case2),其操作过程为:
命令Case2结构
该指令结构中,所需获取的数据结构长度一般由P3来指示,即:P3=Le。
上述命令测试可以说明,读卡器支持符合ISO 7816 A(5V)、B(3V)类智能卡,智能卡接口支持T0、T1协议。
3.2 可靠性测试
3.2.1 短路保护
当插入卡座的卡片为金属或其他异常情况导致对读卡器或主机的损坏时,实行短路保护。主要通过硬件电路来实现,可以通过在MCU VCC脚上和卡座VCC脚上进行AD采样,如电压过低,AD检测卡片立即断电实现短路保护。
3.2.2 防拔测试
读卡器防拔测试是指当卡片拨出来时,读卡器按照ISO7816-3中卡操作过程进行。CCID协议中规定了Interrupt-IN这个断点专门用来监控卡片的插入和拔出过程,所以要实现防拔功能,可以将卡座的开关脚和MCU中定义的Interrupt-IN脚相连,并定义一个I/0脚来控制Vcc即可。在测试中进行模拟
文档评论(0)