, , , ,
(1.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室 電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室,北京100192; 2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計(jì)工程技術(shù)研究中心)
手機(jī)音頻讀卡器在燃?xì)饫U費(fèi)領(lǐng)域的應(yīng)用*
姜帆1,2,郭飛1,2,杜君1,2,王于波1,2,龐振江1,2
(1.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室 電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室,北京100192; 2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計(jì)工程技術(shù)研究中心)
基于預(yù)付費(fèi)燃?xì)獗淼腎C卡查詢(xún)與充值,提出一種手機(jī)音頻讀卡器解決方案,采用模塊化設(shè)計(jì)思想。在采用的技術(shù)方案中創(chuàng)造性地融入曼徹斯特(Manchester Encoding)編解碼技術(shù),有效地克服了手機(jī)音頻通信可靠性、適配性差的缺點(diǎn)。文中對(duì)項(xiàng)目研究的技術(shù)原理和讀卡器的軟硬件系統(tǒng)架構(gòu)做了詳細(xì)描述,并針對(duì)其中的一些技術(shù)難點(diǎn)提出解決思路。本項(xiàng)目達(dá)到了客戶(hù)要求,技術(shù)上得到了積累和提高。
手機(jī)音頻;讀卡器;曼徹斯特編碼;IC卡
近幾年來(lái)市面上出現(xiàn)了很多以智能手機(jī)為核心的讀卡器,如拉卡拉開(kāi)發(fā)的一系列刷卡器,有藍(lán)牙接口的、有手機(jī)音頻接口的,還有其他廠家開(kāi)發(fā)的,如樂(lè)刷、盒子支付等。這些讀卡器都是應(yīng)用在金融領(lǐng)域,主要針對(duì)的是磁條卡、芯片卡的轉(zhuǎn)賬、查詢(xún)、刷單等,本文根據(jù)燃?xì)饫U費(fèi)領(lǐng)域的需求,采用不同于其他廠家的音頻口通信技術(shù),研發(fā)了一款手機(jī)音頻讀卡器,該讀卡器具有成本低、使用方便、即插即用的特點(diǎn),使用該讀卡器和智能手機(jī)可以實(shí)現(xiàn)對(duì)家用燃?xì)獗淼馁?gòu)氣充值。
1.1 研究背景
在我們的日常生活中,每家每戶(hù)都有許許多多的卡,如電卡、水卡、燃?xì)饪?、銀行卡等。目前除銀行卡外,很多行業(yè)的IC卡在用戶(hù)需要充值或查詢(xún)時(shí),都需要去柜臺(tái)或者自助值機(jī),耗費(fèi)了很多時(shí)間成本,浪費(fèi)了很多社會(huì)資源,特別是遇到意外的突發(fā)的情況,比如在寒冷的冬天,夜里突然燃?xì)鉀](méi)有了,而營(yíng)業(yè)廳又比較遠(yuǎn),或者已經(jīng)關(guān)門(mén),這時(shí)用于采暖的壁掛爐停止了工作,其結(jié)果可想而知。為方便群眾購(gòu)氣,某燃?xì)夤疚斜本┲切疚㈦娮涌萍加邢薰狙邪l(fā)一款音頻讀卡器,要求該讀卡器支持指定的燃?xì)釯C卡,提供支持Android和iOS的第三方lib庫(kù),音頻口通信能適配市面主流手機(jī)。
1.2 系統(tǒng)架構(gòu)與組成
燃?xì)赓?gòu)氣系統(tǒng)采用多層架構(gòu),有效分離應(yīng)用、服務(wù)、數(shù)據(jù)[1],主要由銷(xiāo)售管理數(shù)據(jù)庫(kù)、銷(xiāo)售管理應(yīng)用服務(wù)器、系統(tǒng)接口、讀卡器、表計(jì)等,其中銷(xiāo)售管理分為客戶(hù)管理、抄表管理、計(jì)費(fèi)管理、收費(fèi)管理、卡管理、欠費(fèi)催繳、表具管理七類(lèi);系統(tǒng)接口包括設(shè)備接口、銀行接口、財(cái)務(wù)系統(tǒng)接口和ERP接口;營(yíng)業(yè)廳的終端讀卡器上應(yīng)能實(shí)現(xiàn)IC卡開(kāi)卡、購(gòu)氣、沖正、補(bǔ)卡等業(yè)務(wù);燃?xì)獗碇饕獙?shí)現(xiàn)購(gòu)氣、計(jì)量、查詢(xún)、提示和開(kāi)關(guān)閥等功能[2]。本文所述便攜式讀卡器主要針對(duì)終端用戶(hù)的購(gòu)氣應(yīng)用,需要綜合考慮兼容燃?xì)庑袠I(yè)常用的IC(如AT88SC102卡、SLE4442卡、CPU卡),按照統(tǒng)一的IC卡讀寫(xiě)卡接口規(guī)范,編寫(xiě)支持Android和iOS的第三方lib庫(kù),供手機(jī)APP調(diào)用。圖1是燃?xì)赓?gòu)氣移動(dòng)終端系統(tǒng)的架構(gòu)。
圖1 系統(tǒng)架構(gòu)與組成
2.1 讀卡器硬件設(shè)計(jì)
本讀卡器的基本功能需求如下:① 智能卡接口為接觸式IC卡接口,并符合ISO / IEC 7816-3標(biāo)準(zhǔn);② 支持指定IC卡(AT88SC102,SLE4442卡,CPU卡),CPU卡支持T=0協(xié)議;③ 支持手機(jī)音頻口通信,兼容音頻口的國(guó)家和國(guó)際標(biāo)準(zhǔn);④ 支持USB口充電和升級(jí);⑤ 內(nèi)置可充電鋰電池,容量不小于200 mAh;⑥ Flash空間不小于128 KB,SRAM不小于48 KB;⑦ 帶充電狀態(tài)指示和通信狀態(tài)指示。
基于以上功能需求,本讀卡器選擇ST公司的32位超低功耗MCU STM32L151C8T6作為硬件系統(tǒng)的核心MCU,該MCU硬件資源豐富,包含128 KB的Flash和16 KB的SRAM,空間足夠用。MCU集成3路USART接口,其中任何一路都可復(fù)用為ISO7816主接口,支持與ISO/IEC 7816-3 標(biāo)準(zhǔn)T=0 和T=1 傳輸協(xié)議兼容的智能卡設(shè)備,發(fā)送和接收各自擁有4字節(jié)的FIFO數(shù)據(jù)緩沖區(qū),支持硬件觸點(diǎn)激活序列、硬件熱復(fù)位時(shí)序和觸點(diǎn)釋放時(shí)序,更能自動(dòng)監(jiān)測(cè)卡移出序列。MCU集成USB2.0全速設(shè)備接口模塊,可以實(shí)現(xiàn)USB通信,此外還支持 I2C總線、SPI、GPIO等通用接口[3]。
對(duì)于本項(xiàng)目,硬件設(shè)計(jì)的難點(diǎn)在于音頻接口電路,手機(jī)音頻信號(hào)由左聲道、右聲道、MIC和GND等4個(gè)信號(hào)組成,其中左右聲道為音頻信號(hào)輸出信道,MIC信道為音頻輸入信道。對(duì)于手機(jī)的左右聲道,最大輸出信號(hào)頻率通常不超過(guò)20 kHz。對(duì)于MIC信號(hào),手機(jī)內(nèi)部模數(shù)轉(zhuǎn)換器(ADC)對(duì)MIC信號(hào)的采樣頻率最大為44.1 kHz。根據(jù)手機(jī)信道的特點(diǎn),本設(shè)計(jì)使用手機(jī)的左聲道作為手機(jī)發(fā)送數(shù)據(jù)給讀寫(xiě)器的信道, MIC信道作為讀卡器給手機(jī)的數(shù)據(jù)的信道,不過(guò)手機(jī)音頻口有2種接口標(biāo)準(zhǔn),一個(gè)是OMTP(開(kāi)放移動(dòng)終端平臺(tái))標(biāo)準(zhǔn),國(guó)內(nèi)的手機(jī)產(chǎn)品都需要支持OMPT標(biāo)準(zhǔn);另一個(gè)是CTIA(移動(dòng)通信行業(yè)協(xié)會(huì))標(biāo)準(zhǔn),國(guó)際市場(chǎng)上的手機(jī)大部分會(huì)使用該標(biāo)準(zhǔn)[4]。這2個(gè)標(biāo)準(zhǔn)的區(qū)別是MIC信號(hào)和GND的順序不一樣,因此設(shè)計(jì)上需要做MIC和GND的自適應(yīng)電路,自適應(yīng)的原理是利用MOS管、電阻等分立元件搭建一種電路,利用MOS管的開(kāi)關(guān)特性,無(wú)論音頻口遵循哪種標(biāo)準(zhǔn),總能正確識(shí)別到MIC和GND信號(hào)。手機(jī)耳機(jī)接頭定義如圖2所示。
圖2 手機(jī)耳機(jī)接頭定義
此外手機(jī)與讀卡器間的上下行通路設(shè)計(jì)是一個(gè)關(guān)鍵,讀卡器接收手機(jī)的信號(hào)來(lái)自于手機(jī)的左聲道,本設(shè)計(jì)采用的原理是手機(jī)左聲道把待輸出數(shù)據(jù)按照UART協(xié)議編碼,一個(gè)起始位、8個(gè)數(shù)據(jù)位、無(wú)校驗(yàn)位、1個(gè)停止位的方式編碼,通信速率為4 800 bps,這樣在手機(jī)左聲道輸出一個(gè)近似符合UART協(xié)議的模擬信號(hào),信號(hào)經(jīng)過(guò)讀卡器接收電路的隔直、濾波、放大、比較等,接入STM32L151 MCU的一個(gè)UART接口,在UART的接收中斷處理函數(shù)中,對(duì)接收的數(shù)據(jù)進(jìn)行解析。
讀卡器發(fā)送數(shù)據(jù)到手機(jī)的信號(hào)通路涉及到STM32L151的GPIO口通信、定時(shí)器以及信號(hào)的曼徹斯特(Manchester Encoding)編碼,以下簡(jiǎn)稱(chēng)Manchester編碼,具體是把待發(fā)送數(shù)據(jù)轉(zhuǎn)換為Manchester編碼,然后在MCU的timer配合下,把Manchester編碼轉(zhuǎn)換成GPIO口的高低電平變化,從而在手機(jī)的MIC端產(chǎn)生高低變化的信號(hào),手機(jī)內(nèi)部則用高速率采樣的辦法,錄到MIC的波形,通過(guò)波形分析獲取數(shù)據(jù)。圖3是讀卡器硬件總體設(shè)計(jì)框圖。
圖3 讀卡器硬件總體設(shè)計(jì)框圖
2.2 讀卡器軟件設(shè)計(jì)
根據(jù)音頻讀卡器的功能需求,讀卡器軟件部分需要完成的主要功能有IC卡讀寫(xiě)和音頻口通信。對(duì)于IC卡,燃?xì)獗沓S玫挠蠥T88SC102、SLE4442、CPU三種卡,客戶(hù)要求必須兼容。讀卡器軟件部分主要完成,音頻數(shù)據(jù)的收發(fā)處理以及根據(jù)業(yè)務(wù)需要操作IC卡。
2.2.1 音頻數(shù)據(jù)的收發(fā)處理
讀卡器接收數(shù)據(jù),需要編寫(xiě)UART接收中斷處理函數(shù),在接收中斷里處理接收的數(shù)據(jù)包,當(dāng)完整接收完一包數(shù)據(jù)后,置接收成功標(biāo)志flag=1,在mian()函數(shù)里檢測(cè)flag是否置位。如置位,則按協(xié)議解析數(shù)據(jù)包并清標(biāo)志flag=0。報(bào)文格式如下所示:
數(shù)據(jù)包幀頭02地址(固定00)長(zhǎng)度字命令字?jǐn)?shù)據(jù)域校驗(yàn)數(shù)據(jù)包幀尾03
其中,長(zhǎng)度字指明從長(zhǎng)度字到校驗(yàn)字的字節(jié)數(shù);命令字為本條命令的含義;數(shù)據(jù)域?yàn)樵摋l命令的內(nèi)容,此項(xiàng)可以為空;校驗(yàn)字為從模塊地址到數(shù)據(jù)域最后一字節(jié)的逐字節(jié)累加值,即算數(shù)和。
讀卡器發(fā)送數(shù)據(jù),數(shù)據(jù)需要編輯成Manchester編碼,Manchester編碼采用的是沿跳變的方式來(lái)表示二進(jìn)制的0和1,高電平向低電平跳變表示二進(jìn)制1,反之低電平向高電平跳變表示二進(jìn)制0,Manchester編碼解決了數(shù)據(jù)傳輸沒(méi)有時(shí)鐘的問(wèn)題,數(shù)據(jù)傳輸誤碼率比較小,在碼元的傳輸速率方面有很大的優(yōu)勢(shì)[4]。
本項(xiàng)目Manchester編碼規(guī)定每一幀(指每一字節(jié))信息由數(shù)據(jù)同步、數(shù)據(jù)和校驗(yàn)位組成[5],其中數(shù)據(jù)同步低電平在先,高電平在后,高低電平各為1.5T,每個(gè)字節(jié)數(shù)據(jù)(16位)前都有一個(gè)數(shù)據(jù)同步,T為曼徹斯特編碼位傳輸?shù)奈粫r(shí)鐘周期,數(shù)據(jù)位共有16位,即1個(gè)字節(jié)轉(zhuǎn)為Manchester編碼是16位,高位在前,低位在后。
每幀的最后一位為奇校驗(yàn)位。每一個(gè)字節(jié)經(jīng)過(guò)曼徹斯特編碼后,在傳輸時(shí)是20T,即20個(gè)時(shí)鐘傳輸一個(gè)字節(jié), 在實(shí)際應(yīng)用時(shí),為減少M(fèi)IC信道的波形畸變對(duì)數(shù)據(jù)的影響,在一個(gè)數(shù)據(jù)包(若干個(gè)字節(jié))前加入位速率同步時(shí)鐘,由于手機(jī)內(nèi)部的最大音頻采樣速率為44.1 kHz,所以位速率同步時(shí)鐘采用4.41 kHz,即一個(gè)時(shí)鐘周期226 μs,手機(jī)10倍于位速率時(shí)鐘,每個(gè)周期可以采樣10個(gè)點(diǎn),這樣能比較精確地得到一個(gè)周期的波形。
手機(jī)數(shù)據(jù)解析時(shí),通過(guò)位同步時(shí)鐘的周期與數(shù)量關(guān)系,可取到數(shù)據(jù)同步,進(jìn)而按照協(xié)議解析后面的有用數(shù)據(jù),并通過(guò)校驗(yàn)來(lái)驗(yàn)證數(shù)據(jù)的正確性。單字節(jié)數(shù)據(jù)的Manchester編碼格式如下所示:
數(shù)據(jù)同步數(shù)據(jù)(16bit)校驗(yàn)位
圖4是示波器上看到的數(shù)據(jù)610C的Manchester編碼波形示例。
圖4 數(shù)據(jù)610C的Manchester編碼波形示例
2.2.2 操作IC卡
讀卡器并不知道會(huì)插入哪種IC卡,因此讀卡器需要做卡類(lèi)型識(shí)別, 識(shí)別辦法是手機(jī)發(fā)送對(duì)卡初始化指令,讀卡器收到指令后,對(duì)卡進(jìn)行冷復(fù)位,根據(jù)IC卡返回的ATR值進(jìn)行判斷。注意,讀卡器接收到來(lái)自手機(jī)的數(shù)據(jù),采用CRC16校驗(yàn),如校驗(yàn)失敗則返錯(cuò)誤代碼給手機(jī)APP,卡類(lèi)型識(shí)別約定如表1所列。
表1 IC卡類(lèi)型判斷方法
識(shí)別到卡類(lèi)型后,根據(jù)卡的類(lèi)型不同程序可以進(jìn)入到不同IC卡的操作分支,本項(xiàng)目涉及到的對(duì)卡操作的主要功能函數(shù)有卡身份識(shí)別、讀卡、寫(xiě)卡等。其中,SLE4442卡屬于符合ISO-7816標(biāo)準(zhǔn)的同步型IC卡[6],讀卡不需要核對(duì)用戶(hù)密碼,寫(xiě)卡需要核對(duì)用戶(hù)密碼。AT88SC102卡有密鑰核對(duì)次數(shù)限制,讀/寫(xiě)IC卡需要確認(rèn)密鑰[7], CPU卡安全性最高,采用明文+MAC校驗(yàn)方式,且讀卡器內(nèi)置3des軟算法以支持明文+MAC校驗(yàn)方式[8]。根據(jù)每種IC卡的使用特性及廠家要求,分別作了對(duì)應(yīng)處理,對(duì)個(gè)別廠家的諸如密鑰算法等作了邏輯屏蔽處理,并通過(guò)約定的私有協(xié)議進(jìn)行動(dòng)態(tài)函數(shù)的調(diào)用。表2列舉了SLE4442卡用到的幾個(gè)主要功能函數(shù),圖5是音頻讀卡器讀寫(xiě)IC卡程序流程圖。
表2 讀卡器音頻口通信API接口函數(shù)
圖5 音頻讀卡器讀寫(xiě)IC卡程序流程圖
為方便燃?xì)夤镜氖謾C(jī)APP調(diào)用讀卡器的動(dòng)態(tài)庫(kù),本讀卡器根據(jù)需求,分別設(shè)計(jì)可支持Android系統(tǒng)的第三方j(luò)ar包和支持iOS系統(tǒng)的OCX類(lèi)庫(kù)。下文以Android為例,簡(jiǎn)要介紹本讀卡器的第三方lib庫(kù)。本項(xiàng)目Android第三方lib庫(kù)是在jdk1.6+Eclipse的集成開(kāi)發(fā)環(huán)境下開(kāi)發(fā)的,該開(kāi)發(fā)環(huán)境已經(jīng)集成ADT(Android Development Tools)插件和Android SDK[9]。對(duì)于本項(xiàng)目的接口lib庫(kù)的調(diào)試,Android代碼規(guī)劃為4個(gè)部分,分別如下:
① com.archermind.activity:該部分是自測(cè)用的界面和工具類(lèi),給客戶(hù)的jar包不需要添加該包內(nèi)容。
② com.archermind.utils:提供給客戶(hù)的jar包(即lib庫(kù)),內(nèi)有需要的工具類(lèi)和卡調(diào)試邏輯實(shí)現(xiàn)類(lèi)。
③ com.archermind.vender:表廠的個(gè)性化處理接口。
④ com.example.testaudio:音頻通信底層代碼,處理音頻數(shù)據(jù)的收發(fā)。
lib庫(kù)作為手機(jī)APP與讀卡器之間的一個(gè)橋梁,主要功能是接受APP的調(diào)用以及音頻數(shù)據(jù)的收發(fā)處理,數(shù)據(jù)收發(fā)按照約定的協(xié)議規(guī)范進(jìn)行,并形成接口API供APP調(diào)用,下面是本項(xiàng)目SLE4442卡的API示例。
圖6 APP購(gòu)氣 業(yè)務(wù)流程
① public static intReset_GasCard(int cardtype){ },初始化,獲取卡類(lèi)型。
② public staticRead_GasCard_Data(int cardtype,byte[] data){ },讀卡方法。
③ public static intWrite_GasCard_Data(int cardtype,byte[] data){ },寫(xiě)卡方法。
本項(xiàng)目經(jīng)過(guò)系統(tǒng)測(cè)試,能夠滿(mǎn)足客戶(hù)需求,并最終通過(guò)驗(yàn)收和成功上線。主要業(yè)務(wù)流程如圖6所示。
[1] 許卓,趙山,黃有朋,等.智能終端音頻讀卡器在移動(dòng)智能繳費(fèi)系統(tǒng)的應(yīng)用與研究[J].電測(cè)與儀表,2015(7):156-169.
[2] 張正興,徐超,李正平.預(yù)付費(fèi)燃?xì)庵悄芄芾硐到y(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2008(7).
[3] 鄧金偉,曹荀.基于STM32的智能燃?xì)獗矸桨冈O(shè)計(jì)[J].天然氣與石油,2015(11).
[4] 李小云.手機(jī)音頻口通信技術(shù)研究與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2015.
[5] 李會(huì)銀.用AT89C2051實(shí)現(xiàn)的曼徹斯特編碼譯碼器及應(yīng)用[J].山東:石油儀器,1999,13(5):5-8.
[6] 孔為民,范焱,武建德.SLE4442卡在單片機(jī)系統(tǒng)中的應(yīng)用[J].電腦開(kāi)發(fā)與應(yīng)用,2001(8).
[7] 毛占根.新型IC卡AT88SC101/102及其應(yīng)用[J].電子技術(shù),1996(10).
[8] 馬濤,高宇康,楊術(shù)明.基于CPU卡的燃?xì)獗砜刂葡到y(tǒng)設(shè)計(jì)[J].河北大學(xué)學(xué)報(bào):自然科學(xué)版,2015(4).
[9] 王會(huì)林.嵌入式IOS和Android應(yīng)用開(kāi)發(fā)探討 [J].信息與電腦:理論版,2012(11).
[10] 姜超.基于IOS的智能家居移動(dòng)終端開(kāi)發(fā)[J].電子技術(shù)與軟件工程,2016(4).
ApplicationofMobilePhoneAudioCardReaderinGasPaymentField
JiangFan1,2,GuoFei1,2,DuJun1,2,WangYubo1,2,PangZhenjiang1,2
(1.State Grid Key Laboratory of Power Industrial Chip Design and Analysis Technology,Beijing Smart-chip Microelectronics Technology Co.,Ltd.,Beijing 100192,China;2.Beijing Engineering Research Center of High-reliability IC with Power Industrial Grade,Beijing Smart-Chip Microelectronics Technology Co., Ltd.)
Based on the inquiry and recharge of IC card for the prepayment gas meter,an audio reader solution for mobile phone is proposed.The project adopts the modular design ideas.In addition,the designer creatively integrates Manchester encoding and decoding technology into the design.It solves the shortcomings of the mobile phone audio communication reliability and the poor adaptability.The hardware and software system architecture and the principle of reading the project of the card reader are described in detail,and for some of these technical difficulties,the designer proposes the solutions.The project meets the customer requirements.
mobile audio;card reader;Manchester encoding;IC card
國(guó)家自然科學(xué)基金資助項(xiàng)目(60234030);國(guó)家973計(jì)劃資助項(xiàng)目(2003CB716202)。
TM933
A
2017-07-04)