基于RI-R6C-001A IC與ISO15693標準的讀卡器設(shè)計
摘要:文中給出了采用TI公司最新的射頻收發(fā)器芯片RI-R6C-001A,并結(jié)合微處理器設(shè)計ISO/IEC15693讀卡器的具體方法,同時介紹了RI-R6C-001A的通信協(xié)議和ISO/IEC15693標準。
關(guān)鍵詞:IC卡;射頻識別;ISO15693;讀卡器 1 概述 IC卡的發(fā)展經(jīng)歷了從存儲卡到智能卡、從接觸式卡到非接觸式卡、以及從近距離到遠距離的過程。對于接觸卡(ISO/IEC7816標準定義),讀卡機必須和卡的觸點接觸才能與卡進行信息交換,因此存在磨損嚴重、易受污染、壽命短、操作費時等缺點。為解決上述問題,人們開始采用非接觸式卡技術(shù)。 非接觸式卡又稱射頻卡或感應(yīng)卡。它采用無線電調(diào)制方式和讀卡機進行信息交換。射頻識別?RFID?技術(shù)是從九十年代興起的一項自動識別技術(shù)。它利用無線射頻方式進行非接觸雙向通信,以達到識別目的并可進行數(shù)據(jù)交換。 目前ISO/IEC10536定義的卡稱為密耦合卡;ISO/IEC 14443定義的卡則是近耦合卡(PICC),對應(yīng)的讀卡機簡寫為PCD;而ISO/IEC15693對應(yīng)的卡是遙耦合卡(VICC),對應(yīng)的讀卡機簡寫為VCD。VICC比PICC具有更遠的讀卡距離(為1m左右),二者均采用13.56MHz工作頻率,并都具有防沖突機制。 圖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ù)過程中,當ASIC的16位FIFO寄存器滿時,DOUT線會自動跳變?yōu)楦唠娖?,直到FIFO寄存器為空,DOUT線又會跳變?yōu)榈碗娖健T冢模希眨詾楦唠娖狡陂g,輸入數(shù)據(jù)無效。除了通信線外,系統(tǒng)還有一條M_ERR線,用于在同時讀多張卡的時候表征數(shù)據(jù)的沖突情況。同樣,M_ERR線也有內(nèi)部下拉,平時為低電平,沖突時此線會升為高電平。 對ASIC的操作有三種模式:普通模式、寄存器模式和直接模式。直接模式下,MCU要直接面向射頻信號處理,比較復(fù)雜,所以此種模式一般不用。普通模式和寄存器模式均為標準的數(shù)字信號操作,其區(qū)別在于規(guī)定芯片操作的一些參數(shù)不同(例如規(guī)定所采用的射頻協(xié)議、調(diào)制方式及傳輸速率是在命令序列中規(guī)定,還是由寄存器來設(shè)定的)。普通模式每條指令均含有該指令使用的參數(shù),而寄存器模式指令序列中并不含這些參數(shù),而是由預(yù)先寫入的寄存器中的數(shù)值來決定。若使RI-R6C-001A芯片正常工作,ASIC上電后必須首先初始化時間寄存器。 VICC-Tag-it應(yīng)答器完全兼容于ISO/IEC15693標準協(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)用的特征進行標識??▋?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)當指出:VICC-Tag-it內(nèi)沒有邏輯加密電路,無法實現(xiàn)密碼功能,也正是這一點限制了VICC-Tag-it在其它保密性要求較高領(lǐng)域的應(yīng)用。 發(fā)給ASIC的命令序列必須符合ASIC通信協(xié)議和ISO/IEC15693-3規(guī)范。 3.1 命令結(jié)構(gòu) 圖3所示是該系統(tǒng)的命令序列時序圖。在普通模式下,該系統(tǒng)的命令序列結(jié)構(gòu)如下:
起始位(S1):收發(fā)器和微處理器之間的通信開始位,當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é)束位,當SCLOCK位保持高電平時,將在DIN產(chǎn)生一個下降沿(見圖3)。 通常在寄存器模式下,命令字節(jié)是1位,且該位為1。 ISO15693-3命令的一般格式如下:
在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用于表示VICC響應(yīng)數(shù)據(jù)的開始,其定義是當SCLOCK為高電平時,DOUT產(chǎn)生一個上升沿(參見圖4)。而結(jié)束位ES2則表示VICC響應(yīng)數(shù)據(jù)的結(jié)束。它被定義為當SCLOCK為高電平時,DOUT產(chǎn)生一個下降沿(如圖4)。 考慮到命令字節(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)適當延時,以利于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”,那么,用命令來查詢當前磁場范圍內(nèi)卡的卡號,就能很好的解決碰撞問題。 |