手機(jī)磁條卡讀卡器參考設(shè)計應(yīng)用報告
2.3.4 數(shù)據(jù)及編碼格式
本文引用地址:http://www.ex-cimer.com/article/268085.htm從前面描述可知,在磁條上面可以有3個磁道,每個磁道都由一系列“0”和“1”構(gòu)成。ISO-7811規(guī)定下,這些“0”和“1”組成了一個個字符。不同磁條的編碼方式不同,本文只針對磁條2和磁道3,這兩個磁條的編碼格式相同如圖5所示。從表中可以看出,該編碼方式下只有16個可能的字符,即僅僅能表示數(shù)字和一些特定的控制字符如開始字符和結(jié)束字符等。該編碼用5個bit組成一個字符,最高位是奇校驗(yàn)位,剩下4個位是字符本身。
圖5.字符編碼格式
有了字符編碼,我們就可以在知道在磁條上面到底存放了什么信息。ISO-7811對于磁條的高層應(yīng)用格式也做了規(guī)定如圖6.一個磁道的數(shù)據(jù)以字符“SF”(即“;”)開始,以“EF”字符(即“?”)結(jié)束。最后一個字符“LRC”是校驗(yàn)碼,也由5個bit組成。該校驗(yàn)碼的每一個bit都是由前述所有字符的相應(yīng)bit的奇校驗(yàn)得到,所以磁條上的數(shù)據(jù)是進(jìn)行了雙重奇校驗(yàn)。
圖6.磁條數(shù)據(jù)格式
2.4 通訊接口
當(dāng)我們完成了卡片的讀取后,需要將加密處理后的卡片信息發(fā)送到上層軟件進(jìn)一步處理,本文中的上層軟件就是智能手機(jī)系統(tǒng)如Android/iOS中的應(yīng)用程序。由于手機(jī)的通信接口有限,目前大都是使用耳機(jī)插孔做為接口,這是每臺智能手機(jī)一定會具備的基本硬件。由于歷史原因,帶有話筒功能的耳機(jī)插孔的信號排布并未被標(biāo)準(zhǔn)化,造成了所謂的“正向”和“反向”接口之分。如圖7,左右是兩個不同型號手機(jī)配備的耳機(jī)信號定義,主要區(qū)別是話筒和地線的互換了位置。至于哪個是“正”哪個是“反”,是沒有定義的也是無所謂的。
圖7.耳機(jī)接口定義:正向和反向
2.4.1 手機(jī)發(fā)送信息給終端
當(dāng)手機(jī)內(nèi)的應(yīng)用軟件運(yùn)行后,會通過耳機(jī)發(fā)送音頻信號給終端,可以通過左聲道或者右聲道,信號由終端接收并解碼。
2.4.2 終端發(fā)送信息給手機(jī)
當(dāng)終端有信息需要與手機(jī)通信時,由于手機(jī)的耳機(jī)是手機(jī)的輸出設(shè)備,只能利用手機(jī)的話筒進(jìn)行。該通信過程是通過話筒發(fā)送音頻信號給手機(jī)應(yīng)用軟件,并由軟件接收解碼。
軟件系統(tǒng)
本設(shè)計軟件部分包括單片機(jī)中的固件以及運(yùn)行在智能手機(jī)操作系統(tǒng)中的應(yīng)用軟件,通過自定的通信協(xié)議進(jìn)行通信及應(yīng)答,以實(shí)現(xiàn)從刷卡到卡片信息傳遞的任務(wù)。
3 固件框圖
圖8.軟件架構(gòu)
4 固件設(shè)計目標(biāo)
本應(yīng)用面向微型低功耗讀卡器,對于功耗非常敏感,故必須盡可能降低主MCU自身的功耗。降低MCU功耗既要充分利用MSP430F系列單片機(jī)所具備的低功耗特質(zhì),如多種工作模式,智能外設(shè)等,有關(guān)這方面的應(yīng)用數(shù)不勝數(shù),這里不在贅述;更重要的另一方面,也要從降低解碼時的主頻入手,盡量減少正常工作時的能量的損耗。
對于刷卡器而言,要求能夠穩(wěn)定的讀取卡片內(nèi)容,適應(yīng)不同的刷卡速度,同時也要能夠同時讀出兩個磁道(磁道2和磁道3)的內(nèi)容。
5 磁頭信號的軟解碼
為了讀取磁卡中的內(nèi)容并轉(zhuǎn)換成協(xié)議規(guī)定的字符,我們需要對磁頭信號進(jìn)行調(diào)理放大,然后通過MSP430F5310 單片機(jī)的ADC單元進(jìn)行實(shí)時轉(zhuǎn)換分析,并最終得到相應(yīng)的數(shù)據(jù)流。
首先,我們要了解磁頭信號是什么樣子的。圖-9是一段真實(shí)的信號,這個經(jīng)放大后的磁頭感應(yīng)信號擁有與磁條磁場類似的波形。從前面對ISO-7811的介紹中我們知道,這些交變的信號就隱藏著我們需要的信息。
圖 9. 調(diào)理放大后的磁條信號
利用ADC,我們可以對這些波形進(jìn)行實(shí)時采樣,并計算分析這些電流脈沖之間的時間。而這些時間間隔的長短就成了我們判斷“0”或者“1”的依據(jù)。一旦能夠確定這些“0”“1”組合,根據(jù)圖5中的表格,我們可以最終知道在一張磁卡上到底隱藏了什么內(nèi)容。
6 與手機(jī)軟件通信
最終我們需要將磁卡中的內(nèi)容發(fā)送給上位機(jī),這里就是發(fā)送給手機(jī)端的軟件,通過耳機(jī)插孔。當(dāng)然在傳送這些賬戶信息之前,很可能我們需要對這些信息進(jìn)行加密處理,可以使用包括RSA,3DES等各種方法,本設(shè)計并未實(shí)現(xiàn)此功能。
6.1.1 通信格式
通信格式由設(shè)計者定義,以下為本應(yīng)用筆記自定義的格式。
如圖-10所示,通信過程中,使用不同的脈寬表示數(shù)位的“0”和“1”。其頻率分別是2.2KHz(“0”)及 1.1KHz(”1”),占空比固定為100%。終端和手機(jī)應(yīng)用軟件均使用相同的格式。
圖10.通信的位格式
有了位格式定義,終端和應(yīng)用軟件之間的高層命令幀格式也可以制定。本參考設(shè)計使用如圖-11中所示數(shù)據(jù)幀格式:首字節(jié)為命令,且以“1”開始,高位在前。第二個字節(jié)為后續(xù)數(shù)據(jù)中包含的字符(4bit)長度。
圖11.命令幀格式
在真正的產(chǎn)品設(shè)計中,由于所有的數(shù)據(jù)需要加密后才能發(fā)送給上層應(yīng)用軟件,所以實(shí)際的數(shù)據(jù)/命令幀格式一定會有所區(qū)別。此外,為了確保通信正確,也可以附加校驗(yàn)碼如CRC16等。
評論