林小平,魯 青,鄧杰航
(廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,廣東廣州510006)
IC卡自問世以來,經(jīng)歷了從存儲器卡、邏輯加密卡到智能卡(CPU卡)等幾個階段[1,2]。隨著射頻識別技術(shù)的迅速發(fā)展,非接觸式IC卡越來越受到人們關(guān)注。智能卡代替?zhèn)鹘y(tǒng)的現(xiàn)金支付,不僅安全,而且可以減少現(xiàn)金流通,提高支付效率,在諸如超市、商場等場所中具有廣闊的應(yīng)用前景,因此對CPU卡及其相關(guān)讀寫設(shè)備的研究與應(yīng)用顯得極為必要。但是目前常用接觸式CPU可視卡存在以下問題:①卡片需要接觸才能完成通訊;②常用的LED可視裝置刷新頻繁,需要連續(xù)供電,功耗相對較高。在讀寫器方面,射頻識別(radio frequency identification,RFID)讀寫器系統(tǒng)與ZigBee、藍(lán)牙和Wi-Fi等技術(shù)不斷結(jié)合,系統(tǒng)復(fù)雜度日益增加。傳統(tǒng)的基于8位、16位或32位單片機(jī)[3-5]設(shè)計(jì)的RFID讀寫器系統(tǒng),由于無嵌入式操作系統(tǒng)支撐,已無法滿足在多接口、多協(xié)議、高性能等方面的要求。而基于ARM9、WinCE[6]或是ARM7、Linux[7]設(shè)計(jì)的讀寫器,雖然擁有嵌入式操作系統(tǒng),但是WinCE和Linux自身的開發(fā)環(huán)境相當(dāng)復(fù)雜,而且ARM9、ARM7芯片定位在一些高端應(yīng)用上,在一般的工業(yè)控制方面不具優(yōu)勢。針對以上問題,本文以非接觸式CPU電子紙[8]可視卡為對象,設(shè)計(jì)了一個讀寫器系統(tǒng)。該系統(tǒng)采用低成本、低功耗的STM32F107VCT6微控制器,基于精簡的開源FreeRTOS實(shí)時操作系統(tǒng)內(nèi)核[9]進(jìn)行開發(fā)。實(shí)驗(yàn)中以可視電子錢包的應(yīng)用為例,成功地解決了上述問題。
系統(tǒng)方案主要由讀寫器方案和卡片方案組成,系統(tǒng)實(shí)現(xiàn)過程:當(dāng)持有非接觸式CPU電子紙可視卡的顧客進(jìn)入超市消費(fèi)時,超市營業(yè)員通過PC機(jī)上的應(yīng)用軟件,完成讀寫器、可視卡及后臺數(shù)據(jù)庫之間的數(shù)據(jù)操作,實(shí)現(xiàn)可視電子錢包相關(guān)功能。
讀寫器設(shè)計(jì)方案如圖1所示,主要包括微控制器、MFRC522射頻模塊、電源模塊和看門狗及復(fù)位電路、LCD顯示模塊、天線匹配電路和串口通信模塊。
圖1 讀寫器結(jié)構(gòu)
微控制器選擇高性能、低成本、低功耗的STM32F107VCT6互聯(lián)型芯片,能夠支持以太網(wǎng)、USB OTG和CAN2.0B等外設(shè)接口同時工作。讀寫芯片采用MFRC522,工作頻率為13.56MHz,特點(diǎn)在于低電壓、低成本、體積小,支持ISO14443A[10]協(xié)議,具有SPI模式接口,傳輸速率高,而且讀寫芯片外圍電路少,有利于減少連線,縮小PCB板體積,降低成本。
鑒于卡片在超市應(yīng)用中基本要求是安全、方便、快捷,因此選擇AniCa可視卡。AniCa可視卡完全兼容ISO/IEC14443 TypeA和TypeB及ISO/IEC 7816標(biāo)準(zhǔn)協(xié)議,可以支持雙界面同時工作。與普通的邏輯加密卡相比,不僅擁有獨(dú)立的CPU、加密運(yùn)算協(xié)處理器等硬件結(jié)構(gòu),還具有片內(nèi)操作系統(tǒng)(chip operating system,COS)[11],各項(xiàng)技術(shù)指標(biāo)遠(yuǎn)遠(yuǎn)高于邏輯加密卡。在操作普通邏輯加密卡時只進(jìn)行一次密碼認(rèn)證,便可對卡進(jìn)行操作,安全性差,容易泄露密碼和產(chǎn)生偽卡。而在操作普通CPU卡時,用戶和普通CPU卡之間需要進(jìn)行多次的相互密碼認(rèn)證才能進(jìn)行后續(xù)操作,不僅大大提高了系統(tǒng)的安全性能,而且還能防止偽卡的產(chǎn)生。更重要的是AniCa可視卡實(shí)現(xiàn)了將普通CPU卡同電子紙顯示技術(shù)相結(jié)合,畫面分辨率高,顯示效果好,視覺感觀與普通的書寫紙幾乎相同,避免了大多數(shù)顯示設(shè)備出現(xiàn)強(qiáng)烈反光的現(xiàn)象。而且電子紙技術(shù)具有畫面記憶特性,一旦畫面顯示后不再耗電,此特點(diǎn)對于可視卡而言,是非常重要的優(yōu)勢。
采用四線SPI通信方式,通信的SPI時鐘由STM32F107VCT6產(chǎn)生。MFRC522設(shè)置為從機(jī)模式。將STM32F107VCT6的SPI1的SPI1_SCK、SPI1_M(jìn)ISO、SPI1_M(jìn)OSI設(shè)置為復(fù)用推挽輸出功能,SPI1_NSS置為普通IO口。將MFRC522的I2C引腳置低電平,EA引腳置高電平,MFRC522即支持SPI接口模式,對應(yīng)的SDA、D7、D6、D5引腳分別作為NSS、MISO、MOSI、SCK功能,MCU與MFRC522的SPI引腳互聯(lián)。
讀操作:首先片選MFRC522,將NSS電平拉低,然后將讀取數(shù)據(jù)的地址按表1規(guī)定的格式編碼并發(fā)送出去,MFRC522接收到讀命令后將對應(yīng)地址的數(shù)據(jù)通過MISO發(fā)回主機(jī)。最后將NSS電平拉高。
表1 地址字節(jié)格式
寫操作:同樣先將NSS電平拉低,將目標(biāo)地址字節(jié)按表1規(guī)定的數(shù)據(jù)格式編碼并發(fā)送出去,再通過MOSI發(fā)送要寫入數(shù)據(jù),MFRC522對應(yīng)地址上的字節(jié)數(shù)據(jù)即可實(shí)現(xiàn)更新。
MCU和MFRC522之間多個數(shù)據(jù)傳送是通過MFRC522內(nèi)部64字節(jié)的FIFO緩存來處理的。當(dāng)微控制器發(fā)出一個命令后,MFRC522在命令執(zhí)行過程中可以根據(jù)命令要求訪問FIFO緩沖區(qū),從而實(shí)現(xiàn)對多數(shù)據(jù)的讀寫操作。
13.56 MHz射頻天線及其匹配電路如圖2所示,分為3部分:天線線圈、匹配電路(LC諧振電路)和EMC濾波電路。
在電感式耦合射頻系統(tǒng)中,讀寫器天線設(shè)計(jì)必須保證產(chǎn)生足夠強(qiáng)的磁通量,用于向非接觸CPU卡提供電源,基于調(diào)諧電路的帶通特性,天線的輸出能量必須保證足夠的帶寬,保證載波信號的傳輸。
濾波電路L4、L5的值設(shè)置為2.2u H,C61、C63的值均為20p F。由諧振頻率公式得到濾波器的截止頻率高于讀寫器的工作頻率,低于高次諧波頻率,可以有效抑制高頻諧波成分通過天線發(fā)射到周圍環(huán)境中。天線的電感公式為其中,l為一匝線圈長度,d為線圈寬度,天線為圓形K=1.07,方形K=1.47,N為線圈匝數(shù)。Q值若大于30,可在天線的兩邊分別串聯(lián)一個電阻以降低Q值,外加電阻
圖2 MFRC 522接口電路
系統(tǒng)軟件設(shè)計(jì)主要包括PC機(jī)端應(yīng)用軟件設(shè)計(jì)、讀寫器端程序設(shè)計(jì)和非接觸式CPU電子紙可視卡顯示子程序(以下簡稱為“CPU可視卡顯示子程序”)設(shè)計(jì)。
根據(jù)讀寫器使用情況,PC機(jī)端應(yīng)用軟件設(shè)計(jì)需要實(shí)現(xiàn)圖3所示功能。
PC機(jī)端應(yīng)用軟件通過讀寫器向非接觸式CPU電子紙可視卡發(fā)送應(yīng)用協(xié)議數(shù)據(jù)單元(application protocol data unit,APDU)指令,非接觸式CPU電子紙可視卡接收指令進(jìn)行處理,并將處理結(jié)果返回。讀寫器與PC機(jī)端應(yīng)用軟件交互的過程中,其底層程序只需提供一個APDU收發(fā)接口函數(shù)即可完成對所有APDU指令的處理。
3.2.1 FreeRTOS實(shí)時操作系統(tǒng)的移植
讀寫器端程序設(shè)計(jì)是基于嵌入式操作系統(tǒng)基礎(chǔ)上的。通過移植FreeRTOS內(nèi)核,實(shí)現(xiàn)底層硬件資源管理和任務(wù)調(diào)度。
FreeRTOS是一個開源免費(fèi)、可移植、易裁剪、調(diào)度策略靈活的迷你嵌入式實(shí)時操作系統(tǒng)內(nèi)核,能為資源有限的CPU提供多任務(wù)實(shí)時處理機(jī)制。FreeRTOS占用內(nèi)存小,約占0.5K的RAM空間,占FLASH空間約為1K,運(yùn)行效率高,非常適合移植到各種MCU中。由于FreeRTOS支持STM32F103RB芯片平臺,只需對其做少許修改便可很容易地移植到STM32F107VCT6微控制器中,通過對FreeRTOSConfig.h進(jìn)行適當(dāng)配置,可以定制一個適合應(yīng)用需求的開發(fā)平臺環(huán)境。上層應(yīng)用層軟件只需靈活調(diào)用FreeRTOS提供給用戶的系統(tǒng)級API函數(shù)就可完成任務(wù)狀態(tài)的切換。
3.2.2 讀寫器程序設(shè)計(jì)
讀寫器程序設(shè)計(jì)采用FreeRTOS事件驅(qū)動型應(yīng)用程序設(shè)計(jì)方式,工作流程如圖4所示。
圖3 PC應(yīng)用程序工作流程
圖4 讀寫器工作流程
讀寫器開機(jī)后,每隔一定的時鐘周期CPU會掃描中斷源并檢測是否有中斷請求。讀寫器與PC機(jī)端應(yīng)用軟件通過串口通信,當(dāng)CPU檢測到串口中斷事件后立即進(jìn)入串口接收中斷程序,將接收到的消息存入隊(duì)列并發(fā)送出去。隊(duì)列的創(chuàng)建利用FreeRTOS系統(tǒng)提供的API函數(shù)x QueueCreate完成,創(chuàng)建后的隊(duì)列交由系統(tǒng)內(nèi)核進(jìn)行管理。一旦消息隊(duì)列中有串口中斷消息,F(xiàn)reeRTOS內(nèi)核會將串口任務(wù)從消息隊(duì)列為空時的阻塞狀態(tài)喚醒,執(zhí)行串口任務(wù)內(nèi)部的非接觸式CPU電子紙可視卡操作子任務(wù),包括對非接觸式CPU電子紙可視卡初始化及APDU透明數(shù)據(jù)的交互。當(dāng)所有任務(wù)處理完畢,內(nèi)核自動進(jìn)入空閑任務(wù),最后回到CPU等待下一次中斷事件。
非接觸式CPU電子紙可視卡功能實(shí)現(xiàn)依賴于COS內(nèi)核,其負(fù)責(zé)非接觸式CPU電子紙可視卡數(shù)據(jù)的傳入與傳出、控制命令的執(zhí)行、管理文件、維護(hù)內(nèi)存空間、執(zhí)行加密算法以及電子紙顯示模塊的顯示。顯示原理為:顯示數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的位圖命令格式后,通過模擬串口傳送到電子紙顯示控制與驅(qū)動器顯存中,最終實(shí)現(xiàn)數(shù)據(jù)顯示更新,其設(shè)計(jì)流程如圖5所示。
非接觸式CPU電子紙可視卡內(nèi)部微控制器THD86FC09AC的GPIO1.2作為輸出端口與電子紙顯示控制及驅(qū)動器的數(shù)據(jù)輸入引腳相連,采用模擬串口方式進(jìn)行通信。在初始化階段先開啟內(nèi)部RC振蕩器的16MHz時鐘,配置GPIO1.2為輸出模式,并使能該IO端口。如果當(dāng)前工作在非接觸界面,利用TIMER0定時器延時40.96ms后立即切換成4M系統(tǒng)時鐘。然后設(shè)置WDT定時計(jì)數(shù)器的值使得模擬串口工作波特率為9600b/s,模擬串口發(fā)送函數(shù)必須是遵循“1位起始位、8位數(shù)據(jù)位、1位奇偶校驗(yàn)位、1位停止位”格式的數(shù)據(jù)流。
位圖命令分原始數(shù)據(jù)模式和數(shù)據(jù)保護(hù)模式,其中數(shù)據(jù)保護(hù)模式具有數(shù)據(jù)保護(hù)和糾錯功能。此模式位圖命令由82字節(jié)十六進(jìn)制數(shù)組成:包括11字節(jié)命令頭,68字節(jié)數(shù)據(jù)部分(包含虛擬字節(jié),起延時作用)和3字節(jié)總和校驗(yàn)字節(jié)。四字節(jié)的顯示數(shù)據(jù)經(jīng)過數(shù)據(jù)映射碼轉(zhuǎn)換后遵循數(shù)據(jù)保護(hù)模式下位圖命令格式進(jìn)行處理,并將處理結(jié)果送入模擬串口。
圖5 電子紙顯示模塊驅(qū)動流程
讀寫器先向非接觸式CPU電子紙可視卡地址為0x02000000的EEPROM存儲單元依次寫入0x14、0x15、0x26、0x27、0x28、0x29、0x30七字節(jié)數(shù)據(jù),然后再利用讀寫器讀取存放在該起始地址處的七字節(jié)數(shù)據(jù)并以十六進(jìn)制方式在串口調(diào)試助手顯示(如圖6所示)。測試結(jié)果表明,讀寫器讀寫準(zhǔn)確。
圖6 讀寫器系統(tǒng)讀寫測試
測試前先將編譯成功的COS下載到非接觸式CPU電子紙可視卡中,接著PC機(jī)通過讀寫器對非接觸式CPU電子紙可視卡進(jìn)行充值和消費(fèi)操作。圖7(a)圖和圖7(b)分別是對可視電子錢包充值300.00元的狀態(tài)及消費(fèi)25.00元后電子錢包余額275.00元的狀態(tài)。
圖7 可視電子錢包測試
本文根據(jù)普通CPU卡及讀寫器存在的接觸式通信、可視裝置刷新需連續(xù)供電及無嵌入式操作系統(tǒng)等問題,應(yīng)用AniCa非接觸CPU電子紙可視卡為對象進(jìn)行讀寫器系統(tǒng)設(shè)計(jì)。該讀寫器系統(tǒng)采用STM32F107VCT6微控制器,MFRC522射頻模塊,F(xiàn)reeRTOS嵌入式操作系統(tǒng),具有多接口、多協(xié)議、高性能,開發(fā)方便等特點(diǎn)。在實(shí)驗(yàn)中,本文針對超市的可視電子錢包的應(yīng)用進(jìn)行設(shè)計(jì),成功解決了傳統(tǒng)現(xiàn)金消費(fèi)交易效益低,安全性差和傳統(tǒng)電子錢包使用不夠直觀,不方便等問題。展望未來,本系統(tǒng)可以結(jié)合ZigBee、藍(lán)牙和Wi-Fi等技術(shù),實(shí)現(xiàn)可視卡與網(wǎng)絡(luò)的互聯(lián)。
[1]BAI Cuicui,XIA Chunlei,DAI Shuguang.Design and implementation of contactless CPU card reader[J].Radio Communications Technology,2012,38(5):50-52(in Chinese).[白翠翠,夏春蕾,戴曙光.非接觸式CPU卡讀寫器的設(shè)計(jì)與實(shí)現(xiàn)[J].無線電通信技術(shù),2012,38(5):50-52.]
[2]ZENG Xiaoping,REN Jiayu,XIONG Dong.Design of contactless IC card interrogator reader based on RFID[J].Computer Measurement &Control,2010,18(10):2357-2359(in Chinese).[曾孝平,任家峪,熊東.基于RFID的非接觸式IC卡讀寫器設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2010,18(10):2357-2359.]
[3]ZHU Xiaoting,YING Shiyan,KE Haibing.Design of CPU card reader based on ISO/IEC 14443 standard[J].Computer Applications and Software,2011,28(11):188-192(in Chinese).[朱小挺,應(yīng)時彥,柯海兵.基于ISO/IEC 14443標(biāo)準(zhǔn)的CPU卡讀卡器設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(11):188-192.]
[4]LI Dongxia,ZHANG Xueqing.Design of USB smart card reader based on Cortex-M3[J].Computer Engineering and Design,2010,31(12):2729-2732(in Chinese).[李冬霞,張雪慶.基于Cortex-M3的智能卡USB讀卡器設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(12):2729-2732.]
[5]WANG Xiumin,GAO Linghong.Design of RFID test system based on ARM[J].Computer Measurement &Control,2012,20(8):2045-2047(in Chinese).[王秀敏,高凌鴻.一種新的基于ARM的RFID測試系統(tǒng)設(shè)計(jì)研究[J].計(jì)算機(jī)測量與控制,2012,20(8):2045-2047.]
[6]WEN Ming,ZHU Yaping.The research of RFID read-write application based on WINCE[J].Journal of Hangzhou Dianzi University,2012,32(4):151-153(in Chinese).[聞明,朱亞萍.基于WINCE的RFID讀寫應(yīng)用的研究[J].杭州電子科技大學(xué)學(xué)報(bào),2012,32(4):151-153.]
[7]LIU Yicai,ZHANG Xiaocheng.Design of UHF RFID reader based on embedded Linux[J].Manufacturing Automation,2011,33(5):124-126(in Chinese).[劉義才,章小城.基于嵌入式Linux系統(tǒng)的UHF RFID讀寫器設(shè)計(jì)[J].制造業(yè)自動化,2011,33(5):124-126.]
[8]LI Qingcheng,BAI Zhenxuan,LIU Jianzhi,et al.Design and implementation for E-paper driver[C]//The 2nd International Conference on Computer Science and Information Technology,2009:187-190.
[9]Richard Barry.Using the freertos real time kernel--A practical guide[M].Real Time Engineers Limited,2009.
[10]ISO,IEC.ISO/IEC 14443:Identification cards--Contactless integrated circuit(s)cards-Proximity cards[S].2000.
[11]CHE Pingyue.Research and implementation of operating system core layer of smart card[D].Beijing:Beijing University of Posts Telecommunications,2010(in Chinese).[車平躍.智能卡操作系統(tǒng)內(nèi)核的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2010.]