專利名稱:一種利用低成本mcu的uart實(shí)現(xiàn)iso7816協(xié)議的方法
一種利用低成本MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法技術(shù)領(lǐng)域:
本發(fā)明涉及具有接觸式智能IC卡接口的電子設(shè)備,具體是指一種利用低成本的 MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法。背景技術(shù):
集成電路卡簡(jiǎn)稱IC卡,它是由一個(gè)信用卡大小的塑料卡上封裝一個(gè)或多個(gè)集成電路芯片所構(gòu)成??ㄉ霞呻娐沸酒ㄟ^(guò)卡片表面的接觸電極與外界通信。芯片上一般帶有一定容量的存儲(chǔ)器,并具有實(shí)現(xiàn)運(yùn)算和數(shù)據(jù)保護(hù)的邏輯電路。
IC卡主要用于做身份識(shí)別、保密數(shù)據(jù)存取和金融領(lǐng)域,是光電卡和磁卡的替代產(chǎn)品,是未來(lái)卡片產(chǎn)品發(fā)展的趨勢(shì)。IC卡作為一種通用元件,具備跨國(guó)使用、跨行業(yè)使用的特點(diǎn),其推廣需要相應(yīng)的標(biāo)準(zhǔn)與規(guī)范。
國(guó)際標(biāo)準(zhǔn)化組織于1988-1993年間公布了有關(guān)接觸式IC卡的IS07816標(biāo)準(zhǔn),主要規(guī)定了以下內(nèi)容
7816-1 卡的物理特性;
7816-2 卡的觸點(diǎn)大小與位置;
7816-3 卡的通信協(xié)儀;
7816-4 用于國(guó)際交換的行業(yè)命令;
7816-5 應(yīng)用標(biāo)識(shí)符的編號(hào)系統(tǒng)和注冊(cè)過(guò)程。
在IS07816-3接觸型集成電路卡的通信協(xié)議中,規(guī)定了電源及信號(hào)的端口分布以及IC卡和接口設(shè)備之間的信息交換,包括信號(hào)頻率、電壓電平、電流值、奇偶校驗(yàn)協(xié)定、操作過(guò)程、傳送機(jī)制以及接口設(shè)備與IC卡之間的通信協(xié)議等。
在金融、身份識(shí)別和電信市場(chǎng)中,對(duì)安全和增強(qiáng)的功能性不斷增長(zhǎng)的需求,增加了全球范圍內(nèi)智能IC卡的使用。然而,所需的基于智能卡系統(tǒng)中,適當(dāng)?shù)耐ㄐ畔到y(tǒng)的硬件和固件開(kāi)發(fā),給設(shè)計(jì)師帶來(lái)了新的挑戰(zhàn)。不幸的是只有一些高檔微處理器具有可以直接驅(qū)動(dòng)智能IC卡的專用UART。而普通MCU的UART則對(duì)智能IC卡沒(méi)有提供支持。所以使用普通 MCU的設(shè)備如果要提供對(duì)智能IC卡的支持,就必須添加一個(gè)智能IC卡控制器,以便完整的實(shí)現(xiàn)IS07816協(xié)議。這樣勢(shì)必花費(fèi)的成本較高。
有鑒于此,本發(fā)明人針對(duì)現(xiàn)有技術(shù)的缺陷深入研究,并有本案產(chǎn)生。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種無(wú)需添加額外硬件,又能利用普通MCU 的UART來(lái)實(shí)現(xiàn)完整的IS07816協(xié)議的方法。
本發(fā)明采用以下兩種技術(shù)方案解決上述技術(shù)問(wèn)題
技術(shù)方案一
一種利用低成本MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法,包括如下步驟
步驟一硬件接口 把智能IC卡的I/O管腳通過(guò)三極管連接到MCU的UART的TX、RX管腳上;
步驟二 發(fā)送數(shù)據(jù)具體包括如下步驟
根據(jù)編碼協(xié)議,進(jìn)行數(shù)據(jù)轉(zhuǎn)換如果采樣正向約定的編碼方式,無(wú)須做轉(zhuǎn)換,如果采用反向約定的編碼方式,需要對(duì)數(shù)據(jù)取反和高低位交換的轉(zhuǎn)換;
如果采樣的是正向約定的編碼協(xié)議,采用偶校驗(yàn)的方式;如果是反向約定,那么采用奇校驗(yàn)的方式;
把UART的TX配置為輸出模式,通過(guò)GPIO模擬的方式發(fā)送數(shù)據(jù),發(fā)送的數(shù)據(jù)格式為起始位1+數(shù)據(jù)位8+校驗(yàn)位1 ;
在發(fā)送校驗(yàn)位之后,延時(shí)1個(gè)ETU時(shí)間去檢測(cè)錯(cuò)誤信號(hào);
如果檢測(cè)到RX引腳上的電平為低,表示智能IC卡數(shù)據(jù)接收錯(cuò)誤,需要重發(fā)數(shù)據(jù); 否則表示接收成功可發(fā)送下一個(gè)數(shù)據(jù);智能卡IC接收數(shù)據(jù)錯(cuò)誤,需要重發(fā)數(shù)據(jù)。如果連續(xù) 5次出現(xiàn)錯(cuò)誤,則返回發(fā)送失敗的錯(cuò)誤碼,并對(duì)智能卡發(fā)起下電的操作;
步驟三接收數(shù)據(jù)具體包括如下步驟
復(fù)位智能IC卡,復(fù)位應(yīng)答中的第一個(gè)字符為T(mén)S字符,根據(jù)這個(gè)字符可確定后繼的編碼協(xié)議;
當(dāng)觸發(fā)UART的RX中斷時(shí),MCU從UART相關(guān)寄存器獲取接收到的數(shù)據(jù)和錯(cuò)誤狀態(tài) fn息;
如果檢測(cè)到幀錯(cuò)誤表示校驗(yàn)位為低,如果沒(méi)有幀錯(cuò)誤則表示校驗(yàn)位為高,然后把數(shù)據(jù)和校驗(yàn)位的值一起做奇偶校驗(yàn)的運(yùn)算;
如果編碼協(xié)議為正向約定,那么對(duì)數(shù)據(jù)執(zhí)行偶校驗(yàn);如果編碼協(xié)議為反向約定,那么對(duì)數(shù)據(jù)執(zhí)行奇校驗(yàn);
如果奇偶校驗(yàn)失敗,那么延時(shí)0. 5個(gè)ETU,然后把UART的TX置低,保持1到2個(gè) ETU時(shí)間,這樣就可以通知智能IC卡重發(fā)數(shù)據(jù);
如果驗(yàn)證成功,那么對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換操作正向約定的編碼協(xié)議,不需要對(duì)數(shù)據(jù)做轉(zhuǎn)換,反向約定的編碼協(xié)議需要對(duì)數(shù)據(jù)做取反和高低位交換的轉(zhuǎn)換操作。
技術(shù)方案之二
一種利用低成本MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法,包括如下步驟
步驟一硬件接口 把智能IC卡的I/O管腳通過(guò)三極管連接到MCU的UART的TX、 RX管腳上;
步驟二 發(fā)送數(shù)據(jù)具體包括如下步驟
根據(jù)編碼協(xié)議,進(jìn)行數(shù)據(jù)轉(zhuǎn)換如果采樣正向約定的編碼方式,無(wú)須做轉(zhuǎn)換,如果采用反向約定的編碼方式,需要對(duì)數(shù)據(jù)取反和高低位交換的轉(zhuǎn)換;
如果采樣的是正向約定的編碼協(xié)議,采用偶校驗(yàn)的方式;如果是反向約定,那么采用奇校驗(yàn)的方式;
采用物理UART發(fā)送數(shù)據(jù)的方式先確定UART在何時(shí)告訴MCU數(shù)據(jù)發(fā)送完成,MCU 則會(huì)在準(zhǔn)確的時(shí)間點(diǎn)上去判斷錯(cuò)誤信號(hào)的電平;
如果檢測(cè)到RX引腳上的電平為低,表示智能IC卡數(shù)據(jù)接收錯(cuò)誤,需要重發(fā)數(shù)據(jù); 否則表示接收成功可發(fā)送下一個(gè)數(shù)據(jù);智能卡IC接收數(shù)據(jù)錯(cuò)誤,需要重發(fā)數(shù)據(jù)。如果連續(xù) 5次出現(xiàn)錯(cuò)誤,則返回發(fā)送失敗的錯(cuò)誤碼,并對(duì)智能卡發(fā)起下電的操作;
步驟三接收數(shù)據(jù)具體包括如下步驟
復(fù)位智能IC卡,復(fù)位應(yīng)答中的第一個(gè)字符為T(mén)S字符,根據(jù)這個(gè)字符可確定后繼的編碼協(xié)議;
當(dāng)觸發(fā)UART的RX中斷時(shí),MCU從UART相關(guān)寄存器獲取接收到的數(shù)據(jù)和錯(cuò)誤狀態(tài) fn息;
如果檢測(cè)到幀錯(cuò)誤表示校驗(yàn)位為低,如果沒(méi)有幀錯(cuò)誤則表示校驗(yàn)位為高,然后把數(shù)據(jù)和校驗(yàn)位的值一起做奇偶校驗(yàn)的運(yùn)算;
如果編碼協(xié)議為正向約定,那么對(duì)數(shù)據(jù)執(zhí)行偶校驗(yàn);如果編碼協(xié)議為反向約定,那么對(duì)數(shù)據(jù)執(zhí)行奇校驗(yàn);
如果奇偶校驗(yàn)失敗,那么延時(shí)0. 5個(gè)ETU,然后把UART的TX置低,保持1到2個(gè) ETU時(shí)間,這樣就可以通知智能IC卡重發(fā)數(shù)據(jù);
如果驗(yàn)證成功,那么對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換操作正向約定的編碼協(xié)議,不需要對(duì)數(shù)據(jù)做轉(zhuǎn)換,反向約定的編碼協(xié)議需要對(duì)數(shù)據(jù)做取反和高低位交換的轉(zhuǎn)換操作。
本發(fā)明的優(yōu)點(diǎn)在于無(wú)需添加額外的硬件就可以對(duì)IS07816協(xié)議提供完整支持。 具有很好的實(shí)現(xiàn)效果和較低的實(shí)現(xiàn)成本。并且通過(guò)了銀聯(lián)卡檢測(cè)中心的EMV認(rèn)證。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述。
圖1是本發(fā)明中智能IC卡與MCU的UART的硬件接口示意圖。
圖2是本發(fā)明中智能IC卡的I/O時(shí)序圖。
圖3是本發(fā)明中M⑶的UART的時(shí)序圖。
圖4是本發(fā)明中發(fā)送數(shù)據(jù)的步驟流程示意圖。
圖5是本發(fā)明中接收數(shù)據(jù)的步驟流程示意圖。
具體實(shí)施方式
一種利用低成本MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法,包括如下步驟
硬件接口 如圖1所示,其中RXD2、TXD2代表MCU的UART的收發(fā)管腳。CPU_CARD_ IOl代表智能IC卡接口的I/O管腳。通過(guò)三極管把TX,RX連接到智能IC卡的I/O管腳。
智能IC卡的I/O時(shí)序圖如圖2所示,MCU的UART的時(shí)序圖如圖3所示。
數(shù)據(jù)發(fā)送模塊
數(shù)據(jù)發(fā)送模塊的主要功能包括根據(jù)編碼協(xié)議對(duì)數(shù)據(jù)做轉(zhuǎn)換(可選,由上層協(xié)議完成);通過(guò)MCU的UART或者是GPIO模擬的方式發(fā)送數(shù)據(jù);檢測(cè)智能IC卡的錯(cuò)誤信號(hào),并重發(fā)數(shù)據(jù)。
數(shù)據(jù)轉(zhuǎn)換的方式如果采樣正向約定的編碼方式,無(wú)須做轉(zhuǎn)換。如果采用反向約定的編碼方式,需要對(duì)數(shù)據(jù)取反和高低位交換的轉(zhuǎn)換。
發(fā)送數(shù)據(jù)的步驟流程示意圖如圖4所示。
可通過(guò)GPIO模擬的方式發(fā)送數(shù)據(jù),也可以通過(guò)MCU的UART發(fā)送數(shù)據(jù)。只要符合 IS07816的幀時(shí)序就可以。如果通過(guò)GPIO的方式,需要確保已經(jīng)把UART的TX配置為了輸出模式。
發(fā)送的數(shù)據(jù)格式為起始位(1) +數(shù)據(jù)位(8) +校驗(yàn)位(1)。
如果采樣的是正向約定的編碼協(xié)議,采用偶校驗(yàn)的方式。如果是反向約定,那么采用奇校驗(yàn)的方式。
IS07816協(xié)議要求發(fā)送端在起始位下降沿之后的11 士0. 2個(gè)ETU時(shí)去檢測(cè)錯(cuò)誤信號(hào)。
如果采用物理UART發(fā)送數(shù)據(jù)的方式。必須先確定UART在何時(shí)告訴MCU數(shù)據(jù)發(fā)送完成。這樣MCU才能在準(zhǔn)確的時(shí)間點(diǎn)上去判斷錯(cuò)誤信號(hào)的電平。否則可能無(wú)法檢測(cè)到智能 IC卡觸發(fā)的錯(cuò)誤信號(hào)。
不同MCU的UART可能在不同的時(shí)間點(diǎn)上提示MCU數(shù)據(jù)發(fā)送完成。例如有些UART 可能在校驗(yàn)位發(fā)送之后就提示MCU發(fā)送完成。也就是在起始位下降沿之后的10個(gè)ETU,MCU 就檢測(cè)到數(shù)據(jù)發(fā)送完成。這樣MCU必須延遲1個(gè)ETU左右的時(shí)間才能去檢測(cè)錯(cuò)誤信號(hào)。也有的UART可能在串口停止位發(fā)送之后才提示MCU發(fā)送完成。也就是要在起始位下降沿之后的11個(gè)ETU,MCU才能檢測(cè)到數(shù)據(jù)發(fā)送完成。這樣的話MCU必須立馬去檢測(cè)錯(cuò)誤信號(hào),而不能像前面一樣延時(shí)。
如果采用GPIO模擬的方式發(fā)送數(shù)據(jù)。那么時(shí)間點(diǎn)完全可控,只要在發(fā)送校驗(yàn)位之后,延時(shí)1個(gè)ETU時(shí)間去檢測(cè)錯(cuò)誤信號(hào)就可以。
如果檢測(cè)到RX引腳上的電平為低,表示智能IC卡數(shù)據(jù)接收錯(cuò)誤,需要重發(fā)數(shù)據(jù)。 否則表示接收成功可發(fā)送下一個(gè)數(shù)據(jù)。智能卡IC接收數(shù)據(jù)錯(cuò)誤,需要重發(fā)數(shù)據(jù)。如果連續(xù) 5次出現(xiàn)錯(cuò)誤,則返回發(fā)送失敗的錯(cuò)誤碼,并對(duì)智能卡發(fā)起下電的操作。
接收數(shù)據(jù)模塊
接收模塊主要功能包括處理復(fù)位應(yīng)答的TS字符,確定后續(xù)傳輸?shù)木幋a協(xié)議;對(duì)接收到的數(shù)據(jù)做奇偶校驗(yàn),如果數(shù)據(jù)錯(cuò)誤則觸發(fā)錯(cuò)誤信號(hào),通知智能IC卡重發(fā)數(shù)據(jù);根據(jù)編碼協(xié)議對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
TS字符處理流程如下
配置MCU的UART為9600波特率,8位數(shù)據(jù)位,1位停止位,校驗(yàn)位無(wú);
復(fù)位智能IC卡,復(fù)位應(yīng)答中的第一個(gè)字符為T(mén)S字符。根據(jù)這個(gè)字符可確定后繼的編碼協(xié)議;
如果TS為OUb,則表示智能IC卡采用正向約定的編碼協(xié)議。如果TS為0x3,則表示智能IC卡采用反向約定的編碼協(xié)議。其它值都為非法值,直接對(duì)智能IC卡發(fā)起下電操作;
正向約定編碼協(xié)議1/0腳的高電平代表數(shù)據(jù)1。低位數(shù)據(jù)先發(fā)送。采用這個(gè)編碼協(xié)議,通過(guò)MCU的UART收發(fā)數(shù)據(jù)時(shí)無(wú)須對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。校驗(yàn)方法為偶校驗(yàn);
反向約定編碼協(xié)議1/0腳的低電平代表數(shù)據(jù)1.高為數(shù)據(jù)先發(fā)送。采用這個(gè)編碼協(xié)議,在收發(fā)數(shù)據(jù)時(shí)要進(jìn)行數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)取反和高低位交換。校驗(yàn)方法為奇校驗(yàn)。
接收數(shù)據(jù)的步驟流程示意圖如圖5所示。
參考前面的時(shí)序圖1,圖2。
IS07816協(xié)議的幀格式為起始位(1) +數(shù)據(jù)位(8) +校驗(yàn)位(1)。
MCU的UART幀格式為起始位(1) +數(shù)據(jù)位⑶+校驗(yàn)位(1) +停止位(1)。
IS07816協(xié)議要求在起始位下降之后的10士0. 2個(gè)ETU時(shí)觸發(fā)錯(cuò)誤信號(hào)(把I/O腳置低)。
如果由UART來(lái)對(duì)數(shù)據(jù)做奇偶校驗(yàn),那么在11個(gè)ETU時(shí)MCU才能接收到數(shù)據(jù)。如果數(shù)據(jù)有錯(cuò),則無(wú)法在IS07816協(xié)議要求的時(shí)間點(diǎn)觸發(fā)錯(cuò)誤信號(hào)。
所以奇偶校驗(yàn)的運(yùn)算由MCU完成。把MCU的UART配置為8位數(shù)據(jù)位,一位停止位,校驗(yàn)位無(wú)。這樣對(duì)照?qǐng)D1和圖2可知,停止位對(duì)應(yīng)IS07816幀時(shí)序的校驗(yàn)位。MCU在讀取數(shù)據(jù)時(shí),如果檢測(cè)到串口幀錯(cuò)誤就可以確定數(shù)據(jù)的校驗(yàn)位為低,否則校驗(yàn)位為高。
通過(guò)這種方式MCU在起始位下降沿之后的10個(gè)ETU就能取到數(shù)據(jù),并進(jìn)行校驗(yàn)。 如果數(shù)據(jù)錯(cuò)誤,MCU延時(shí)0. 5個(gè)ETU之后觸發(fā)錯(cuò)誤信號(hào)。這樣就能夠滿足IS07916協(xié)議的錯(cuò)誤處理時(shí)序要求。
當(dāng)觸發(fā)RX中斷時(shí),MCU從UART相關(guān)寄存器獲取接收到的數(shù)據(jù)和錯(cuò)誤狀態(tài)信息。如果檢測(cè)到幀錯(cuò)誤表示校驗(yàn)位為低,如果沒(méi)有幀錯(cuò)誤則表示校驗(yàn)位為高。然后把數(shù)據(jù)和校驗(yàn)位的值一起做奇偶校驗(yàn)的運(yùn)算。
如果編碼協(xié)議為正向約定。那么對(duì)數(shù)據(jù)執(zhí)行偶校驗(yàn)。如果編碼協(xié)議為反向約定, 那么對(duì)數(shù)據(jù)執(zhí)行奇校驗(yàn)。
如果奇偶校驗(yàn)失敗,那么延時(shí)0. 5個(gè)ETU。然后把UART的TX置低,保持1到2個(gè) ETU時(shí)間。這樣就可以通知智能IC卡重發(fā)數(shù)據(jù)。
如果驗(yàn)證成功,那么對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換操作(可選,由上層協(xié)議完成)。正向約定的編碼協(xié)議,不需要對(duì)數(shù)據(jù)做轉(zhuǎn)換。反向約定的編碼協(xié)議需要對(duì)數(shù)據(jù)做取反和高低位交換的轉(zhuǎn)換操作。
以上所述僅為本發(fā)明的較佳實(shí)施用例而已,并非用于限定本發(fā)明的保護(hù)范圖。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種利用低成本MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法,其特征在于包括如下步驟步驟一硬件接口 把智能IC卡的I/O管腳通過(guò)三極管連接到MCU的UART的TX、RX管腳上;步驟二 發(fā)送數(shù)據(jù)具體包括如下步驟根據(jù)編碼協(xié)議,進(jìn)行數(shù)據(jù)轉(zhuǎn)換如果采樣正向約定的編碼方式,無(wú)須做轉(zhuǎn)換,如果采用反向約定的編碼方式,需要對(duì)數(shù)據(jù)取反和高低位交換的轉(zhuǎn)換;如果采樣的是正向約定的編碼協(xié)議,采用偶校驗(yàn)的方式;如果是反向約定,那么采用奇校驗(yàn)的方式;把UART的TX配置為輸出模式,通過(guò)GPIO模擬的方式發(fā)送數(shù)據(jù),發(fā)送的數(shù)據(jù)格式為起始位1+數(shù)據(jù)位8+校驗(yàn)位1;在發(fā)送校驗(yàn)位之后,延時(shí)1個(gè)ETU時(shí)間去檢測(cè)錯(cuò)誤信號(hào);如果檢測(cè)到RX引腳上的電平為低,表示智能IC卡數(shù)據(jù)接收錯(cuò)誤,需要重發(fā)數(shù)據(jù);否則表示接收成功可發(fā)送下一個(gè)數(shù)據(jù);步驟三接收數(shù)據(jù)具體包括如下步驟復(fù)位智能IC卡,復(fù)位應(yīng)答中的第一個(gè)字符為T(mén)S字符,根據(jù)這個(gè)字符可確定后繼的編碼協(xié)議;當(dāng)觸發(fā)UART的RX中斷時(shí),MCU從UART相關(guān)寄存器獲取接收到的數(shù)據(jù)和錯(cuò)誤狀態(tài)信息; 如果檢測(cè)到幀錯(cuò)誤表示校驗(yàn)位為低,如果沒(méi)有幀錯(cuò)誤則表示校驗(yàn)位為高,然后把數(shù)據(jù)和校驗(yàn)位的值一起做奇偶校驗(yàn)的運(yùn)算;如果編碼協(xié)議為正向約定,那么對(duì)數(shù)據(jù)執(zhí)行偶校驗(yàn);如果編碼協(xié)議為反向約定,那么對(duì)數(shù)據(jù)執(zhí)行奇校驗(yàn);如果奇偶校驗(yàn)失敗,那么延時(shí)0. 5個(gè)ETU,然后把UART的TX置低,保持1到2個(gè)ETU時(shí)間,這樣就可以通知智能IC卡重發(fā)數(shù)據(jù);如果驗(yàn)證成功,那么對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換操作正向約定的編碼協(xié)議,不需要對(duì)數(shù)據(jù)做轉(zhuǎn)換,反向約定的編碼協(xié)議需要對(duì)數(shù)據(jù)做取反和高低位交換的轉(zhuǎn)換操作。
2.如權(quán)利要求1所述的一種利用低成本MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法,其特征在于所述步驟二還包括智能卡IC接收數(shù)據(jù)錯(cuò)誤,需要重發(fā)數(shù)據(jù),如果連續(xù)5次出現(xiàn)錯(cuò)誤,則返回發(fā)送失敗的錯(cuò)誤碼,并對(duì)智能卡發(fā)起下電的操作。
3.一種利用低成本MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法,其特征在于包括如下步驟步驟一硬件接口 把智能IC卡的I/O管腳通過(guò)三極管連接到MCU的UART的TX、RX管腳上;步驟二 發(fā)送數(shù)據(jù)具體包括如下步驟根據(jù)編碼協(xié)議,進(jìn)行數(shù)據(jù)轉(zhuǎn)換如果采樣正向約定的編碼方式,無(wú)須做轉(zhuǎn)換,如果采用反向約定的編碼方式,需要對(duì)數(shù)據(jù)取反和高低位交換的轉(zhuǎn)換;如果采樣的是正向約定的編碼協(xié)議,采用偶校驗(yàn)的方式;如果是反向約定,那么采用奇校驗(yàn)的方式;采用物理UART發(fā)送數(shù)據(jù)的方式先確定UART在何時(shí)告訴MCU數(shù)據(jù)發(fā)送完成,MCU則會(huì)在準(zhǔn)確的時(shí)間點(diǎn)上去判斷錯(cuò)誤信號(hào)的電平;如果檢測(cè)到RX引腳上的電平為低,表示智能IC卡數(shù)據(jù)接收錯(cuò)誤,需要重發(fā)數(shù)據(jù);否則表示接收成功可發(fā)送下一個(gè)數(shù)據(jù);步驟三接收數(shù)據(jù)具體包括如下步驟復(fù)位智能IC卡,復(fù)位應(yīng)答中的第一個(gè)字符為T(mén)S字符,根據(jù)這個(gè)字符可確定后繼的編碼協(xié)議;當(dāng)觸發(fā)UART的RX中斷時(shí),MCU從UART相關(guān)寄存器獲取接收到的數(shù)據(jù)和錯(cuò)誤狀態(tài)信息; 如果檢測(cè)到幀錯(cuò)誤表示校驗(yàn)位為低,如果沒(méi)有幀錯(cuò)誤則表示校驗(yàn)位為高,然后把數(shù)據(jù)和校驗(yàn)位的值一起做奇偶校驗(yàn)的運(yùn)算;如果編碼協(xié)議為正向約定,那么對(duì)數(shù)據(jù)執(zhí)行偶校驗(yàn);如果編碼協(xié)議為反向約定,那么對(duì)數(shù)據(jù)執(zhí)行奇校驗(yàn);如果奇偶校驗(yàn)失敗,那么延時(shí)0. 5個(gè)ETU,然后把UART的TX置低,保持1到2個(gè)ETU時(shí)間,這樣就可以通知智能IC卡重發(fā)數(shù)據(jù);如果驗(yàn)證成功,那么對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換操作正向約定的編碼協(xié)議,不需要對(duì)數(shù)據(jù)做轉(zhuǎn)換,反向約定的編碼協(xié)議需要對(duì)數(shù)據(jù)做取反和高低位交換的轉(zhuǎn)換操作。
4.如權(quán)利要求3所述的一種利用低成本MCU的UART實(shí)現(xiàn)IS07816協(xié)議的方法,其特征在于所述步驟二還包括智能卡IC接收數(shù)據(jù)錯(cuò)誤,需要重發(fā)數(shù)據(jù),如果連續(xù)5次出現(xiàn)錯(cuò)誤,則返回發(fā)送失敗的錯(cuò)誤碼,并對(duì)智能卡發(fā)起下電的操作。
全文摘要
本發(fā)明公開(kāi)了一種利用低成本的MCU的UART實(shí)現(xiàn)ISO7816協(xié)議的方法。該方法包括字符幀發(fā)送模塊和接收模塊。發(fā)送模塊通過(guò)MCU的UART或者是通過(guò)軟件控制GPIO的方式,按照ISO7816協(xié)議的幀格式發(fā)送數(shù)據(jù),并對(duì)智能卡的錯(cuò)誤信號(hào)做出處理,發(fā)起重發(fā)操作。接收模塊通過(guò)MCU的UART對(duì)智能卡發(fā)送的數(shù)據(jù)做出采樣,并對(duì)采樣到的數(shù)據(jù)進(jìn)行偶校驗(yàn)的驗(yàn)證,如果驗(yàn)證失敗則觸發(fā)錯(cuò)誤信號(hào),通知智能卡重發(fā)數(shù)據(jù),否則對(duì)接收的數(shù)據(jù)進(jìn)行轉(zhuǎn)換并傳遞給上層協(xié)議。本發(fā)明的實(shí)現(xiàn)方式已經(jīng)經(jīng)過(guò)實(shí)際驗(yàn)證,并通過(guò)了銀聯(lián)卡檢測(cè)中心的EMV認(rèn)證。
文檔編號(hào)G06F13/42GK102521197SQ201110417440
公開(kāi)日2012年6月27日 申請(qǐng)日期2011年12月13日 優(yōu)先權(quán)日2011年12月13日
發(fā)明者趙進(jìn)云 申請(qǐng)人:福建鑫諾通訊技術(shù)有限公司