采用AT89C51CC01和FM1712芯片的射頻卡讀寫(xiě)器的實(shí)現
6 讀寫(xiě)器對卡的操作本文引用地址:http://dyxdggzs.com/article/172112.htm
FM1712內部有8個(gè)寄存器頁(yè),每頁(yè)有8個(gè)寄存器,每個(gè)寄存器有8位數據。這些寄存器是統一編址的(從0x00到0x3F),MCU通過(guò)SPI接口與FM1712通信來(lái)對這些寄存器進(jìn)行設置。如MCU需要讓FM1712執行某個(gè)命令(Transceive),就可以把此命令的代碼(1E)寫(xiě)入Command寄存器。必須注意的是,MCU對卡片的操作不是簡(jiǎn)單的一條指令所能完成的,其中必須有對FM1712內部硬件寄存器的設置。其操作如圖4所示。以下是對卡的操作定義。

(1) 初始化:包括對MCU的初始化和對各硬件寄存器設定初始值、打開(kāi)RF場(chǎng)以及看門(mén)狗復位等操作;同時(shí)要初始化FM1712的SPI接口和定時(shí)器。設置定時(shí)器控制寄存器,并打開(kāi)TX1、TX2。
(2) Request (請求):當一張Mifare卡片處在卡片讀寫(xiě)器的天線(xiàn)工作范圍之內時(shí),程序員可控1制讀寫(xiě)器向卡片發(fā)出REQUEST all(或REQUESTstd)命令,以啟動(dòng)卡片的ATR將卡片Block0中的卡片類(lèi)型(TagType)號共2個(gè)字節傳送給讀寫(xiě)器,從而建立卡片與讀寫(xiě)器的第一步通信聯(lián)絡(luò )。如果不進(jìn)行復位請求操作,讀寫(xiě)器對卡片的其它操作將不能進(jìn)行。
(3) Anticollision Loop(防沖突機制):如果有多張Mifare卡片處在卡片讀寫(xiě)器的天線(xiàn)工作范圍之內,PCD將首先與每一張卡片進(jìn)行通信,以取得每一張卡片的系列號。由于每一張Mifare卡片都具有其唯一的序列號而決不會(huì )相同,因此,PCD可根據卡片的序列號來(lái)保證一次只對一張卡進(jìn)行操作。該操作后,PCD得到PICC的返回值即為卡的序列號。
(4) Select Tag(選擇卡片):完成上述步驟之后,PCD必須對卡片進(jìn)行選擇操作。執行操作后,返回卡上的SIZE字節。
(5) Authentication(三次相互驗證):經(jīng)過(guò)上述步驟并在確認已經(jīng)選擇了一張卡片時(shí),讀寫(xiě)器在對卡進(jìn)行讀寫(xiě)操作之前,還必須對卡片上已經(jīng)設置的密碼進(jìn)行認證。如果匹配,才允許進(jìn)一步進(jìn)行讀寫(xiě)操作。
(6) 讀寫(xiě)操作:對卡的最后操作就是讀、寫(xiě)、增值、減值、存儲和傳送等操作。在每一個(gè)加值和減值操作后都必須跟隨一條Transfer傳送指令。這樣才能真正地將數據結果傳送到卡片上。如果沒(méi)有傳送指令,數據結果仍將保持在數據緩沖寄存器中。
(7) 若循環(huán)詢(xún)問(wèn)是Request All指令,那么,在處理完一張卡片后,還要判斷是否還有未處理完的卡片。
7 結束語(yǔ)
IC卡以其高度的信息集成及安全性已經(jīng)融入當今信息技術(shù)的主流之中。本文介紹的讀寫(xiě)器所用的讀卡芯片FM1712是一款優(yōu)秀的新型國產(chǎn)芯片,經(jīng)實(shí)驗證明,基于該芯片設計的Mifare卡讀寫(xiě)器,工作十分穩定。此外,在此讀寫(xiě)器的基礎上,只要稍加改動(dòng)還能開(kāi)發(fā)成不同的射頻識別應用系統,因而具有很好的市場(chǎng)前景。
評論