CPU卡程序设计实例(二)软件设计
来源:互联网 发布:淘宝助理报告错误 编辑:程序博客网 时间:2024/05/21 19:34
2. 软件设计
2.1. 工作原理
CPU卡在数据传输方式上与存储卡是不同的,它采用的是串行异步半双工方式,所以在对CPU卡进行读写设计时,首先应计算出在I/O线上数据的位宽,以保证通信的正确;其次,由于采用的是MSP430F系列单片机,它采用了DCO技术,其向系统提供的时钟频率是可调的,故应根据系统要求的时钟频率对基础时钟模块进行设置,以得到准确的时钟信号;在设计读写程序时,一定要按照ISO7816标准规定的流程进行编程,其编制成功的标志是能正确的接收复位信号,能发送命令,并根据每条命令的格式接收到正确的返回数据或状态标志。下面就这几方面内容进行讨论。
2.2. ETU的计算
I/O口线上所用的数据位宽度被确定为基本时间单位ETU(elementary time unit),计算公式为:ETU=372/f。
其中f为时钟频率,一般在1-5MHz之间选择,当时钟频率为3.75MHz时,传输的速率为9600波特率。
在实际单片机编程时,必须将ETU计算准确,否则将不能保证单片机与IC卡通讯的正确性和稳定性。
由于CPU卡是采用串行异步半双工方式和终端通信,由终端向CPU卡提供时钟信号,并以此来控制交易的时序,所以在程序设计前应先计算出准确的ETU(基本时间单位)。ETU即I/O口线上所用的数据位宽度,ETU的计算可采用延时子程序的方式,在C语言环境下,可以在模拟仿真环境下,观察延时子程序所用的时钟周期,从而得到精确的ETU。
2.3. 系统时钟MCLK的设置
本系统中,终端和CPU卡的时钟都是由MCLK提供,MCLK的时钟源来自DCO(数字控制振荡器)。MSP430F系列单片机的DCO振荡器被集成在FLL+时钟模块中,它产生的时钟信号可作为MCLK或SMCLK。
在本实例中,CPU卡和终端的时钟信号是由MCLK提供的,外接晶体的频率为32.768KHz,MCLX的频率设置为2MHz,以充分利用MSP430和CPU卡的高速性能。
另外,要想使MCLK信号能够输出,还必须将PJ.1口设置为MCLK输出模式。这样CPU卡的CLK端才能得到正确的时钟信号。
2.4. 复位时序
在对CPU卡进行读写操作前,必须对它进行正确的复位。复位成功后,即可对CPU卡进行各种交易操作,操作结束后,要对CPU卡执行下电操作,以正确的释放各触电。CPU卡的复位操作是严格按照ISO-7816的时序要求进行设计的,其上电和下电时序如下图。
2.5. 上电时序
2.6. 下电时序
2.7. 字节接收程序设计
2.8.字节发送程序设计
- CPU卡程序设计实例(二)软件设计
- CPU卡程序设计实例(二十四)生成过程密钥
- CPU卡程序设计实例(二十二)CPU卡内部认证
- CPU卡程序设计实例(一)电路
- CPU卡程序设计实例(四)CPU卡处理流程
- CPU卡程序设计实例(九)CPU卡复位程序
- CPU卡程序设计实例(二十三)卡和ESAM之间内部认证
- CPU卡程序设计实例(二十六)卡和ESAM之间外部认证
- CPU卡设计实例及程序设计(二十七)外部认证,卡和ESAM通用
- CPU卡程序设计实例(二十)8字节随机数读取
- CPU卡程序设计实例(二十一)4字节随机数读取
- CPU卡设计实例及程序设计(二十八)ESAM外部认证
- CPU卡程序设计实例(三)命令格式
- CPU卡程序设计实例(五)单片机系统主频设置
- CPU卡程序设计实例(六)ETU配置
- CPU卡程序设计实例(十)ESAM复位程序
- CPU卡程序设计实例(十五)数据校验
- CPU卡程序设计实例(十六)文件选择
- 用cxf生成webservice的java客户端代码
- 即将交稿新书《SSM和Redis实现》,欢迎大家关注
- CPU卡程序设计实例(一)电路
- ubuntu 17.04 install openssl
- 揭秘Kafka高性能架构之道-Kafka设计解析(六)
- CPU卡程序设计实例(二)软件设计
- 记录自已学习之单链表(头插)
- C++实现优先队列——最小堆,d路堆及配对堆
- 记录自已学习之单链表(尾插)
- Currency Translation in Bex Query Variable 2
- Linux压缩与解压缩
- Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/cxf/frontend/ClientPro
- VI编辑器常用命令总结
- springmvc