日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFRC522开发笔记

發布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFRC522开发笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

一:基本概念

1、ISO-14443A協議:( 國際標準化組織:International Organization for Standardization)RFID協議的一種;
?? PICC:臨近卡(分為A型和B型)、PCD:臨近耦合設備--指MFRC522模塊、
?? ATQ:對請求的應答、ATQA 對A型卡請求的應答、ATQB 對B型卡請求的應答
?? REQA:對A型卡的請求、REQB:對B型卡的請求、WUPA:A型卡的喚醒命令(更多縮寫意思百度:ISO14443)
?? ASK:選擇確認

2、MIFARE: 恩智浦半導體(NXP Semiconductors)擁有的商標之一;

3、MIFARE卡(M1卡):兼具讀寫功能,主要是非接觸式,有快速防沖突機制 – 處理多卡同時進入感應區的機制,其特殊的存儲結構適合一卡多用,目前主要芯片philip mifare1 S50、 S70等;

4、官方網站:http://www.cn.nxp.com/ 網站中可以下載MFRC522芯片手冊和各種智能卡的使用手冊。

5、MFRC522特性:

? 非接觸式讀寫卡芯片,最大通信速率13.56MHz;

? 支持接口:UART,SPI(Speed_max=10Mbit/s),IIC(快速:400Kbit/s,高速:3400Kbit/s)

? 通信協議:ISO-14443A 或者叫 MIFARE

?? 收發緩沖:64字節

?? 支持中斷模式、可編程定時器、CRC協處理器

二:MFRC522與M1卡通信

在學習RFID打卡模塊時,需要涉及的操作原理主要有兩方面。一方面是MFRC522模塊的操作原理,即主機要怎樣才能操作控制這個模塊的問題。另一方面是MFRC522與M1卡之間的通信原理。只有兩方面都正確進行了,主機才能通過MFRC522模塊和M1卡進行通信。

①MFRC522原理

SPI通信原理:主機負責產生SCK信號-主從機通信時鐘,以下是SPI時序流程

讀字節數據:

寫字節數據:

(通常在51類型的單片機中是用軟件來實現SPI的通信時序,我們常把這種方法稱為軟件模擬SPI方式,但是在ARM這類比較高端的SOC處理器中是集成了SPI硬件控制器的,通常讀寫SPI外設只需要把地址/數據放到指定的寄存器即可,硬件會自動完成發送)

?

②M1-IC-S50卡工作原理/操作流程

M1卡結構:

共16個扇區,每個扇區4塊(塊0~3),共64塊,按塊號編址為0~63;

第0扇區的塊0(即絕對地址0塊)用于存放廠商代碼,已經固化,不可更改。

其他各扇區:

塊0、塊1、塊2為數據塊,用于存儲數據;塊3為控制塊,存放密碼A,存取控制,存放密碼B

對塊3中蘊藏的原理的解釋是操作RFID模塊的關鍵所在。

每個扇區的密碼和存取控制都是獨立的,可以根據實際需要設定各自的密碼及存取控制。

注:加密是針對一個扇區來進行的,千萬不要理解成對每一個數據塊進行加密。

?

MFRC522模塊與MF-IC卡通信流程:詳情得看MF1S50XX的手冊第八章

?

?

(1)M1卡得電復位(RPO:Power-On Restset),是MFRC522天線發出電磁波導致,意味著有命令REQA過來,稱為標準的請求,這種情況是M1卡進入感應區后首次與MFRC522通信。其他情況,M1卡進入休眠狀態或之前的操作已經終止,Halt之后被WUPA命令再次喚醒,稱為獲得所有的請求。獲得請求之后M1卡發送回應ATQA碼。ATQA是卡的類型碼:S50的類型碼是0x04,S70的類型碼是0x02。

(2)M1卡獲得請求后再次獲得防沖突命令執行防沖突機制。情景分析:有這么一種情況,一個時刻多張卡同時出現在MFRC522感應區,這時候RC522必須要專一,同時和幾張卡發生關系早晚都是要出事的,那么RC522必須要認定其中一張卡。當然事情還要講究兩廂情愿是吧,522問人家了,這就要求M1卡能夠主動告知RC522“我就是你的唯一的標識”。于是,事情就變成了這樣:RC522獲得最先主動告訴它的M1卡的UID,即卡的SN(4Bytes)+校驗(1Byte) ,作為下一步選擇通信卡的依據,這個SN需要主機從MFRC522中讀出來暫時保存。

