硬體介紹
- 本RFID模組採用MFRC522晶片,支援SPI、UART和I2C三種通訊模式。
- 可讀取卡片類型有:mifare1 S50、mifare1 S70、mifare UltraLight、mifare Pro、mifare Desfire。
- 此模組電源電壓可支援5V及3.3V兩種。
通訊模式設置
通訊模式
|
指撥開關 1
|
指撥開關 2
|
SPI
(目前僅找到支援SPI通訊的函式庫)
|
NO
|
OFF
|
UART
|
OFF
|
NO
|
I2C
|
NO
|
特殊:選擇I2C位址
|
SPI通訊硬體接線
RFID模組
|
Arduino UNO
|
GND
|
GND
|
VIN
|
5V
|
SS
|
10
|
SCK
|
13
|
MISI(錯誤,應為MOSI)
|
11
|
MISO
|
12
|
3V3
|
不用接
|
RST
|
5
|
下載附件,解壓縮至Arduino安裝路徑(或使用者資料夾)下的/libraries
目前這個函式庫可以使用在Uno中,可能無法使用在Due中。
範例
Arduino IDE中,File>Examples>MFRC522>Examples>Read_RFID_Card
1. 引入函式庫 #include <MFRC522.h> 2. 宣告MRFC522變數(建構MFRC522實體) - MFRC522 rfid(PinSS, PinRST); 3. 呼叫初始化函式init() - rfid.Init() 4. 搜尋RFID卡片,Request() 5. 讀取卡號,Anticoll() 6. 命令RFID卡片進入睡眠模式,Halt()
函式說明
MFRC522(int PinSS, int PinRST) (ps.建構子如回傳值)
- PinSS:SlaveSelect的引腳,SPI通訊時會將此引腳拉低,表示通訊對象為此裝置。實體接線就是模組上標示SS的接腳。
- PinRST:Reset,重置
unsigned char MFRC522::Request(uchar reqMode, uchar *TagType)
- regMode:搜尋模式,定義在MFRC522.h中
- TagType:返回卡片型態代碼,存入TagType所指向的記憶體位址中,通常宣告一個字串變數來儲存傳回值。
- 返回值:MI_OK表示成功
uchar MFRC522::Anticoll(uchar *serNum)
- serNum:回傳4 bytes卡號存入SerNum中,一般宣告一個char[]來儲放。
MFRC522函式庫解析
底層SPI讀寫通訊函式
- uchar Read_MFRC522(uchar addr)
- void Write_MFRC522(uchar addr, uchar val)
這兩個函式使用SPI.transfer()將資料傳送到晶片外部引腳
基本功能函式:
- ClearBitMask()-清除(為0)暫存器之指定位元
- SetBitMask()-設定(為1)暫存器之指定位元
ClearBitMask(uchar reg, uchar mask)
按mask中指定為'1'的位元,將reg中的相應位元清除為'0' (其他位元保持不變)
SetBitMask(uchar reg, uchar mask)
按mask中指定為'1'的位元,將reg中的相應位元設定為'1' (其他位元保持不變)
範例:欲將CommIrqReg的bit7清除為'0',其餘位元保持原先狀態。
程式碼:
ClearBitMask(CommIrqReg, 0x80);
功能說明:將Set1設定為'0',以清除bit[6..0]中標示為'1'的中斷旗標。
範例:欲將BitFramingReg的bit7設定為'1',其餘位元保持原先狀態。
程式碼:
SetBitMask(BitFramingReg, 0x80);
功能說明:將StartSend設定為'1'會驅使MFRC522晶片開始執行Transceive命令
程式設計會直接運用到的函示:
- uchar MFRC522_Request(uchar reqMode, uchar *TagType)
- uchar MFRC522_Anticoll(uchar *serNum)
- void MFRC522_Halt(void)
|
沒有留言:
張貼留言