ST7267单片机与SIM卡的接口设计

随着信息技术的不断发展,手机逐渐成为现代社会必不可少的工具。但是,一旦手机丢失,存在sim卡内的资料也就丢失了,因而造成了很多不必要的麻烦。为了保存这些重要的资料,在电脑上做必要的备份显得十分重要了。本文利用st7267单片机的gpio端口,实现了对sim卡的读写。

      1 硬件电路的设计

  1.1 st7267单片机概述

  st7267具有usb2.o的硬件接口,大容量存储控制接口可以支持各种类型的nand flash。具有54 kb的rom和4kb的ram空间。

  1.2 sim卡接口电路

  sim卡引脚功能的定义 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,就说明读取数据失败,返回错误信息,按照以上接收一个字节程序的框架,可以很方便地设计出发送一个字节的程序。只是在发送字节时,在发送完奇偶校验位后,一定要转为接收模式。如果在接下来的一个etu里,i/o端口保持高电平,则说明发送数据正确;如果i/o端口被拉低,为低电平,就说明发送数据错误,要重发。

      结语

      本文介绍了基于st7267读写sim卡的方法。相对于其他硬件读卡芯片,这种用软件实现的方法更加灵活,而且可以实现多种设备(例如u盘和sim卡读卡器)的整合,这样可以降低产品的成本。

  • ST7267单片机与SIM卡的接口设计已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计