硬體準備
stm32f401ccu6最小開發闆
rfid-rc522開發闆
usb2ttl轉接, 可以用pl2303, ch340, CP2102, FT232
Mifare 1K卡, UID長度4位元組的版本
軟體準備
Keil uVision5
putty, xshell等可以連接配接com口的終端
MFRC522 13.56MHZ射頻卡讀卡器

SPI是Serial Peripheral Interface的縮寫, 是一種同步的短距離序列槽通信接口規範, 由摩托羅拉與80年代開發, 主要用于嵌入式系統, 特别是SD卡和LCD顯示. SPI裝置由一主(master)多從(slave)組成, 通過SS(slave select)或者CS(chip select)選擇通信. 通信需要的接口一般為4個:
SCLK: Serial Clock (output from master)
MOSI: Master Out Slave In (data output from master)
MISO: Master In Slave Out (data output from slave)
SS: Slave Select (often active low, output from master)
stm32f401ccu6與rfid-rc522和usb2ttl的接線
MFRC522 <====> STM32F401, 在rc522.c中設定, PA5, PA6和PA7是datasheet中定義的SPI1
PL2303/CH340 <====> STM32F401, 在main.c的UARTmain_Init()方法中設定, PB6和PB7是datasheet中定義的USART1
M1卡(Mifare 1K Card)
容量為8K位EEPROM, 8192 bits(1K bytes)
分為16 個扇區,每個扇區為4 塊,每塊16 個位元組,以塊為存取機關
每個扇區有獨立的一組密碼及通路控制
每張卡有唯一序列号,為32 位
具有防沖突機制,支援多卡操作
無電源,自帶天線,内含加密控制邏輯和通訊邏輯電路
資料儲存期10年,可改寫10萬次,讀無限次
工作溫度:-20℃ ~ 50℃(溫度為90%), PET 材料封裝的M1卡溫度可達100℃。
工作頻 :13.56MHZ
通信速 :106Kbps
讀寫距離:10cm以内(與讀寫器有關)
M1卡分為16個扇區, 每個扇區分為4塊(塊0、塊1、塊2、塊3), 也可以将16個扇區的64個塊按絕對位址編号為 0 - 63
第0扇區的塊0用于存放廠商代碼, 已經固化, 不可更改
UID分為4byte, 7byte等版本
每個扇區的塊0、塊1、塊2為資料塊, 可用于存貯資料. 資料塊可作兩種應用
用作一般的資料儲存,可以進行讀、寫操作
用作資料值,可以進行初始化值、加值、減值、讀值操作
每個扇區的塊3為控制塊,包括了密碼A(6 byte)、存取控制(4 byte)、密碼B(6 byte)
每個扇區的密碼和存取控制都是獨立的, 可以根據實際需要設定各自的密碼及存取控制.
存取控制為4個位元組共32 位
扇區中的每個塊(包括資料塊和控制塊)的存取條件是由密碼和存取控制共同決定的
在存取控制中每個塊都有相應的三個控制位
三個控制位以正和反兩種形式存在于存取控制位元組中, 決定了該塊的通路權限(如進行減值操作必須驗證KEY A,進行加值操作必須驗證KEY B,等等)
實物圖及檢測輸出
接線圖
輸出格式
代碼說明
在Keil MDK5中可以直接打開項目運作, 需要有STM32F401CCUx的依賴庫
項目中使用USART1作為printf的輸出
為了在stm32f401中可以使用, 将USART1設定為PB6和PB7, 如果要調整, 需要修改main.c的UARTmain_Init()方法
SPI腳如果要調整, 需要修改rc522.c, PA5, PA6和PA7是datasheet中定義的SPI1
僅支援UID長度為4byte的M1卡
運作中會循環讀取靠近的射頻卡, 當讀取成功時
讀取前4個位元組, 作異或(^)校驗, 将結果與第5個位元組比較, 不相同則傳回錯誤
與預設的MyID作比較, 判斷是否相同并展示
循環依次将64個區塊讀出并展示
下載下傳
https://pan.baidu.com/s/1618xzotP3IG9aNII39CJ0g 提取碼: 4c8c
參考
rc522 https://thongrobot.wordpress.com/2017/07/22/stm32f407-rfid-project-full-code/
f4序列槽 https://stm32f4-discovery.net/2014/04/library-04-connect-stm32f429-discovery-to-computer-with-usart/
f4序列槽 javascript:void(0)