手機磁條卡讀卡器參考設計應用報告
蔣南
德州儀器半導體MCU SAE
簡介
在現實生活中,磁卡是較常見的用來識別用戶的卡片,無論是國際標準化組織還是中國國標均對這種使用磁介質的存儲技術制定了相關標準。磁卡技術廣泛被商業,政府,醫療等機構所采用,但較大規模使用還是銀行發行的各種信用卡,借記卡等卡片。國際標準化組織ISO 發布了ISO 7811 系列磁卡的國際標準,從1995 年發布第一版標準后持續再修訂和增加內容,涵蓋了從機械結構到存儲方式以及數據格式等一系列的內容。
以前的銀行系統中,讀取卡片的工作主要交給收銀機或者 ATM 以及銷售終端來完成,這些設備都是由商家提供的,維護成本較高。這一切隨 2009 年出現在美國的方形支付(square)而出現改變,方形支付使用非常廉價的小型終端,這些終端非常小巧,售價低廉甚至免費提供給客戶,利用客戶的智能手機進行銀行交易。僅僅 2 年時間,這一新的商業形式得到大規模發展,并且在國內出現了多家類似生產廠商且已經成功推出一系列產品。因為這種商業模式中重頭還是在網銀平臺支持,本參考設計僅關注終端本身的設計。
硬件系統
1 硬件框圖
本設計包含硬件和軟件部分,其中軟件部分包括MCU 側的固件以及智能手機側的應用(安卓平臺)。如圖1,系統硬件由MCU,供電電路,磁頭信號調理電路,加密電路以及通訊電路構成。
圖 1. 硬件框圖
2 硬件設計
2.1 MCU
MCU 采用MSP430F5310,供電范圍較寬(1.8V~3.6V),且運行功耗以及待機功耗均非常低。其運行在8MHz@3V 時功耗僅為195uA/MHz。具有多種工作模式,待機時僅1.1uA @ 3V (RAM保持),在此模式下可以實現快速啟動。另外該器件具有較大的RAM 以及豐富的外設,定時器資源較豐富。這些特點非常適合本應用的特點即要求絕對的低功耗。
2.2 供電電路
供電電路的選擇比較多,如圖 1 中所示:可以利用智能手機的耳機接口獲得運行所需的電力,但是這種方式的限制是手機的硬件各不相同,耳機電路輸出功率從幾毫瓦到數十毫瓦不等。為了能夠讓設備工作,需要20 毫瓦左右甚至更多的功率輸出,但是相當多的手機的耳機電路無法輸出足夠的功率供本設備使用。為了兼容盡可能多的手機,較實際的做法是在設備內置小型鋰電池或者紐扣電池,以相近的成本提供了較高的兼容性。當設備整體功耗降低到幾毫瓦數量級時,使用一顆小型紐扣電池可以支持足夠的使用次數。本文的方案為通過耳機獲得電力和使用小型鋰電池兩種場合設計了相應的電路,可以按照性能和成本需求選擇。
2.3 磁頭及磁卡介紹
2.3.1 磁頭
讀卡設備的核心部件就是磁頭,磁頭是將磁信號轉換為電信號的關鍵器件,只有將磁卡上的磁信號轉換成電信號,上面存儲的信息才能夠被讀取使用。磁頭主要由磁性材料以及盤繞在其上的線圈構成,如圖 2 所示,當有磁場的磁條通過磁頭時,因為磁頭磁性材料的磁阻較小,磁條磁場的磁力線會從磁頭磁性材料中通過,從而在磁頭線圈中感應出電信號,這個信號被進一步放大以后就可以進行處理。
圖 2. 磁卡讀取示意圖
2.3.2 磁卡
磁卡的讀取與以前廣泛使用的磁帶機相似,磁卡和磁帶都是使用磁場來保存變化的信號,也都是通過磁道與磁頭的相對運動以實現磁場到電場的轉換。 如圖3,按照標準規定,磁卡上較多可以有三個磁道,這三個磁道中一和二磁道是只讀磁道,第三個磁道是讀寫磁道。磁道中存儲的信息由標準決定,使用哪些磁道受實際應用需求決定。在國內來說,銀行磁卡主要是信用卡和借記卡,除了一二磁道外,很多信用卡并未使用第三磁道,而大部分借記卡都會使用第三磁道。
圖 3. 磁道分布示意圖
2.3.3 磁道
在磁道上覆蓋有磁性材料,當需要寫入數據時,將磁頭線圈通電,電流按照信號變化,由電流產生的磁場將磁道磁化即可,是讀取的反向操作。本文只涉及的讀取操作,對寫入過程不做介紹。對于銀行卡來說,上面存儲的都是數字信號即“0”和“1”,數字信號是利用磁場的方向的變化和頻率的變化來表示的.
圖 4. 磁條磁場分布示意圖
如圖4,是ISO-7811 中對于磁條信號的規定。左邊是磁條表面實際磁場強度的分布情況,可以看到磁條上的磁場的方向始終在交替變化,即每一個數據位(bit)之間反向都是相反的。此外,為了表示“0”和“1”,標準還規定在單位時間內磁場方向變化一次為“0”,而在相同時間內磁場方向變化兩次則為“1”。所以,ISO-7811 規定的信號編碼實際是基于頻率變化的,如圖4 中的右側圖所示,每個位都攜帶了時鐘信息,不會產生累積誤差。
2.3.4 數據及編碼格式
從前面描述可知,在磁條上面可以有3 個磁道,每個磁道都由一系列“0”和“1”構成。ISO-7811 規定下,這些“0”和“1”組成了一個個字符。不同磁條的編碼方式不同,本文只針對磁條2 和磁道3,這兩個磁條的編碼格式相同如圖5 所示。從表中可以看出,該編碼方式下只有16 個可能的字符,即僅僅能表示數字和一些特定的控制字符如開始字符和結束字符等。該編碼用5 個bit 組成一個字符,較高位是奇校驗位,剩下4 個位是字符本身。
圖 5. 字符編碼格式
有了字符編碼,我們就可以在知道在磁條上面到底存放了什么信息。ISO-7811 對于磁條的高層應用格式也做了規定如圖6.一個磁道的數據以字符“SF”(即“;”)開始,以“EF”字符(即“?”)結束。較后一個字符“LRC”是校驗碼,也由5 個bit 組成。該校驗碼的每一個bit 都是由前述所有字符的相應bit 的奇校驗得到,所以磁條上的數據是進行了雙重奇校驗。
圖 6. 磁條數據格式
2.4 通訊接口
當我們完成了卡片的讀取后,需要將加密處理后的卡片信息發送到上層軟件進一步處理,本文中的上層軟件就是智能手機系統如Android/iOS 中的應用程序。 由于手機的通信接口有限,目前大都是使用耳機插孔做為接口,這是每臺智能手機一定會具備的基本硬件。由于歷史原因,帶有話筒功能的耳機插孔的信號排布并未被標準化,造成了所謂的“正向”和“反向”接口之分。如圖7,左右是兩個不同型號手機配備的耳機信號定義,主要區別是話筒和地線的互換了位置。至于哪個是“正”哪個是“反”,是沒有定義的也是無所謂的。
圖 7. 耳機接口定義:正向和反向
2.4.1 手機發送信息給終端
當手機內的應用軟件運行后,會通過耳機發送音頻信號給終端,可以通過左聲道或者右聲道,信號由終端接收并解碼。
2.4.2 終端發送信息給手機
當終端有信息需要與手機通信時,由于手機的耳機是手機的輸出設備,只能利用手機的話筒進行。該通信過程是通過話筒發送音頻信號給手機應用軟件,并由軟件接收解碼。
軟件系統
本設計軟件部分包括單片機中的固件以及運行在智能手機操作系統中的應用軟件,通過自定的通信協議進行通信及應答,以實現從刷卡到卡片信息傳遞的任務。
3 固件框圖
圖 8. 軟件架構
4 固件設計目標
本應用面向微型低功耗讀卡器,對于功耗非常敏感,故必須盡可能降低主MCU 自身的功耗。降低MCU 功耗既要充分利用MSP430F 系列單片機所具備的低功耗特質,如多種工作模式,智能外設等,有關這方面的應用數不勝數,這里不在贅述;更重要的另一方面,也要從降低解碼時的主頻入手,盡量減少正常工作時的能量的損耗。
對于刷卡器而言,要求能夠穩定的讀取卡片內容,適應不同的刷卡速度,同時也要能夠同時讀出兩個磁道(磁道2 和磁道3)的內容。
5 磁頭信號的軟解碼
為了讀取磁卡中的內容并轉換成協議規定的字符,我們需要對磁頭信號進行調理放大,然后通過MSP430F5310 單片機的ADC 單元進行實時轉換分析,并較終得到相應的數據流。
首先,我們要了解磁頭信號是什么樣子的。圖-9 是一段真實的信號,這個經放大后的磁頭感應信號擁有與磁條磁場類似的波形。從前面對ISO-7811 的介紹中我們知道,這些交變的信號就隱藏著我們需要的信息。
圖 9. 調理放大后的磁條信號
利用ADC,我們可以對這些波形進行實時采樣,并計算分析這些電流脈沖之間的時間。而這些時間間隔的長短就成了我們判斷“0”或者“1”的依據。一旦能夠確定這些“0”“1”組合,根據圖5 中的表格,我們可以較終知道在一張磁卡上到底隱藏了什么內容。
6 與手機軟件通信
較終我們需要將磁卡中的內容發送給上位機,這里就是發送給手機端的軟件,通過耳機插孔。當然在傳送這些賬戶信息之前,很可能我們需要對這些信息進行加密處理,可以使用包括RSA,3DES 等各種方法,本設計并未實現此功能。
6.1.1 通信格式
通信格式由設計者定義,以下為本應用筆記自定義的格式。
如圖-10 所示,通信過程中,使用不同的脈寬表示數位的“0”和“1”。其頻率分別是2.2KHz (“0”) 及 1.1KHz(”1”),占空比固定為100%。終端和手機應用軟件均使用相同的格式。
圖 10. 通信的位格式
有了位格式定義,終端和應用軟件之間的高層命令幀格式也可以制定。本參考設計使用如圖-11 中所示數據幀格式:首字節為命令,且以“1”開始,高位在前。第二個字節為后續數據中包含的字符(4bit)長度。
圖 11. 命令幀格式
在真正的產品設計中,由于所有的數據需要加密后才能發送給上層應用軟件,所以實際的數據/命令幀格式一定會有所區別。此外,為了確保通信正確,也可以附加校驗碼如CRC16 等。
7 智能手機人機界面(GUI)的實現
如圖12 所示,為了配合評估板我們開發了針對智能手機平臺的應用程序,該程序已經在基于Android 2.3 和Android 4.0 的手機上測試及完成預期功能。
圖12 中左側是刷卡界面,當軟件檢測到讀卡器插入后,可以開始進行讀卡操作。右側圖是讀卡器讀卡結束后返回的卡片兩個磁道的信息,如果讀卡失敗,也會得到相應提示。
圖 12. Android 上的GUI
8 功耗測試
本設計的一個較重要的目標就是功耗,在能夠保證刷卡性能的前提下,需要盡可能降低系統功耗。由于在待機(或休眠)模式下,MSP430 具有無可比擬的低功耗優勢,這一點無需在本測試中檢驗。本測試只針對刷卡時的較大功耗,該功耗由三部分構成即:MCU,運放以及相應的外圍電路如上下拉通信電路等。此外,減小運行功耗的較直接的方法是降低主頻,但是這個做法受限于正常功能實現對MCU 的MIPS 需求。本設計要求MSP430 工作頻率較低為8MHz,故本測試只針對于8MHz 主頻和16MHz 主頻,實際功耗數據如下:
8.1 測試環境
工作主頻: 8MHz / 16MHz
主時鐘源:使用內部DCO 時鐘輸出
工作電壓:3.3V DC
ADC: 10 位模式, 100ksps/200ksps
測試對象: MSP430, 運放電路,輔助電路
8.2 測試結果
在讀卡過程中,8MHz 主頻和16MHz 主頻時,消耗的電流分別為1.956mA 和3.482mA。其中運放部分功耗約0.3mA,輔助部分約0.02mA.所以實測MCU 在8MHz 時的功耗約為200uA/MIPS,這和數據手冊中的基本一致。
如果需要更低的運行功耗和保密特性,需要使用TI 較新的MSP430RF 鐵電系列產品,其運行功耗可以低至100uA/MIPS,在此配置下,本設計相關的電路消耗電流可以達到1~2mA,且安全性能更加有保障。
參考資料
1. MSP430x5xx and MSP430x6xx Family USER’S GUIDE(SLAU208K)
2. ISO/IEC 7811-2
3. MSP430F530x, MSP430F5310 DATA SHEET(SLAS677B)
相關閱讀:
- ...· Efinix® 全力驅動AI邊緣計算,成功推出Trion™ T20 FPGA樣品, 同時將產品擴展到二十萬邏輯單元的T200 FPGA
- ...· 英飛凌亮相進博會,引領智慧新生活
- ...· 三電產品開發及測試研討會北汽新能源專場成功舉行
- ...· Manz亞智科技跨入半導體領域 為面板級扇出型封裝提供化學濕制程、涂布及激光應用等生產設備解決方案
- ...· 中電瑞華BITRODE動力電池測試系統順利交付北汽新能源
- ...· 中電瑞華FTF系列電池測試系統中標北京新能源汽車股份有限公司
- ...· 中電瑞華大功率高壓能源反饋式負載系統成功交付中電熊貓
- ...· 中電瑞華國際在電動汽車及關鍵部件測評研討會上演繹先進測評技術
產品快訊更多