[組圖]基于RI-R6C-001A IC與ISO15693標(biāo)準(zhǔn)的讀卡器設(shè)計(jì)
文章出處:http://m.dipdnbxp.cn 作者:鄭創(chuàng)立 人氣: 發(fā)表時(shí)間:2011年10月28日
1 概述
IC卡的發(fā)展經(jīng)歷了從存儲(chǔ)卡到智能卡、從接觸式卡到非接觸式卡、以及從近距離到遠(yuǎn)距離的過程。對(duì)于接觸卡(ISO/IEC7816標(biāo)準(zhǔn)定義),讀卡機(jī)必須和卡的觸點(diǎn)接觸才能與卡進(jìn)行信息交換,因此存在磨損嚴(yán)重、易受污染、壽命短、操作費(fèi)時(shí)等缺點(diǎn)。為解決上述問題,人們開始采用非接觸式卡技術(shù)。
非接觸式卡又稱射頻卡或感應(yīng)卡。它采用無線電調(diào)制方式和讀卡機(jī)進(jìn)行信息交換。射頻識(shí)別RFID技術(shù)是從九十年代興起的一項(xiàng)自動(dòng)識(shí)別技術(shù)。它利用無線射頻方式進(jìn)行非接觸雙向通信,以達(dá)到識(shí)別目的并可進(jìn)行數(shù)據(jù)交換。
RFID與磁卡、IC卡等接觸式識(shí)別技術(shù)不同,RFID系統(tǒng)的電子標(biāo)簽和讀寫器之間無須物理接觸就可完成識(shí)別,因此它具有多目標(biāo)識(shí)別、運(yùn)動(dòng)目標(biāo)識(shí)別的特點(diǎn)。
目前ISO/IEC10536定義的卡稱為密耦合卡;ISO/IEC 14443定義的卡則是近耦合卡(PICC),對(duì)應(yīng)的讀卡機(jī)簡(jiǎn)寫為PCD;而ISO/IEC15693對(duì)應(yīng)的卡是遙耦合卡(VICC),對(duì)應(yīng)的讀卡機(jī)簡(jiǎn)寫為VCD。VICC比PICC具有更遠(yuǎn)的讀卡距離(為1m左右),二者均采用13.56MHz工作頻率,并都具有防沖突機(jī)制。
2 硬件設(shè)計(jì)
圖1所示是一個(gè)射頻讀寫系統(tǒng)的工作原理圖,它主要由ASIC和VICC兩部分組成。
2.1 ASIC電路的工作原理
對(duì)于圖1所示的射頻讀寫系統(tǒng),ISO/IEC 15693-2所規(guī)定的VCD與VICC通信物理層協(xié)議全部可由ASIC芯片RI-R6C001來實(shí)現(xiàn),用戶通過同步串行接口(SPI),并遵照ASCI的通信要求就可實(shí)現(xiàn)VICC的讀寫操作。MCU和ASIC的通信接口有三根線:SCLOCK、DIN、DOUT,分別代表時(shí)鐘線、數(shù)據(jù)輸入線、數(shù)據(jù)輸出線。時(shí)鐘線是雙向的,發(fā)送數(shù)據(jù)時(shí)由MCU控制,接收數(shù)據(jù)時(shí)則由ASIC控制, ASIC在時(shí)鐘的上升沿鎖存數(shù)據(jù)。DOUT除了具有在接收數(shù)據(jù)期間的數(shù)據(jù)輸出功能外,還有表征ASIC內(nèi)部FIFO的功能。DOUT帶有內(nèi)部下拉,平時(shí)為低電平。輸入數(shù)據(jù)過程中,當(dāng)ASIC的16位FIFO寄存器滿時(shí),DOUT線會(huì)自動(dòng)跳變?yōu)楦唠娖剑钡剑疲桑疲霞拇嫫鳛榭?,DOUT線又會(huì)跳變?yōu)榈碗娖?。在DOUT為高電平期間,輸入數(shù)據(jù)無效。除了通信線外,系統(tǒng)還有一條M_ERR線,用于在同時(shí)讀多張卡的時(shí)候表征數(shù)據(jù)的沖突情況。同樣,M_ERR線也有內(nèi)部下拉,平時(shí)為低電平,沖突時(shí)此線會(huì)升為高電平。
對(duì)ASIC的操作有三種模式:普通模式、寄存器模式和直接模式。直接模式下,MCU要直接面向射頻信號(hào)處理,比較復(fù)雜,所以此種模式一般不用。普通模式和寄存器模式均為標(biāo)準(zhǔn)的數(shù)字信號(hào)操作,其區(qū)別在于規(guī)定芯片操作的一些參數(shù)不同(例如規(guī)定所采用的射頻協(xié)議、調(diào)制方式及傳輸速率是在命令序列中規(guī)定,還是由寄存器來設(shè)定的)。普通模式每條指令均含有該指令使用的參數(shù),而寄存器模式指令序列中并不含這些參數(shù),而是由預(yù)先寫入的寄存器中的數(shù)值來決定。若使RI-R6C-001A芯片正常工作,ASIC上電后必須首先初始化時(shí)間寄存器。
2.2 VICC-Tag-it應(yīng)答器
VICC-Tag-it應(yīng)答器完全兼容于ISO/IEC15693標(biāo)準(zhǔn)協(xié)議。VICC-Tag-it應(yīng)答器內(nèi)有國(guó)際統(tǒng)一且不重復(fù)的8字節(jié)(64bit)唯一識(shí)別內(nèi)碼(Unique identifier,簡(jiǎn)稱UID)。圖2是UID唯一識(shí)別內(nèi)碼的格式示意圖,其中第1~48bit共6字節(jié)為生產(chǎn)廠商的產(chǎn)品編碼;第49~56bit的1個(gè)字節(jié)為廠商代碼(ISO/IEC7816-6/AM1),最高字節(jié)固定為“EO”;8位AFI(應(yīng)用識(shí)別號(hào))和8位DSFID(數(shù)據(jù)存儲(chǔ)格式)用來對(duì)卡和特定應(yīng)用的特征進(jìn)行標(biāo)識(shí)??▋?nèi)有2kbit EEPROM,分成64個(gè)塊,每塊32個(gè)bit。每個(gè)塊均可以鎖定,以保護(hù)數(shù)據(jù)不被修改。AFI、DSFID和32個(gè)塊均可讀可寫,用以存儲(chǔ)用戶數(shù)據(jù)。VICC-Tag-it采用13.56MHz的載波頻率,工作于“READER TALKS FIRST”模式,即一問一答的模式??▋?nèi)有防沖突機(jī)制,可以同時(shí)讀取多張卡而不會(huì)造成沖突。特別應(yīng)當(dāng)指出:VICC-Tag-it內(nèi)沒有邏輯加密電路,無法實(shí)現(xiàn)密碼功能,也正是這一點(diǎn)限制了VICC-Tag-it在其它保密性要求較高領(lǐng)域的應(yīng)用。
3 通信協(xié)議
發(fā)給ASIC的命令序列必須符合ASIC通信協(xié)議和ISO/IEC15693-3規(guī)范。
3.1 命令結(jié)構(gòu)
圖3所示是該系統(tǒng)的命令序列時(shí)序圖。在普通模式下,該系統(tǒng)的命令序列結(jié)構(gòu)如下:
起始位(S1) | 命令字(CMD) | 數(shù)據(jù) | 結(jié)束位(ES1) |
起始位(S1):收發(fā)器和微處理器之間的通信開始位,當(dāng)SCLOCK位保持高電平時(shí),將在DIN產(chǎn)生一個(gè)上升沿(參見圖3)。
命令字節(jié):用于規(guī)定ASIC與VICC通訊時(shí)的有關(guān)參數(shù)。如果該端為30H則表示該系統(tǒng)支持的射頻協(xié)議是ISO15693(256選1),采用FM調(diào)制方式,調(diào)制率10%,返回?cái)?shù)據(jù)波特率為6.67kb/s。注意:命令字節(jié)的發(fā)送順序是高位在先,即:MSB FIRST。
數(shù)據(jù):數(shù)據(jù)域內(nèi)容由15693-3規(guī)定這個(gè)數(shù)據(jù)一般發(fā)送到TAG。
結(jié)束位(ES1):收發(fā)器和微處理器之間的通信結(jié)束位,當(dāng)SCLOCK位保持高電平時(shí),將在DIN產(chǎn)生一個(gè)下降沿(見圖3)。
通常在寄存器模式下,命令字節(jié)是1位,且該位為1。
ISO15693-3命令的一般格式如下:
起始位(S1) | FLAGS | 命令順號(hào) | 命令內(nèi)容 | CRC16 | 結(jié)束位(ES1) |
在ISO15693命令序列中,FLAGS用于規(guī)定命令內(nèi)容中某些可選域的存在。由于S1和ES1在ASIC命令序列中已經(jīng)存在,所以只須把ISO15693命令序列中FLAGS、命令序號(hào)、命令內(nèi)容、CRC16等域的內(nèi)容取出并填入ASIC序列中的數(shù)據(jù)域然后打包即可。數(shù)據(jù)域的發(fā)送順序?yàn)榈臀辉谙?,即:LS?FIRST。
3.2 響應(yīng)結(jié)構(gòu)
圖4所示是VICC的響應(yīng)時(shí)序。VICC響應(yīng)的一般格式是:
起始位(S2) | FLAGS | 響應(yīng)內(nèi)容 | CRC16 | 結(jié)束位(ES2) |
其中起始位S2用于表示VICC響應(yīng)數(shù)據(jù)的開始,其定義是當(dāng)SCLOCK為高電平時(shí),DOUT產(chǎn)生一個(gè)上升沿(參見圖4)。而結(jié)束位ES2則表示VICC響應(yīng)數(shù)據(jù)的結(jié)束。它被定義為當(dāng)SCLOCK為高電平時(shí),DOUT產(chǎn)生一個(gè)下降沿(如圖4)。
4 結(jié)束語
考慮到命令字節(jié)(8位)發(fā)送的順序是MSB FIRST,其它數(shù)據(jù)均是LSB FIRST;而且“S1 01111011 00000001 11000ES1”是時(shí)間寄存器的初始化序列;同時(shí),在命令發(fā)送過程中,雙向時(shí)鐘SCLOCK線由MCU控制,因此,在接收VICC響應(yīng)之前必須進(jìn)行時(shí)鐘線的切換,以將控制權(quán)交由ASIC控制。對(duì)于FIFO管理,發(fā)送每一位時(shí)都要檢測(cè)DOUT的電平,DOUT為高時(shí)停止發(fā)送,直到DOUT恢復(fù)到低電平為止。發(fā)送命令字節(jié)后,應(yīng)適當(dāng)延時(shí),以利于ASIC正確動(dòng)作,同時(shí)應(yīng)考慮電路的抗干擾能力。對(duì)于ISO15693-3規(guī)定的FLAGS、命令序列號(hào)、命令內(nèi)容等字節(jié),還應(yīng)進(jìn)行CRC16校驗(yàn)。關(guān)于反碰撞問題,可采用“二進(jìn)制搜索”算法并選用曼徹斯特編碼。為實(shí)現(xiàn)這種算法,需要一組命令并由應(yīng)答器處理,同時(shí)應(yīng)答器要擁有唯一的序列號(hào)(UID),例如磁場(chǎng)中有兩張卡,其UID分別是:“E00700000234D1E1”和“E00700000234D2D8”,那么,用命令來查詢當(dāng)前磁場(chǎng)范圍內(nèi)卡的卡號(hào),就能很好的解決碰撞問題。