陳俊杰,朱志杰,溫耀軍
(湖南大學 電氣與信息工程學院,湖南 長沙 410082)
智能卡(Smart Card)是將一個專用的集成電路芯片鑲嵌于符合ISO7816標準或者ISO14443標準的PVC(或ABS等)塑料基片中,封裝成外形與磁卡類似的卡片。智能卡已在眾多領域獲得廣泛應用,并取得了初步的社會效益和經(jīng)濟效益。
市面上的智能卡(Smart Card)可以分成接觸式智能卡ICC(Integrated Circuit Cards)和非接觸式智能卡PICC(Proximity Card),與之對應的讀卡器則分成接觸式和非接觸式兩類[1]。
巨大的智能卡市場更加速了與之相配套的讀卡器產(chǎn)業(yè)的發(fā)展。一般讀卡器僅支持接觸式智能卡ICC或非接觸式智能卡PICC其中的一種,這無形中增加了讀卡器的成本。在此背景下,本文探討了一款能兼容接觸式和非接觸式兩種智能卡的讀卡器。
該多功能讀卡器主要由Sitronix的主控芯片ST2211[2]和NXP的射頻芯片PN532組成。ST2211芯片內(nèi)部集成接觸式智能卡控制模塊,該模塊支持符合ISO7816標準和EMV模塊的接觸式智能卡。射頻芯片PN532內(nèi)部具有輸出驅動緩存器,能讀寫符合ISO14443 TypeA和TypeB的非接觸式智能卡。ST2211與PN532之間采用標準SPI通信。ST2211有兩個16位的專用于SPI通信的輸入輸出寄存器,其具體使用的位數(shù)由BC[3:0]確定。SPI速率是ST2211系統(tǒng)時鐘的分頻,分頻數(shù)由SCK[2:0]確定。
圖1 多功能讀卡器組成框圖
多功能讀卡器的組成結構如圖1所示。主控芯片ST2211通過串口或USB與上位機相連,串口速率支持9 600 b/s和115 200 b/s,USB則支持2.0全速通信。在接觸式方面,ST2211通過標準的ISO7806智能卡接口與接觸式插座相連。對于非接觸式卡,ST2211通過頻率為1 MHz的SPI接口與PN532相連,其中輸入、輸出寄存器均設置為8位,且選擇模式0——時鐘信號高電平有效,數(shù)據(jù)信號在時鐘信號第一個上升沿采樣。
讀卡器的硬件設計主要包括接主控芯片ST2211電路設計、射頻芯片PN532外圍電路設計和電源設計三方面。
芯片 ST2211引腳數(shù)為 118, 有 PA、PB、PC、PD 4組通用I/O口,共28個,其中PD口僅為4個引腳。其中PD 4個引腳均可接入外部中斷,片內(nèi)32 KB的ROM,最大可外擴到32 MB,內(nèi)部包含USB2.0控制模塊(最高速度支持12 MB)、看門狗模塊和智能卡控制模塊。
ST2211的主要外圍硬件電路如圖2所示。主控芯片擴展了8MB的外部Flash——EN29LV800B,其結構為1024 K×8 bit,需要 23 根地址線(A0~A22)和 8 根數(shù)據(jù)線(D0~D7),并與ST2211相應引腳相連。片選信號/CE通過三針引腳與主控芯片引腳MMD/CS0相連。當MMD/CS0接地,芯片復位后首先訪問內(nèi)部的32 KB ROM,反之當MMD/CS0與EN29LV800B的片選引腳/CE相連,則復位后從外部的8 MB Flash處開始運行。
接觸式智能卡控制模塊的連接方式如圖2所示,其中“SC_RST,SC_CLK,SC_IO”分別為接觸式 IC卡的復位、時鐘和IO數(shù)據(jù)引腳,而電源引腳通過三引腳插針與SC_VCC或 SC_VDD相連,如圖 2中“J2”所示。SC_VDD經(jīng)過MOS管后接至SC_VCC。ST2211的用戶手冊推薦使用SC_VCC與IC卡的電源引腳相連,但實際中電壓經(jīng)過MOS管后有0.4 V壓降,所以是將SC_VDD與IC卡的電源引腳相連。
PN532是NXP公司推出的應用于13.56 MHz非接觸式通信的高集成度IC卡讀寫芯片,支持ISO14443 TypeA&TpyeB的所有層協(xié)議[3],其內(nèi)部的發(fā)送器模塊具有輸出驅動緩存器,讀寫距離達100 mm。接收器模塊接收天線傳來的信號,對該信號進行解調和解碼形成相關數(shù)據(jù)。數(shù)字模塊負責按ISO14443規(guī)定幀格式處理該數(shù)據(jù),并使用奇偶校驗和CRC校驗進行錯誤檢測,其硬件結構如圖3所示。
(1)總線類型設計
PN532內(nèi)部有三種總線類型:HUS(全雙工串行總線)、I2C(雙線式串行總線)和 SPI(串行總線)。 因為 PN532與主控芯片ST2211之間采用SPI模式進行通信,所以16和 17號引腳分別接“0”和“1”實現(xiàn) SPI模式通信,圖3中的24號引腳接高電平表示選擇 SPI通信模式“0”,即時鐘信號高電平有效,數(shù)據(jù)信號是在時鐘信號第一個上升沿采樣。因為PN532每處理完ST2211一個命令后引腳“IRQ”會產(chǎn)生中斷,所以要與 ST2211的具有外部中斷的引腳“PD1”相連。
(2)天線設計
該讀卡器系統(tǒng)屬于電感耦合射頻系統(tǒng),PN532外接天線產(chǎn)生磁通用于向非接觸式智能卡提供電源并在讀卡器和非接觸式智能卡之間傳送信號[4]。因此,讀卡器天線的構造有兩個基本要求:①使天線線圈的電流最大,用于產(chǎn)生最大的磁通量;②足夠的帶寬,以無失真地傳送數(shù)據(jù)調制和載波信號。
根據(jù)頻率范圍的不同,使用不同的方法將天線線圈接到讀卡器發(fā)送器的輸出端,通過功率匹配將天線線圈直接連接到功率輸出級。
由于PN532是低功耗設計,因此智能卡和天線之間的耦合系數(shù)不能低于0.3。天線的直徑要求介于0.5~1.5 mm之間。該讀卡器天線采用總面積為65 mm×54 mm、天線導體寬度為1 mm、圈數(shù)為3圈的方形天線。
主控芯片ST2211輸入電壓為5.0~6.8 V,正常情況下有兩種供電方式:直流DC供電和USB供電。具體的硬件結構如圖4所示。
當僅有USB接入時,USBVBUS電源電壓經(jīng)過集成電路IC(RT9285)由5 V升為7 V。同時ST2211內(nèi)部特殊寄存器“Usb_on_flag”被置位,表示 USB被識別,調節(jié)器 1被使能,將 5 V降為 3.3 V并經(jīng)過引腳“VU5_3”接至引腳“VCC”給ST2211內(nèi)部MCU供電。同時調節(jié)器2被禁止,調節(jié)器3被使能,將7 V降至5 V,經(jīng)過引腳“VBT6_5” 與 引 腳 “SV_VDD” 相 連 , 其 中 寄 存 器“SCVCC_EN”通過 MOS管可以控制接觸式 IC卡的電源 引腳“SC_VCC”。
同理,當ST2211與上位機通信僅使用串口時,需外接直流DC,將220 V交流轉換成7 V直流。此時調節(jié)器2和調節(jié)器3被使能,調節(jié)器1被禁止。調節(jié)器2將7 V直流降至3.3 V,給內(nèi)部MCU供電。如果USB和串口同時被接入,則在驅動層面串口通信被禁止,僅使用USB接口。
如圖 4所示,“SWITCH”是常開開關,與智能 IC卡的卡座機械相連,僅當IC卡插入卡座時才閉合。“SC_DET”為智能 IC卡檢測引腳,當 IC卡插入時,開關“SWITCH”閉合,則寄存器SCSB被置位。
圖4中LVD模塊為低電壓檢測模塊 (Low Voltage Detector),電壓檢測值可由引腳“VIN”讀出。按圖4中連接方式,當 R3為 300 kΩ,R4為 100 kΩ 時,可以由式(1)計算得到檢測電壓為5 V。
當?shù)碗妷嚎刂萍拇嫫鱈VDEN被置位時,LVD被使能,引腳“VIN”上的數(shù)值經(jīng)過 30 μs后處于穩(wěn)定狀態(tài),即可以進行讀取。因為LVD模塊消耗電流,所以當?shù)碗妷簷z測完成后,應將LVDEN清零。
射頻芯片PN532基于80C51內(nèi)核,內(nèi)部包含工作載波為13.56 MHz的非接觸式通信模塊。整個芯片工作電壓為3.3 V,其供電結構如圖5所示。
圖5中的“VBTIN”網(wǎng)絡結點如圖4中所示,為USBVBUS經(jīng)過RT9285升壓后與7 V直流DC的連接處。由圖5可知VBTIN經(jīng)過U5穩(wěn)壓成3.3 V后供電給PN532,同時在VBTIN與U5之間加入了一個絕緣柵型增強型P溝道的場效應管來控制電路的通斷,如果直接用ST2211的PC5引腳(普通GPIO)來驅動G極,無法將場效應管完全關斷,所以為了增大驅動能力,在PC5外還加了NPN的三極管。當讀卡器通過USB與上位機相連后,如果主機休眠則可以選擇性地通過PC5關閉PN532供電,減少USB的電流消耗。
該讀卡器系統(tǒng)采用了USB和串口兩種與上位機通信方式,需經(jīng)過自定義的驅動層將兩種通信接口的數(shù)據(jù)進行打包成符合微軟標準CCID的格式。軟件架構如圖6所示。其中接觸式IC卡的識別是通過卡片插入時相應的開關被閉合來識別的,而非接觸式智能卡則是通過每秒4次輪詢磁場中是否有卡片來進行識別的。
圖6 多功能讀卡器的軟件架構
讀卡器上的主要流程如圖7所示,每次重新啟動后,處理各種中斷,并初始化相關寄存器,然后進入程序主循環(huán)。ST2211檢測與上位機通信接口是否已經(jīng)建立,如果有USB中斷或者串口中斷發(fā)生則將數(shù)據(jù)按標準CCID格式進行打包并繼續(xù)向下處理,否則仍然在主程序處循環(huán)。
圖7 多功能讀卡器主程序流程圖
本文對兼容接觸式和非接觸式卡片的多功能讀卡器的硬件設計進行了較為詳細的論述,同時對讀卡器系統(tǒng)的軟件架構和總體流程作了簡介,對于文中涉及的芯片的開發(fā)使用有具體指導意義。
[1]李翔.智能卡研發(fā)技術與工程實踐[M].北京:人民郵電出版社,2003.
[2]Sitronix.ST2211 User’s Manual.Version 0.2 October 2006.
[3]Philips Co Ltd.PN532 datasheet.Rev.3.0-15,2006.
[4]Philips Co Ltd.PN532 User’s Manual.Rev.06-07.2006.