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