CPU卡程式設計例項(二)軟體設計

2021-07-31 03:24:41 字數 1683 閱讀 6782

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卡傳送乙個位元組函式 函式名稱 cardsendchar 函式功能 向cpu卡傳送一位元組 入口引數 csendchar,要傳送的位元組 出口引數 無 描述 傳送10位,第一位起始位 始終為低 第10位是校驗位,最多發3次,void cardsendchar unsigned char ...

CPU卡程式設計例項(二十二)CPU卡內部認證

函式名稱 cardinsideverify 函式功能 卡內部認證 輸入引數 pcrecardrand 卡產生的隨機數,keyid 認證金鑰識別符號 輸出引數 pcrecedatabuff,加密後的資料 描述 發命令頭 發命令資料 發 取響應資料 判斷是否正確 unsigned char cardin...

CPU卡程式設計例項(六)ETU配置

1 資料位寬時間 etu 計算程式 前面已經說過,資料位寬是cpu卡程式設計中非常重要的一環,涉及到資料讀寫的可靠性和穩定性。下面這段程式就是在iar環境下,基於msp430微控制器c語言的資料位寬計算程式。函式名稱 delay1xetu 函式功能 延時n個資料位寬的時間 輸入引數 idelay 輸...