非接觸式智能卡(射頻卡)以其高度安全保密性、通信高速性、使用方便性廣泛應(yīng)用于三表行業(yè),實(shí)現(xiàn)預(yù)付費(fèi)功能,使人們生活質(zhì)量有了很大的提高。射頻卡技術(shù)應(yīng)用于水表將是智能水表的一次偉大革命。 MF RC522是Philips公司針對(duì)三表最新推出的一款非接觸式低功耗讀寫基站芯片,它是應(yīng)用于13.56MHz非接觸式通信中高集成讀卡IC系列中的一員。該讀卡IC系列利用了先進(jìn)的調(diào)制和解調(diào)概念,完全集成了13.56MHz下所有類型的被動(dòng)非接觸式通讀方式和協(xié)議。MF RC522支持ISO14443A所有的層,傳輸速度最高達(dá)424kbps,具有三種主機(jī)接口方式:SPI模式、UART模式、I2C模式。 本設(shè)計(jì)采用MSP430系列超低功耗16位單片機(jī)為主控芯片,系統(tǒng)3.3V供電完全適合MFRC522供電要求,實(shí)現(xiàn)了低功耗的完美結(jié)合。 1 系統(tǒng)設(shè)計(jì) 該系統(tǒng)以TI MSP430F413單片機(jī)為核心,工作電壓為1.8V~3.6V,內(nèi)置LCD驅(qū)動(dòng)器24%26;#215;4段,可以縮小體積、降低成本,在休眠模式下典型電流僅為0.7μA;采用內(nèi)部Flash保存用水?dāng)?shù)據(jù)、剩余水量和水表狀態(tài)信息;電源監(jiān)控采用理光R3111E(可根據(jù)設(shè)定的門限電壓選擇相應(yīng)的型號(hào));水表閾門采用2.5V~6V直流電機(jī),當(dāng)人為破壞水表或所購買水量低于設(shè)定值時(shí),水表報(bào)警并及時(shí)關(guān)掉閥門,同時(shí)將數(shù)據(jù)保存在內(nèi)部Flash中;采用MFRC522讀寫芯片讀寫Mifare 1 S50卡片實(shí)現(xiàn)預(yù)付費(fèi)功能。系統(tǒng)框如圖1所示。 本設(shè)計(jì)利用RC522 UART模式與單片機(jī)通信,由于MSP430F413沒有硬件串口,故需使用TIMERA模擬串口,如圖2所示。 對(duì)于MSP430F413而言,P1.0(TimerA捕獲/比較輸出口)口是UART的TX,P1.1(TimerA捕獲/比較輸出口)是UART的RX。 2 MFRC522命令寄存器及基本指令集 2.1 命令寄存器CommandReg(0x01) MF RC522內(nèi)部有64個(gè)寄存器,共分4頁:PAGE0:COMMAND AND STATUS;PAGE1:COMMAND;PAGE2:CFG;PAGE3:TEST。MF RC522通過內(nèi)部寄存器的讀寫控制與Mifare 1 IC卡數(shù)據(jù)通信。 CommandReg命令控制字如表1所示。 表1 CommandReg命令控制字 commandReg Address 0x01 Reset value 0x20 7 6 5 4 3 2 1 0 0 0 Rcv OFF Power Down COMMAND Command命令類別如表2所示。 表2 Command命令類型 COMMAND(命令) 命令代碼 Idle(空閑) 0000 CalcCRC(校驗(yàn)) 0011 Transmit(發(fā)送) 0100 NoCmd Change(無命令改變) 0111 Recceive(接收) 1000 Transceive(收發(fā)) 1100 MFAuthent(認(rèn)證) 1110 Soft Reset(軟件復(fù)位) 1111 2.2 基本指令集 MF RC522有14種基本指令集,實(shí)現(xiàn)不同方式的數(shù)據(jù)傳輸,如表3所示。 表3 14種基本指令集 基本指令 指令代碼 Request Std 0x26 Request All 0x52 AntiCollision(防重疊) 0x93 Select Tag(選卡片) 0x93 Authentication_A 0x60 Authentication_B 0x61 Read(讀) 0x30 Write(寫16Bytes) 0xA0 Write4(寫4Bytes) 0xA2 Increment(增值) 0xC1 Destore(減值) 0xC0 Restore(重儲(chǔ)) 0xC2 Transfer(傳送) 0xB0 No command 0x50 3 軟件設(shè)計(jì) MSP430F413首先對(duì)MF RC522進(jìn)行初始化配置,寄存器設(shè)置好后,MF RC522可以接收控制執(zhí)行命令執(zhí)行操作,實(shí)現(xiàn)與Mifare 1 S50卡片通信;Mifare 1 S50卡根據(jù)接收到的指令進(jìn)行相應(yīng)操作。但是MSP430F413并不是通過簡單的指令就可以讀寫IC卡片,需要一系列的操作才能完成通信。主要包括:(1)請(qǐng)求喚醒;(2)防重疊;(3)選擇卡片;(4)密碼認(rèn)證;(5)讀寫操作。 MSP430F413對(duì)Mifare 1 S50卡片操作流程,如圖3所示。 3.1 請(qǐng)求Request Std/Request All 當(dāng)在天線有效工作距離內(nèi)檢測(cè)到卡片,MF RC522發(fā)送Request Std/Request All請(qǐng)求指令,卡片接收到請(qǐng)求指令后返回握手信號(hào),從而判斷操作是否成功。 Request Std(0x26)連續(xù)讀卡指令 Request All(0x52)非連續(xù)讀卡指令 3.2 Atcollision(防重疊) MF RC522能夠防止多張卡片重疊造成的數(shù)據(jù)錯(cuò)誤。當(dāng)在天線有效工作距離內(nèi)檢測(cè)到多張卡片時(shí),MCU讀取序列號(hào)進(jìn)行判斷檢測(cè)。 Mifare 1 S50卡具有全球唯一4個(gè)字節(jié)的序列號(hào),SN存放在Sector0的Block0內(nèi)前4個(gè)字節(jié),第5個(gè)字節(jié)存放校驗(yàn)碼(4字節(jié)異或結(jié)果),MCU控制循環(huán)讀取序列號(hào),直到讀取一個(gè)校驗(yàn)正確的序列號(hào)后,保存并退出循環(huán);當(dāng)然出錯(cuò)也會(huì)退出循環(huán)。 Sector0的Block0數(shù)據(jù)格式如表4所示。 3.3 Select(選擇卡片) 將Anticollision操作讀取的序列號(hào)SN 4個(gè)字節(jié)還有異或的校驗(yàn)碼發(fā)送到Mifare 1 S50卡上,卡片接收后與自身SN及校驗(yàn)碼核對(duì),只有完全一樣才能選定卡片。 3.4 Authentication(密碼認(rèn)證) Mifare 1 S50卡有1KB容量,分為16個(gè)扇區(qū):Sector0到Sector15,每個(gè)Sector(扇區(qū))包括4個(gè)Block(塊),每個(gè)Block具有16個(gè)byte的存儲(chǔ)容量。Block被分為Block0至Block3;整個(gè)Mifare 1 S50非接觸式智能卡共有64個(gè)Block。 每個(gè)Sector的Block3都存放著本扇區(qū)自己的密碼KeyA、KeyB和Access Bits。通過Access Bits設(shè)置密碼方式和數(shù)據(jù)塊類型(Write/Read或Value)。 只有密碼完全認(rèn)證通過后,才可以對(duì)卡片進(jìn)行Write/Read操作。 3.5 Write/Read(讀寫操作) Authentication密碼認(rèn)證通過后,可以對(duì)64Block進(jìn)行讀寫操作。其中Sector0中的Block0只能執(zhí)行讀操作。Mifare 1 S50讀寫時(shí)是以Block為單位的,讀或?qū)懚际轻槍?duì)整個(gè)Block 16字節(jié)的數(shù)據(jù),不能單個(gè)字節(jié)讀寫。為了確保數(shù)據(jù)的正確性,可進(jìn)行數(shù)據(jù)校驗(yàn)。 3.6 Decrement/Increment(增值和減值操作) 當(dāng)數(shù)據(jù)塊通過設(shè)置Access bits配置成Value型時(shí),可以對(duì)其進(jìn)行Decrement/Increment操作。為了防止數(shù)據(jù)出錯(cuò),Value Block設(shè)有復(fù)雜的數(shù)據(jù)格式。Value重復(fù)存放3次,其中原碼存放2次,補(bǔ)碼再存放1次;Adr重復(fù)存放4次,其中原碼存放2次,補(bǔ)碼再存放2次。 Value:增值或減值 Adr:操作Block地址 執(zhí)行Decrement/Increment后,把結(jié)果存放在內(nèi)部數(shù)據(jù)緩沖寄存器中,等待Transfer指令操作寫入指定的目標(biāo)Block中。 3.7 Restore Restore指令是將Mifare 1 S50內(nèi)某一Block內(nèi)容讀出,存放在內(nèi)部數(shù)據(jù)緩沖寄存器中,等待Tranfer指令操作寫入指定的目標(biāo)Block中,相當(dāng)于復(fù)制Block a到Block b中. 3.8 Transfer(傳送) Transfer指令操作是將內(nèi)部數(shù)據(jù)緩沖區(qū)內(nèi)數(shù)據(jù)傳送到目標(biāo)Block中.執(zhí)行Decrment/Increment和Restore指令操作都需要Transfer指令,數(shù)據(jù)才能成功傳輸. 3.9 Halt(停機(jī)) Halt指令操作將結(jié)束MF RC522與Mifare S50通信。 MF RC522作為新一代非接觸IC卡與傳統(tǒng)的IC卡相比有著很大的優(yōu)勢(shì),具有較強(qiáng)的保密性能和防碰撞功能,特別是采用低電壓供電大大降低功耗,能夠與超低功耗MSP430單片機(jī)結(jié)合實(shí)現(xiàn)低功耗預(yù)付費(fèi)水表的設(shè)計(jì)。 |
不錯(cuò),但是RC522在現(xiàn)在這個(gè)時(shí)間(2021年)已經(jīng)早早被市場慢慢拋棄了,現(xiàn)在國產(chǎn)RC522已經(jīng)非常成熟,也很穩(wěn)定,成本也低,還能刷AB卡,RC522作為旗艦型產(chǎn)品,也會(huì)慢慢退出舞臺(tái)了。 |