關(guān)于非接觸式IC智能(射頻)卡及其讀寫(xiě)設備內核技術(shù)的研究與應用開(kāi)發(fā)(連載4)
文章出處:http://psychicreadingswithdeb.com 作者:張敏 人氣: 發(fā)表時(shí)間:2011年11月01日
在上述表中,僅當DV(Data Valid數據有效)位被設置有效時(shí)(即DV=”1”) ,TE,PE,CE,BE及AE標志才有效。但有一例外,即 當認證(Authentication)正確完成后,AE標志也直接有效。
SOR是Software Reset(軟件復位)的縮寫(xiě)。當執行SOR后,所有的這些標志將被清除,且當對MCM的任何一個(gè)寄存器執行寫(xiě)周期時(shí),所有的這些標志也將被清除。詳見(jiàn)SOR后的復位表。
當對MCM內的任何一個(gè)寄存器執行寫(xiě)周期時(shí),所有的這些標志也將被清除;僅當FIFO是空時(shí),DV標志將被寫(xiě)周期清除。
有時(shí)侯MCM接收少于8 bits(例如 在接收ACK 或NACK時(shí))時(shí),MCM將不影響PE, CE, 及AE標志。
在MCU與MCM, MCM與Mifare 1卡片進(jìn)行數據通信時(shí),經(jīng)常會(huì )出現各種錯誤。例如,卡片沒(méi)能認證(Authentication) 通過(guò), 則會(huì )使AE出錯位置位,等等。
以下是在檢查DV位之后,相關(guān)的出錯情況,列為下表:

