歡迎您訪問(wèn)鄭州興邦電子股份有限公司官方網(wǎng)站!
阿里巴巴誠(chéng)信通企業(yè)
全國(guó)咨詢熱線:40000-63966
興邦電子,中國(guó)水控機(jī)第一品牌

聯(lián)系興邦電子

全國(guó)咨詢熱線:40000-63966

售后:0371-55132951/55132952

工廠:河南省 鄭州市 高新區(qū)蓮花街電子電器產(chǎn)業(yè)園

ST7267單片機(jī)與SIM卡的接口設(shè)計(jì)

文章出處:http://xianjuhong.com 作者:黃智 魏苑琦   人氣: 發(fā)表時(shí)間:2011年09月23日

[文章內(nèi)容簡(jiǎn)介]:隨著信息技術(shù)的不斷發(fā)展,手機(jī)逐漸成為現(xiàn)代社會(huì)必不可少的工具。但是,一旦手機(jī)丟失,存在SIM卡內(nèi)的資料也就丟失了,因而造成了很多不必要的麻煩。為了保存這些重要的資料,在電腦上做必要的備份顯得十分重要了。本文利用ST7267單片機(jī)的GPIO端口,實(shí)現(xiàn)了對(duì)SIM卡的讀寫。

    隨著信息技術(shù)的不斷發(fā)展,手機(jī)逐漸成為現(xiàn)代社會(huì)必不可少的工具。但是,一旦手機(jī)丟失,存在SIM卡內(nèi)的資料也就丟失了,因而造成了很多不必要的麻煩。為了保存這些重要的資料,在電腦上做必要的備份顯得十分重要了。本文利用ST7267單片機(jī)的GPIO端口,實(shí)現(xiàn)了對(duì)SIM卡的讀寫。

1 硬件電路的設(shè)計(jì)

1.1 ST7267單片機(jī)概述

    ST7267具有USB2.O的硬件接口,大容量存儲(chǔ)控制接口可以支持各種類型的NAND Flash。具有54 KB的ROM和4KB的RAM空間。

1.2 SIM卡接口電路

    SIM卡引腳功能的定義如表1所列。 

 SIM卡引腳功能的定義

    ST7267單片機(jī)與SIM卡的接口電路如圖1所示。該電路主要由外圍有源晶體Y2提供4MHz、穩(wěn)定的時(shí)鐘頻率給SIM卡,電源由一顆LDO輸出3.3V、純凈的直流電到SIM卡的Cl_VCC上。這里選擇ST7267的PE2腳作為I/O引腳,通過(guò)一個(gè)4.7kΩ的上拉電阻與SIM卡實(shí)現(xiàn)通訊;選擇PE3腳作為SIM卡的復(fù)位控制引腳。 

ST7267與SIM卡接口電路

2 底層軟件設(shè)計(jì)

    SIM卡的數(shù)據(jù)傳輸方式與其他存儲(chǔ)卡不同,它遵循ISO7816標(biāo)準(zhǔn)。因此在進(jìn)行SIM卡讀寫設(shè)計(jì)時(shí)應(yīng)該注意數(shù)據(jù)傳輸時(shí)每一個(gè)數(shù)據(jù)位的寬度,然后按照ISO7816的標(biāo)準(zhǔn)編寫程序。首先是接收到正確的復(fù)位應(yīng)答信號(hào)(ATR),其次是向SIM卡發(fā)送命令,得到正確的返回?cái)?shù)據(jù)和狀態(tài)標(biāo)志。

2.1 ETU的計(jì)算

    ETU(基本時(shí)間單位)就是SIM卡I/O腳上輸入/輸出每一位數(shù)據(jù)的時(shí)間,計(jì)算公式是; 

    其中:參數(shù)F和D分別是時(shí)鐘頻率轉(zhuǎn)換因子和波特率調(diào)整因子,這里使用默認(rèn)的速率,即F=372,D=1;使用的時(shí)鐘頻率f是4MHz。可以計(jì)算出基本時(shí)間單位是93μs。

2.2 基本數(shù)據(jù)幀結(jié)構(gòu)

    通信使用的協(xié)議是ISO7816-3所規(guī)定的T=0的異步半雙工字符傳輸協(xié)議?;镜臄?shù)據(jù)幀是由1個(gè)起始位(低電平)、8個(gè)數(shù)據(jù)位和1個(gè)奇偶校驗(yàn)位組成的,如圖2所示。其中,校驗(yàn)位是將8個(gè)數(shù)據(jù)位與其自身做偶校驗(yàn),也就是其中1的個(gè)數(shù)必須足偶數(shù)。起始位不做校驗(yàn)運(yùn)算。在保護(hù)時(shí)間內(nèi)SIM卡和單片機(jī)都要處于高電平(即I/O口是高電平)。在T=O協(xié)議里,如果SIM卡或者單片機(jī)檢測(cè)到奇偶校驗(yàn)結(jié)果不正確,則在保護(hù)時(shí)間內(nèi)把I/O端口拉低,以示出錯(cuò)。 

 基本數(shù)據(jù)幀結(jié)構(gòu)

2.3 SIM卡的APDU結(jié)構(gòu)

    應(yīng)用協(xié)議數(shù)據(jù)單元APDU(Application Protocol Data Units)包括了命令A(yù)PDU以及應(yīng)答APDU,其結(jié)構(gòu)如下: 

SIM卡的APDU結(jié)構(gòu)

    其中:CLA是指令的類別,A0被制定為GSM的應(yīng)用;INS是指令代碼;Pl、P2、P3是指令參數(shù),P3指示的是數(shù)據(jù)的長(zhǎng)度;Data就是要傳輸?shù)臄?shù)據(jù);SWl和SW2就是命令處理后返回的狀態(tài)。

2.4 基本程序模塊的設(shè)計(jì)

    設(shè)myBit為從I/O端口采樣的存儲(chǔ)變量,設(shè)Parity為奇偶校驗(yàn)變量,Parlty的初始化值為0。每次從I/O口采樣后,myBit都要與Parity進(jìn)行一次“異或”,結(jié)果放入Parity。這樣采樣9次后,如果Parity的最終值是0,就說(shuō)明奇偶校驗(yàn)正確;如果不是0,就說(shuō)明讀取數(shù)據(jù)失敗,返回錯(cuò)誤信息,要求發(fā)送者重發(fā)。 

第1頁(yè)第2頁(yè)

    讀1字節(jié)的基本程序流程如圖3所示。 

讀1字節(jié)的基本程序流程

    具體子程序如下: 

    按照以上接收一個(gè)字節(jié)程序的框架,可以很方便地設(shè)計(jì)出發(fā)送一個(gè)字節(jié)的程序。只是在發(fā)送字節(jié)時(shí),在發(fā)送完奇偶校驗(yàn)位后,一定要轉(zhuǎn)為接收模式。如果在接下來(lái)的一個(gè)ETU里,I/O端口保持高電平,則說(shuō)明發(fā)送數(shù)據(jù)正確;如果I/O端口被拉低,為低電平,就說(shuō)明發(fā)送數(shù)據(jù)錯(cuò)誤,要重發(fā)。

結(jié)語(yǔ)

    本文介紹了基于ST7267讀寫SIM卡的方法。相對(duì)于其他硬件讀卡芯片,這種用軟件實(shí)現(xiàn)的方法更加靈活,而且可以實(shí)現(xiàn)多種設(shè)備(例如U盤和SIM卡讀卡器)的整合,這樣可以降低產(chǎn)品的成本。

第1頁(yè)第2頁(yè)

本文關(guān)鍵詞:sim卡,st7267,單片機(jī)
回到頂部