利用ST7267单片机GPIO端口实现SIM卡接口电路的设计

随着信息技术的不断发展,手机逐渐成为现代社会必不可少的工具。但是,一旦手机丢失,存在sim卡内的资料也就丢失了,因而造成了很多不必要的麻烦。为了保存这些重要的资料,在电脑上做必要的备份显得十分重要了。本文利用st7267单片机的gpio端口,实现了对sim卡的读写。
1、 硬件电路的设计
1.1 st7267单片机概述
st7267具有usb2.o的硬件接口,大容量存储控制接口可以支持各种类型的nand flash。具有54 kb的rom和4kb的ram空间。
1.2 sim卡接口电路
sim卡引脚功能的定义如表1所列。
st7267单片机与sim卡的接口电路如图1所示。该电路主要由外围有源晶体y2提供4mhz、稳定的时钟频率给sim卡,电源由一颗ldo输出3.3v、纯净的直流电到sim卡的cl_vcc上。这里选择st7267的pe2脚作为i/o引脚,通过一个4.7kω的上拉电阻与sim卡实现通讯;选择pe3脚作为sim卡的复位控制引脚。
2 、底层软件设计
sim卡的数据传输方式与其他存储卡不同,它遵循iso7816标准。因此在进行sim卡读写设计时应该注意数据传输时每一个数据位的宽度,然后按照iso7816的标准编写程序。首先是接收到正确的复位应答信号(atr),其次是向sim卡发送命令,得到正确的返回数据和状态标志。
2.1 etu的计算
etu(基本时间单位)就是sim卡i/o脚上输入/输出每一位数据的时间,计算公式是;
其中:参数f和d分别是时钟频率转换因子和波特率调整因子,这里使用默认的速率,即f=372,d=1;使用的时钟频率f是4mhz。可以计算出基本时间单位是93μs。
2.2 基本数据帧结构
通信使用的协议是iso7816-3所规定的t=0的异步半双工字符传输协议。基本的数据帧是由1个起始位(低电平)、8个数据位和1个奇偶校验位组成的,如图2所示。其中,校验位是将8个数据位与其自身做偶校验,也就是其中1的个数必须足偶数。起始位不做校验运算。在保护时间内sim卡和单片机都要处于高电平(即i/o口是高电平)。在t=o协议里,如果sim卡或者单片机检测到奇偶校验结果不正确,则在保护时间内把i/o端口拉低,以示出错。
2.3 sim卡的apdu结构
应用协议数据单元apdu(application protocol data units)包括了命令apdu以及应答apdu,其结构如下:
其中:cla是指令的类别,a0被制定为gsm的应用;ins是指令代码;pl、p2、p3是指令参数,p3指示的是数据的长度;data就是要传输的数据;swl和sw2就是命令处理后返回的状态。
2.4 基本程序模块的设计
设mybit为从i/o端口采样的存储变量,设parity为奇偶校验变量,parlty的初始化值为0。每次从i/o口采样后,mybit都要与parity进行一次“异或”,结果放入parity。这样采样9次后,如果parity的最终值是0,就说明奇偶校验正确;如果不是0,就说明读取数据失败,返回错误信息,要求发送者重发。
读1字节的基本程序流程如图3所示。
具体子程序如下:
按照以上接收一个字节程序的框架,可以很方便地设计出发送一个字节的程序。只是在发送字节时,在发送完奇偶校验位后,一定要转为接收模式。如果在接下来的一个etu里,i/o端口保持高电平,则说明发送数据正确;如果i/o端口被拉低,为低电平,就说明发送数据错误,要重发。
3、结语
本文介绍了基于st7267读写sim卡的方法。相对于其他硬件读卡芯片,这种用软件实现的方法更加灵活,而且可以实现多种设备(例如u盘和sim卡读卡器)的整合,这样可以降低产品的成本。


探讨非预置光纤接续理论
锂电池的正确使用方法以及锂电池10大疑问的解答
飞思卡尔CEO兼总裁:用智能拥抱中国
0-5v转4-20mA信号变送器0-10V信号转换器
去耦电容的作用,为什么一个电容也会谐振?
利用ST7267单片机GPIO端口实现SIM卡接口电路的设计
可折叠手机将有助于三星智能手机在全球市场保持领先地位
下一代Android系统10月29日正式发布
高频疲劳试验机,有哪些主要构造?
那些你不知道的LED封装猫腻
关于减少PCB板电磁干扰的4个设计技巧
瑞萨扩展RX63T Group MCU产品 扩充其内建功能
五部门:将大力推动燃料电池汽车示范应用
“无纸化”业务作为商业银行的新一代应用业务,对于数据管理带来了新的挑战
兆龙互连认可AEM TestPro CV100多功能线缆认证测试仪
机箱风扇再次利用:DIY笔记本散热架
MicroLED量产存在难度_取代OLED还为时过早
Ovum表示电信运营商在B2B服务交付的高效和实用性是至关重要的
控创嵌入式BOX PC CB 752的功能特点
哪种PLC通讯模式最为常用?