(3)選卡:在主機控制下MFRC522需要把選卡的命令和上一步獲取的卡SN依次發送給M1卡,卡收到信息之后很老實,是選自己的信息就主動返回SAK信息,1Byte,實際上就是卡片的容量。

(4)驗證密碼:這是極其關鍵的一步了,里面涉及比較多比較復雜的協議。在PCD選中卡之后,接著主機控制他指出將要訪問的存儲器位置,然后連同驗證密碼命令、驗證秘鑰A|B一起發送給卡,三次密碼確認(硬件)成功之后,MFRC522的Status2Reg的Bit_4置位,之后的數據傳輸都是經過加密的。(對一個扇區一次驗證密碼成功之后根據控制字的設置可以對該扇區的數據塊進行相應讀寫操作直到執行Halt終止或驗證其他扇區的密碼,在選擇另一扇區時,需要先進行這一扇區密碼校驗。細心觀察上面那幅流程圖的箭頭也可以發現這個要求)
此外,有一點必須要說明的就是:默認控制下FF07806時A秘鑰:不可讀出,具有所有權限;B秘鑰:可讀出,沒有任何權限。控制字和秘鑰之間的聯系,推薦使用這個軟件:http://pan.baidu.com/s/1eQuCCvw

(5)存儲器操作:最終目的。

數據塊寫、數據塊讀:通過向M1卡發送WRITE、READ命令,分別是0xA0、0x30;

數據塊增值、數據塊減值:通過發M1卡的INCREMENT、DECREMENT指令,分別是0xC1、0xC0;
(寫數據塊時命令連同數據值一塊發送。)

(6)終止卡操作:HALT指令進入終止休眠模式。

(7)數據完整性措施:PCD和PICC之間的數據傳輸
每個塊16位CRC校驗、每個字節都有奇偶校驗位、位計數檢查、位編碼區別“1”“0”“無信息”、信道監控。
CRC16校驗: MFRC522內部有CRC16協處理器,主機通過軟件設置CRC初始值,然后把要發送的數據發送給MFRC522,激活CRC16協處理器后,等待一小會讀取CRCResultReg寄存器值即CRC16校驗值,然后把這個16位的校驗值附加到數據值后再通過MFRC522發送給M1卡片。至于其他校驗是硬件自動完成的,我們只需要自己去讀取MFRC522的Status1Reg寄存器看檢驗完成情況,讀ErrorReg寄存器就可知道成功與否。

三、問題解決

問1.各個扇區的默認秘鑰是多少?
答1.S50卡的初始密碼A和B是12個F。
問2.如何對加密扇區的某一數據塊進行讀寫數據?
答2.選中卡之后,首先要知道這個扇區的控制字,標準MF卡的控制字缺省值是0xFF078069,然后根據控制字要求驗證扇區的密碼A或密碼B,驗證成功之后就可以進行讀寫數據塊操作了。

問3.如何修改扇區的秘鑰?寫出具體編程步驟。
答3.扇區的秘鑰AB存放在該扇區的數據塊3,因此要修改扇區的密碼事先就要先知道這個扇區的控制字和原先的秘鑰A或B,根據控制字的要求驗證秘鑰A或B成功之后即可對存放在數據塊3的秘鑰AB進行修改。
編程步驟:就是MFRC522模塊與M1卡的通信流程。
問4.控制字有什么作用,如何進行修改?
答4.作用:是該扇區的各個數據塊的讀寫權限控制中心。控制字的修改和修改秘鑰的方法步驟一樣,只要根據控制字的需要密碼驗證成功之后即可對數據塊3的控制字域的值進行修改。這里先推測,修改密碼和控制字時,都是一起進行寫操作的,因為他們在同一個數據區。

四、程序設計思路

模塊化編程:

1.基本操作函數

主機的SPI接口的配置函數、收發函數,讀寫RFID模塊寄存器的函數等主機與模塊的操作函數。

2.主機與M1卡通信函數——封裝基本操作函數做成標準接口。

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的MFRC522开发笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。