接觸式IC卡讀卡器的設計與實現(xiàn)_第1頁
接觸式IC卡讀卡器的設計與實現(xiàn)_第2頁
接觸式IC卡讀卡器的設計與實現(xiàn)_第3頁
接觸式IC卡讀卡器的設計與實現(xiàn)_第4頁
接觸式IC卡讀卡器的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、 /2012.10/ 接觸式IC卡讀卡器的設計與實現(xiàn)重慶電子工程職業(yè)學院 何碧貴【摘要】 針對接觸式IC卡常用于身份認證,要求其高保密性,本文提出利用定時器的PWM輸出與輸入捕捉功能,設計出一種符合ISO7816協(xié)議的字符收發(fā)時序,利 于ST微處理器實現(xiàn)一個接觸式IC卡讀寫器?!娟P(guān)鍵詞】 保密性;ISO7816協(xié)議;ST微處理器1.引言在 現(xiàn) 實 生 活 中 , 某 些 特 殊 的 操 作 會涉及到許多機密,就需要更高權(quán)限的 人員進行授權(quán)。如銀行卡密碼掛失重置 的過程,就需要特殊身份的人員進行授 權(quán),而高權(quán)限人員一般都是通過在讀卡 器中插入卡片的方式進行授權(quán)。這種接 觸式IC卡具有很高的安全性

2、,常用于身 份認證之類的用途。本文闡述了如何利于ST微處理器實 現(xiàn)一個接觸式IC卡讀寫器。2.系統(tǒng)總體方案讀卡器的本質(zhì)就是為PC機與IC卡之 間提供一個通信的媒介。負責解釋PC語 言和IC卡語言,充當一個翻譯的作用。 為此需要一個接觸式IC卡,用于身份認 證;要有一個通用的對外接口,方便系 統(tǒng) 連 接 ; 提 供 一 個 或 多 個 工 作 狀 態(tài) 的 燈;故障時能提供一個明確的報警,以 提醒用戶。如圖1所示。從圖1可知:系統(tǒng)采用RS232作為PC 接口,RS232是PC機的標配,適應范圍較 廣。行業(yè)中使用最多的也是RS323,方便 讀卡器與以前系統(tǒng)相接;采用STM32F103作為處理器,其U

