天天看點

STM32F401CCU6與MFRC522接線及讀取示例

硬體準備

stm32f401ccu6最小開發闆

rfid-rc522開發闆

usb2ttl轉接, 可以用pl2303, ch340, CP2102, FT232

Mifare 1K卡, UID長度4位元組的版本

軟體準備

Keil uVision5

putty, xshell等可以連接配接com口的終端

MFRC522 13.56MHZ射頻卡讀卡器

STM32F401CCU6與MFRC522接線及讀取示例

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,等等)

實物圖及檢測輸出

接線圖

STM32F401CCU6與MFRC522接線及讀取示例
STM32F401CCU6與MFRC522接線及讀取示例

輸出格式

STM32F401CCU6與MFRC522接線及讀取示例

代碼說明

在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)

繼續閱讀