基于SPI接口安全芯片产品的读卡器研究
由于安全芯片的工作电压不确定,本读卡器提供了5V和3.3V的工作电压,其中3.3V是通过电源转换芯片LM1117提供的,同时在USB接口处添加了ESD防护器件SRV05-4,以防读卡器被静电打坏。如图6所示。
本文引用地址:https://www.eepw.com.cn/article/201710/370666.htm2.2 MCU主控部分
本读卡器采用了ST的MCU为主控芯片,该芯片是一款基于ARM Cortex-M3为内核的微控制器,最高工作频率为72MHz。此外,该主控芯片具有丰富的硬件资源,配置了128K的flash存储器和20K的RAM、三个16位普通定时器和一个高级定时器、2×SPI、2×I2C、3×USART、1×USB、1×CAN2.0、2(16)个ADC和48个I/O引脚。本读卡器应用了该芯片的USB功能,通过USB端口检测是否有安全芯片插入,实现和安全芯片的通讯控制,另外通过MCU控制蜂鸣器和LED灯的亮灭。
2.3 SPI从设备接口
本读卡器和安全芯片的接口是通过IC卡座连接的,如图7所示,通过IC卡座的检测管脚判断是否有安全芯片插入,同时也可以方便地监测SPI的通讯时序,方便调试和测试。
2.4 其他电路
本读卡器硬件上包含蜂鸣器和LED指示灯部分,如图8所示。当有安全芯片插入或拔出时通过MCU控制蜂鸣器的发出“嘀嘀”的响声,当和安全芯片进行通讯时,控制指示灯D2的亮灭指示通讯的正常或异常,电源指示灯D1亮灭代表电源的正常与否。
3 软件设计
本系统的软件框图如图9所示,通过USB供电,当系统正常上电后程序进行初始化,包括系统时钟的初始化、USB初始化及CCID设备接口的初始化等,当该系统的CCID设备接口准备好后可以通过其中的固定的端口发送指令进行SPI时序的设置,当插入安全芯片时系统会自动检测,如果检测到安全芯片,端口上会显示该SPI接口从设备的相关信息,通过该端口可以进行安全芯片的通讯测试;如果没有检测的安全芯片,那么可以通过查看相关的时序,进行调整,重新进行SPI时序的相关参数的设置。
3.1 CCID设备初始化
CCID标准规定了CCID设备是一种芯片/智能卡接口设备,设备通过USB接口与主机或其他嵌入式主机连接,进行符合CCID标准的数据通讯,工作过程如图10所示。本读卡器采用了CCID标准,实现了3个设备端口的初始化,用到了Bulk-OUT Message在Command Pipe发送;Bulk-IN Message在Response Pipe发送;Interrupt-IN Message在interrupt-IN Pipe发送,用到的函数如表1所示。
3.2 SPI从设备通信处理软件
本读卡器采用了MODE3模式,时序图如图11所示,主要涉及到以下关键的时间点:包括Ton:片选SSN拉低到第一个Clock之间的延时时间,Toff :SPI通讯结束的最后一个CLK到片选SSN拉高之间的间隔,Ti:每个字节帧之间的间隔,Tidle :片选SSN高电平持续的时间。通过CCID设备的固定端口发送SPI时序的配置指令,分别对上面的关键时间点Ton、Toff、Ti和Tidle进行设置。
参考SPI接口从设备的通信时序图及通信流程编写程序,完成了调试,下面给出SPI初始化的程序,具体的程序执行流程图如图12所示。
4 结论
本文设计的读卡器实现了和SPI接口从设备通信,同时实现了对SPI从设备时序的配置,方便测试SPI从设备的工作极限参数,例如工作频率等。此外在进行SPI从设备生产发行过程中,通过修改SPI时序可以很大程度上提高生产产能。另外也方便用户进行SPI底层程序的调试,缩短了开发周期,在实际应用中具有深远的意义。
参考文献:
[1]DWG_Smart-Card_CCID_Rev110.pdf.
[2]涂永飞,王名传.基于SPI双机通信的弧光保护系统[J].微型机与应用,2015,34(2):72-76.
[3]解永军,许芳,王德清.基于SPI的双DSP通信协议研究[J].电子世界,2014,(14):221-222.
[4]高振,罗秋凤.SPI接口与CRC算法在双DSP数据通信中的应用[J].电子产品世界,2011(1-2):46-48.
[5]付兴武,张军,王洋.基于SPI总线协议的字符设备驱动程序[J].计算机系统应用,2013,22(2):146-150.
本文来源于《电子产品世界》2017年第11期第42页,欢迎您写论文时引用,并注明出处。
评论