注意,送到卡片上的所有的命令和數據都提供奇/偶校驗(parity) 和CRC 檢查( 但“REQUEST”命令操作除外)。這是由卡片上的ASIC負責檢查。
3、ENABLE 寄存器,地址:02H
ENABLE 寄存器的設置將影響卡片在通信時(shí)對 parity 和CRC 的校驗。在ENABLE寄存器中有針對 parity 和CRC 校驗的復位允許位(reset ENABLE bits)。
在對MCM進(jìn)行編程的開(kāi)始時(shí),必須對ENABLE寄存器進(jìn)行寫(xiě)操作,即必須將CE位關(guān)閉。僅當執行”Select”命令操作時(shí)才打開(kāi)CE位:
由于MCM在電源接通時(shí)或在任何數據通信開(kāi)始時(shí),都會(huì )復位parity 和CRC塊,因此無(wú)須額外地去執行這一操作。
4.BCNTS 寄存器,地址: 03H
BCNTS是英文Bit-Counter-for-Sending的縮寫(xiě),意為傳送時(shí)的位計數器(寄存器)。 這里的傳送指的是CPU向MCM的DATA寄存器寫(xiě)數據。因此BCNTS寄存器實(shí)際上是一個(gè)字節發(fā)送控制器,它控制了MCU向DATA寄存器中寫(xiě)進(jìn)的數據字節數目。
例如,設置BCTRS=10H,則可向MCM的DATA寄存器寫(xiě)進(jìn)的數據字節數目為2個(gè)(8位字長(cháng)的數據,因為總的bit數目=10H=16D),多余的數據,MCM將不予接收。
由于BCNTS寄存器是控制向DATA寄存器寫(xiě)數據的字節數目,因此這一操作必須在數據寫(xiě)入DATA寄存器之前完成。使用2進(jìn)制代碼來(lái)操作。
在大量的字節數據被寫(xiě)入DATA寄存器之后,MCM自動(dòng)地與卡片進(jìn)行通信。寫(xiě)入DATA寄存器的bits數量由BCNTS寄存器制定,保持。
5。BCNTR寄存器, 04H
BCNTR是英文Bit-Counter-for-Receiving的縮寫(xiě),意為接收時(shí)的位計數器(寄存器)。
與BCNTS寄存器相反, BCNTR寄存器控制了MCU讀取DATA寄存器的數據字節數目
例如,設置BCNTR=20H,則可向MCM的DATA寄存器讀取的數據字節數目為4個(gè)(8位字長(cháng)的數據,因為總的bit數目=20H=32D),多余的數據,MCM將不予理會(huì )。
由于BCNTR寄存器是控制向DATA寄存器讀取數據的字節數目,因此這一操作必須在讀DATA寄存器之前完成。使用2進(jìn)制代碼來(lái)操作。
BCNTR寄存器中的值將與實(shí)際接收到的數據字節相比較,如果有差別,則STACON寄存器中的BE標志被設置。
6。BAUDRATE 寄存器, 地址: 05H
BAUDRATE 意為數據傳輸到卡片上或卡片上的數據傳到MCM時(shí)通信的位速率。雖然BAUDRATE 寄存器的后四位相關(guān)與指定的位速率,但是實(shí)際有用于MIFARE 1卡的只是最后一位。
BAUDRATE 寄存器的設置將直接影響著(zhù)MCM與Mifare 1卡片之間的數據通信速率。
MCM中有一個(gè)時(shí)鐘發(fā)生器。寫(xiě)數據至BAUDRATE 寄存器,可以控制 時(shí)鐘發(fā)生器(CLOCK GENERATOR)。以下是位速率的計算公式:
7。TOC 寄存器, 地址: 06H
TOC是Time Out Counter ((定)時(shí)間溢出記數器 ) 的縮寫(xiě)。
Zhang28
TOC 寄存器中的值 (非零值) 將在 沒(méi)有通信時(shí),永久地被遞減。因此,在沒(méi)有通信時(shí),或通信剛結束時(shí),TOC 寄存器中的值必須被設置,即設置TOC = 0x00H. 例如: 在FIFO中的數據有效時(shí),就必須這樣做。否則將影響STACON寄存器的TE出錯標志。
如果有溢出出現,則TE標志被設置,DV標志被激活。
在完成寫(xiě)數據到DATA寄存器,定時(shí)溢出記數器 應該經(jīng)常被初始化。但有個(gè)例外,即 在認證操作(AUTHENCATION)的開(kāi)始時(shí)段,定時(shí)溢出記數器 應該在存取“KEYSTACON” 和“KEYADDR”寄存器 之后,在存取DATA寄存器之前 被初始化。
一般地在讀?。≧ead)和保存(save)了STACON寄存器中的數據之后 定時(shí)溢出記數器必須被關(guān)閉。
8.MODE寄存器, 地址: 07H
MODE 意為在與卡片數據相互往來(lái)時(shí)的數據編碼模式 (MODE of DATA coding)。MODE寄存器的設置控制了MCM在與卡片數據相互通信時(shí)的數據編碼模式.
MODE寄存器的每一位都與數據通信模式有關(guān),但在使用MIFARE 1卡時(shí),只有最后3 位(BITS)最為關(guān)聯(lián)。
MODE 寄存器 中的P2 ,P1 ,及P0位決定了在NPAUSE0 和NPAUSE1引腳上的各自的脈沖寬度。脈沖寬度的可變范圍在 2 ~ 3 us 之間。
在使用MIFARE卡時(shí),P2 ,P1 ,及P0位應被設置為 111 b 或110 b。
這里必須提醒讀者注意的是,當我們使用CM200(Philiphs產(chǎn)品)時(shí)與使用SB201(UniVision Engineering Limited聯(lián)視工程有限公司的產(chǎn)品)時(shí),MODE 寄存器的設置值將不一樣。
使用CM200(Philiphs產(chǎn)品)時(shí), MODE 寄存器的設置值應為: “1100 0110b”,即C6H,但在使用SB201(UniVision Engineering Limited聯(lián)視工程有限公司的產(chǎn)品)時(shí), MODE 寄存器的設置值應為: “1101 0110b”,即D6H。這是兩個(gè)產(chǎn)品唯一存在的硬件上的不兼容,導致軟件的設置值不同。 否則由于數據通信時(shí)的數據編碼模式不相同,MCM將不能正常工作,不能讀/寫(xiě)Mifare 1卡片。在實(shí)際應用中已有此經(jīng)驗教訓。
9. CRCDATA 寄存器, 地址: 08H
被計算CRC的數據必須被寫(xiě)入CRCDATA寄存器中。 計算后的CRC必須從CRCDATA 寄存器中讀出。
在寫(xiě)入一個(gè)BYTE(字節)到CRCDATA 寄存器后,計算將開(kāi)始。計算完成后,STACON寄存器的CV標志被設置。當我們要寫(xiě)下一個(gè)字節到CRCDATA 寄存器之前,或在讀取CRCDATA寄存器以得到CRC之前,或在檢查CZ標志之前,都必須先讀取CV標志,檢查CV標志。(待續)