3、ART接口能滿足PC機與 系統(tǒng)之間的通信要求,其PWM功能能實現(xiàn) 終端與IC卡之間的通信要求。為防止終端出現(xiàn)故障時損壞IC卡, 在STM32F103與IC卡之間,系統(tǒng)提供一個 保護芯片,即TDA8024。TDA8024在CPU與 IC卡之間提供一個透明通道,但可以為 IC卡插入取出時提供一個靜電保護,在 IC卡發(fā)生接觸故障或用戶非法取出IC卡 時,能提供一個快速下電過程,以保護 IC卡。3.系統(tǒng)硬件設計系統(tǒng)硬件主要分為四個部分,分別 是主控(STM32F103設計、RS232驅(qū)動 設計、IC卡驅(qū)動設計、電源設計。 3.1 主控設計系統(tǒng)主控芯片為STM32F103。STM-32F103使用高性能

4、的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為72MHz,內(nèi)置 高速存儲器(高達128K字節(jié)的閃存和20K 字節(jié)的SRAM,豐富的增強I/O端口和聯(lián) 接到兩條APB總線的外設。所有型號的器件都包含2個12位的ADC、3個通用16位定時器和一個PWM定時器,還包含標準和先進的通信接口:多達2個I2C和SPI、3個USART、一個USB和一個CAN。系統(tǒng)主要使用RS232、3個定時器(PWM兩個功能。STM32F103硬件電路圖如圖2。TX、RX為UART接口,負責與PC機通信。BUZZER為蜂鳴器控制口。LED_PWRON為卡片上電指示燈控制口。LED_PRES為卡片插入指標燈控

5、制口。CLK、RST、IO、PWRSRC、CMDVCC、OFF與TDA8024接口,負責與IC卡通信。3.2 RS232驅(qū)動設計STM32F103的UART接口為TTL電平,PC機串口為RS232電平,兩者之間通過SP3232進行轉(zhuǎn)換。RS232驅(qū)動電路圖如圖3。3.3 IC卡驅(qū)動設計STM32F103雖然自帶了兼容ISO7816協(xié)議的UART接口,但UART對時鐘的處理比 較 弱 , 并 不 能 確 保 產(chǎn) 品 能 通 過 銀 聯(lián)相 關(guān) 認 證 。 因 此 , 系 統(tǒng) 使 用 定 時 器 中的PWM輸出及輸入捕捉兩項功能來模擬ISO7816。這種模擬可以使用IC卡通信精確到單個時鐘沿。IC卡

6、驅(qū)動電路圖如圖4所示。CMDVCC為電源開關(guān),低電平有效。CMDVCC用普通IO口線控制。PWRSRC為電源選擇,高電平為5V,低電平為3V。系統(tǒng)不支持1.8V卡,目前國內(nèi)一般都使用5V卡。PWRSRC用普通IO口線直接控制。RST為復位,低電平有效。RST使用定時器4的PWM輸出功能,確保波形精確性。CLK為時鐘。CLK使用定時器2的PWM輸出功能,確保波形精確性。IO為數(shù)據(jù)線,雙向輸入輸出。IO使用定時器3的輸入捕捉功能,確保每個數(shù)據(jù)所在的時鐘沿。OFF為卡檢測線。高電平為有卡。同時在電源打開時,若發(fā)生硬件故障時, 會自動改變?yōu)榈碗娖?同時自動去激活 操作,以保護卡片。OFF使用中斷口,以

7、 便于實時監(jiān)測卡片動態(tài)。3.4 電源設計系統(tǒng)通過USB供電,USB接口為5V, STM32F103電壓為2.0V-3.6V,TDA8024為3V或5V,因此系統(tǒng)最終采用3.3V供 電。系統(tǒng)使用LM1117-3.3穩(wěn)壓芯片提供 一個穩(wěn)定的3.3V電源。電源電路圖如圖5。4.系統(tǒng)軟件設計系統(tǒng)軟件設計主要包括IC卡驅(qū)動設 計、RS232驅(qū)動設計、主流程設計。本文 主要對IC卡驅(qū)動的設計進行詳細介紹。 RS232驅(qū)動設計及主流程都比較簡單,就 不再單獨介紹。IC卡驅(qū)動的設計主要有兩點,物理 傳輸與通信協(xié)議。4.1 物理傳輸物理傳輸包括觸點激活時序、復位 時序、觸點釋放時序、字符幀時序。 物理傳輸設計的

8、總方案是用定時器 的PWM輸出、輸入捕捉實現(xiàn)RST、CLK、IO 的功能,利用定時器方式能實現(xiàn)波形精 確到單個CLK。RST、CLK、IO各自使用一 個定時器。定時器初始化步驟:CLK、RST、IO為普通IO口推挽輸出 模式。CLK:PWM輸出,輸出3MHz。RST:PWM輸出,0-42250輸出低電 平,42250-65525輸出高電平。IO:輸入捕捉,根據(jù)捕捉寄存器來 確認所處CLK。RST、IO所處定時器與CLK定時器同 步啟動。啟動CLK定時器。4.1.1 觸點激活時序ISO7816協(xié)議要求IC卡正確插入接口 設備后,觸點必須按如下方式激活,如 圖6。觸點激活時序不是一個單獨的時序,

9、它是伴隨著冷復位時序一起實現(xiàn)的。 4.1.2 復位時序 -132- 復位時序又分為冷復位時序和熱復 位時序。在觸點激活后,終端將發(fā)出一個冷 復位信號,并從IC卡獲得一個復位應答 信號,如圖7,過程如下:在冷復位過程之后,如果收到的復 位應答信號不能滿足規(guī)定,終端將啟動 熱復位并從IC卡獲得復位應答,見圖8。 其過程如下:系統(tǒng)為編程方便,將冷復位時序和 熱復位時序統(tǒng)一合為一個復位時序。根 據(jù)復位標志是冷復位標志還是熱復位標 志執(zhí)行不同步驟:若熱復位,則IO切換至輸入捕捉模 式。若冷復位,則CMDVCC=1(關(guān)閉電 源,PWRSRC=1(國內(nèi)卡片一般為5V, RST=0,CLK=0,IO=0。等待

10、,確保RST定時器小于100。 若冷復位,則CLK切換至PWM輸出模 式,輸出時鐘。等待,確保RST定時器大于42550。 RST切換到普通IO口模式,且輸出高 電平。接收ATR數(shù)據(jù)。4.1.3 觸點釋放時序作為卡片操作的最后一步,根據(jù)交 易的正?;虍惓=Y(jié)束(包括在卡片操作 過程中將卡片從接口設備中拔出,終 端必須如下釋放接口設備觸點,如圖9。 根據(jù)系統(tǒng)要求,按如下步驟設計: RST切換到普通IO模式,且輸出低電 平等待10個NOP周期。CLK切換至普通IO模式,且輸出低電 平等待10個NOP周期。IO切換至普通IO模式,且輸出低電 平等待10個NOP周期。CMDVCC輸出高電平,關(guān)閉電源。

11、4.1.4 字符幀數(shù)據(jù)在I/O上以如下所述的字符幀方 式傳輸,如圖10。字符幀時序分為讀、寫兩部分。 根據(jù)字符幀時序,按如下步驟設計 字符幀讀操作:計算讀操作起始時間及結(jié)束時間。 通過定時器延時至起始時刻,清捕 捉標志。檢測捕捉標志,且判斷時間是否超 時。若無捕捉標志或捕捉標志已超時, 退出,返回起始位超時錯誤。延時0.2etu,檢測IO狀態(tài),若IO為高,則跳至第3步執(zhí)行。延時0.2etu,檢測IO狀態(tài),若IO為高,則跳至第3步執(zhí)行。延時0.2etu,檢測IO狀態(tài),若IO為高,則跳至第3步執(zhí)行。延時0.4etu。延時0.5etu,檢測IO狀態(tài),IO狀態(tài)即為數(shù)據(jù)位。延時0.5etu。循環(huán)9次,最

12、后一位為校驗位。(國內(nèi)卡一般都是T0卡,因此系統(tǒng)僅T0協(xié)議判 斷 檢 驗 位 , 若 校 驗 位 正 確 , 退出,返回無故障。若是第5次校驗錯誤,退出,返回校驗錯誤。延時0.5etu,IO輸出低電平,延時1etu。跳至第1步執(zhí)行。根據(jù)字符幀時序,按如下步驟設計字符幀寫操作:通過定時器延時至起始時刻。IO輸出低電平,延時1etu。IO根據(jù)發(fā)送字節(jié)及校驗位連續(xù)輸出9次電平,每次輸完延時1etu。延時1etu,檢測IO狀態(tài)。若 I O 為 高 電 平 , 退 出 , 返 回 無 故障。若連續(xù)5次發(fā)送錯誤,退出,返回發(fā)送錯誤。重新計算發(fā)送起始時刻,起始時刻為同方向最小發(fā)送間隔時間。跳到第1步執(zhí)行。4

13、.2 通信協(xié)議通信協(xié)議同時也是IC卡對外的接口,主要分為上電、下電、APDU三個接口。4.2.1 上電上電接口包括了觸點激活時序、觸點釋放時序、復位時序三個部分,同時判斷接收的ATR數(shù)據(jù)是否符合ISO7816規(guī)范。上電過程如下:檢測當前狀態(tài)卡狀態(tài),若是處于激活狀態(tài),則先下電。置冷復位狀態(tài)。IC卡復位。接收ATR第一個數(shù)據(jù)。若第一個數(shù)據(jù)不是3B或3F,退出,返回ATR_TS錯誤。接收T0,并根據(jù)T0確定后續(xù)TA1、TB1、TC1、TD1、歷史字符是否存在。若存在TA1,接收TA1。否則跳過此步驟。若存在TB1,接收TB1。否則跳過此步驟。若存在TC1,接收TC1。否則跳過此 步驟。若存在TD1,

14、接收TD1,并根據(jù)TD1確 定后續(xù)TA2、TB2、TC2、TD2是否存在。 否則跳過此步驟。若存在TA2,接收TA2。否則跳過此 步驟。若存在TB2,接收TB2。否則跳過此 步驟。若存在TC2,接收TC2。否則跳過此 步驟。若存在TD2,接收TD2,并根據(jù)TD1確 定后續(xù)TA3、TB3、TC3、TD3是否存在。 否則跳過此步驟。若存在TA3,接收TA3,否則跳過此 步驟。若存在TB3,接收TB3,否則跳過此 步驟。若存在TC3,接收TC3,否則跳過此 步驟。若存在TD3,接收TD3,并根據(jù)TD1確 定后續(xù)TA4、TB4、TC4是否存在。否則跳 過此步驟。燈TDA8024STM32F103串口P

15、WMIO接觸式 IC卡 蜂鳴器IO電源UART 圖1 系統(tǒng)總體框圖圖2 STM32F103硬件電路圖圖3 RS3232驅(qū)動電路圖圖4 IC卡驅(qū)動電路圖表1 C-APDU4種情況情況 結(jié)構(gòu)1CLAINSP1 P22CLAINSP1 P2Le3CLAINSP1 P2Le Data4CLAINSP1 P2Le Data Le -133-/2012.10/ -134- /2012.10/若存在TA4,接收TA4,否則跳過此 步驟。若存在TB4,接收TB4,否則跳過此 步驟。若存在TC4,接收TC4,否則跳過此 步驟。若 存 在 歷 史 字 符 , 則 接 收 歷 史 字符。根據(jù)TA1、TA2確定是否需

16、要發(fā)送PPS 幀。若需要則發(fā)送PPS幀。根據(jù)ATR規(guī)范,判斷ATR數(shù)據(jù)是否正 確,并確定與之相關(guān)的各項參數(shù)。若ATR數(shù)據(jù)符合規(guī)范,則置卡片激活 狀態(tài),退出,返回ATR數(shù)據(jù)。若錯誤碼為拒絕ATR,且當前復位為 冷復位,則置熱復位標志,跳至第3步驟 執(zhí)行。若當前復位為熱復位,則下電, 退出,返回拒絕ATR錯誤碼。其他錯誤碼,則下電,退出,返回 相應錯誤碼。4.2.2 下電下電操作僅包括了觸點釋放時序。 觸點釋放時序清卡片激活狀態(tài)標志。在卡片處于激活狀態(tài)時,用戶可能 會因某種原因突然將卡片取走,為了在 這種狀態(tài)下保護卡片,TDA8024會強制 性執(zhí)行芯片級的下電操作。且OFF采用 中斷模式,會實時檢

17、測到此種狀態(tài),將 CMDVCC置高,關(guān)閉卡片電源。4.2.3 APDUAPDU分為C-APDU、R-APDU。 C-APDU分為4種情況,見表1。 APDU實現(xiàn)步驟:檢測C-APDU數(shù)據(jù)正正確性,若不正 確,則退出,返回輸入?yún)?shù)錯誤碼。確認INS、LE、LC等參數(shù)。若C-APDU是第1種情況,則置P3=0。發(fā)送命令頭CLA、INA、P1、P2、 P3。接收過程字。若過程字是INS,且LC>0,則發(fā)送 LC個數(shù)據(jù)。跳至第4步驟。若過程字是INS,且LE>0,則接收 LE個數(shù)據(jù)。跳至第4步驟。若過程字是INS,且LC=0、LE=0, 則退出,返回IC故障錯誤碼。若過程字是INS補碼,且

18、LC>0,則 發(fā)送1個數(shù)據(jù),LC-,跳至第4步驟。若過程字是INS補碼,且LE>0,則 接收1個數(shù)據(jù),LE-,跳至第4步驟。若過程字是INS補碼,且LC=0、LE =0,則退出,返回IC故障錯誤碼。若過程字是60,則等待一個額外時 間后,跳至第4步驟。若過程字是61XX,且LC>0,則退 出,返回IC卡錯誤錯誤碼。若過程字是61XX,且LC=0,則發(fā)送 00C00000XX,且LE=XX,跳至第4步驟。若過程字是6CXX,且LC>0,則退 出,返回IC卡錯誤錯誤碼。 圖5 電源電路圖圖6 觸點激活時序圖7 冷復位時序圖8 熱復位時序圖9 觸點釋放時序圖10 字符幀時序若過程字是6CXX,且LC=0,則P3=XX,重新發(fā)送命令碼,且LC=0、LE=XX,跳至第4步驟。若過程字是6XXX,則表明收到的是 狀態(tài)字,則退出,返回無故障。此處無 故障表示操作無故障,具體的狀態(tài)由上 層根據(jù)狀態(tài)字判斷。若過程字是其他數(shù)據(jù),則退出,返 回IC卡錯誤錯誤碼。5.總結(jié)本文創(chuàng)作的特點:利用定時器的PWM 輸出與輸入捕捉功能,設計出一種符合 ISO7816協(xié)議的字符收發(fā)時序,這種時序 比一般單片機自帶的兼容ISO7816協(xié)議的 UART能更精細精確的控制,更能通過銀 聯(lián)的相關(guān)認證。同時,只要帶有PWM輸 出、輸入捕捉功能的單片機都能方便的 進行移植。參

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論