基于FM1702SL的射頻讀寫器系統(tǒng)設(shè)計(jì)
FMl702SL內(nèi)部有8個(gè)寄存器頁(yè),每頁(yè)有8個(gè)寄存器,每個(gè)寄存器有8位數(shù)據(jù)。這些寄存器是統(tǒng)一編址的,從Ox00~0x3F,MCU通過(guò)SPI 接口與 FMl702SL通信對(duì)這些寄存器進(jìn)行設(shè)置。例如,MCU需要讓FMl702SL執(zhí)行某個(gè)命令(Transceive)時(shí),把此命令的代碼(1E)寫入 Command寄存器就可以了。
必須注意的是,MCU對(duì)卡片的操作不是簡(jiǎn)單的一條指令所能完成的,其中必須有對(duì)FMl702SL硬件內(nèi)部寄存器的設(shè)置。操作步驟如圖5所示。
(1)復(fù)位初始化FMr702SL:初始化FMl702SL的SPI接口,初始化FMl702SL定時(shí)器,設(shè)置定時(shí)器控制寄存器,打開(kāi)Txl、TX2。
(2)Request(請(qǐng)求):當(dāng)一張Mifare卡片處在卡片讀寫器的天線的工作范圍之內(nèi)時(shí),程序員控制讀寫器向卡片發(fā)出R:EQUEsT all(或REQUEsT std)命令??ㄆ腁TR將啟動(dòng),將卡片BLOCkO中的卡片類型(TagType)號(hào)共2個(gè)字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行復(fù)位請(qǐng)求操作,讀寫器對(duì)卡片的其它操作將不會(huì)進(jìn)行。
(3)Antieollision LOOp(防沖突機(jī)制):如果有多張Mifare卡片處在卡片讀寫器的天線的工作范圍之內(nèi)時(shí),讀寫器將首先與每一張卡片進(jìn)行通信,取得每一張卡片的系列號(hào)。由于每一張Mifare卡片都具有其唯一的序列號(hào),決不會(huì)相同,因此讀寫器根據(jù)卡片的序列號(hào)來(lái)保證一次只對(duì)一張卡操作。該操作讀寫器得到卡的返回值為卡的序列號(hào)。
(4)Select Tag(選擇卡片):完成了上述二個(gè)步驟之后,讀寫器必須對(duì)卡片進(jìn)行選擇操作。執(zhí)行操作后,返回卡上的SIZE字節(jié)。
(5)Authentication(三次相互驗(yàn)證):經(jīng)過(guò)上述三個(gè)步驟,在確認(rèn)已經(jīng)選擇了一張卡片時(shí),讀寫器在對(duì)卡進(jìn)行讀寫操作之前,一必須對(duì)卡片上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證。如果匹配,才允許進(jìn)一步的讀寫操作。
(6)讀寫操作:對(duì)卡的最后操作是讀、寫、增值、減值、存儲(chǔ)和傳送等操作。
評(píng)論