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