一、串口命令操作 1、數據幀結構 使用串口命令操作時候,需要按照下面的幀格式進行數據傳輸,這是通信的基礎。
串口命令.jpg (103.12 KB, 下載次數: 104)
下載附件
2019-6-4 15:23 上傳
下面詳細解釋一下:
這種的數據結構只能有255 個data (包括TFI),還有幾種結構,這里先不說了。 2、讀寫示例分析
使用的是pn532為主控芯片的NFC串口模塊,來讀寫M1卡,注意下所有數字為16進制形式。用usb轉串口模塊將pn532與電腦連接,串口助手發送選擇hex。 波特率:默認 115200 ,數據位:8 ,校驗位:無 ,停止位:1, 流控:無。硬件連接正常后開始操作,詳細步驟分析如下: (1) 喚醒PN532: - PC->PN532: 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00
- PN532->PC: 00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00
復制代碼其實第一條不符合普通的發送格式,比較特殊。如果沒有正常返回,檢查硬件連接和波特率。 (2)獲取卡UID,也就是卡的唯一ID號 - PC->PN532: 00 00 FF 04 FC D4 4A 02 00 E0 00
復制代碼分析:
04 //代表有四個數據分別是 D4 4A 02 00;
FC //這是04的補碼 ;
4a //命令;
02 //卡數量,0--2;
00 //波特率 106K;
E0 //校驗位 D4+4A+02+00=0x0120 取后兩位20的補碼為E0。至于補碼怎么計算自己百度吧。 - PN532->PC: 00 00 FF 00 FF 00
- 00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 A1 9F F5 5E 3B 00
復制代碼分析:
00 00 FF 00 FF 00 //ACK;
00 00 FF 0C F4 D5 //PN532 到 MCU;
4B //響應命令;
01 //目標卡1;
01 //目標卡數量,最大為0x02,最小為0;
00 04 //atq;
08 //卡容量 08=1K;
04 //4個字節UID;
02 F5 13 BE //UID;
06 00 //DCS+POST;
到這一步總體來說還算順利,主要是因為可以發送完命令在再刷卡也行,也可以把卡一直放上。 (3)密鑰驗證,注意驗證完秘鑰,卡不能離開,需要一直放在上面,才能順利的完成下面讀寫操作,還有注意替換步驟(2)的UID,最后根據自己的UID計算校驗位即倒數第二位。 - PC->PN532: 00 00 fF 0F F1 D4 40 01 60 07 FF FF FF FF FF FFA1 9F F5 5E C2 00
復制代碼分析:
40 //命令;
01 //卡1;
60 //密鑰驗證命令;
07 //塊號;
ff ff ff ff ff ff //密鑰;
A1 9F F5 5E //UID 替換為步驟2得到的UID ;
C2 //檢驗位,根據替換的UID計算,計方法跟步驟(2)一樣。 - PN532->PC: 00 00 FF 00 FF 00
- 00 00 FF 03 FD D5 41 00 EA 00
復制代碼分析:
41 00 //正確狀態。
(4)開始讀卡,M1卡有16個扇區,每個扇區4個塊。 - PC->PN532: 00 00 ff 05 fb D4 40 01 30 07 B4 00 //讀第7塊
- PC->PN532: 00 00 ff 05 fb D4 40 01 30 06 B5 00 //讀第6塊
- PC->PN532: 00 00 ff 05 fb D4 40 01 30 08 B3 00 //讀第8塊
復制代碼分析:
40 //命令;
01 //卡1;
30 //讀卡命令;
07 //塊號。 - PN532->PC: 00 00 FF 00 FF 00 //ACK
- 00 00 FF 13 ED D5 41 00 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF 01 00 //7塊
- PN532->PC: 00 00 FF 00 FF 00 //ACK
- 00 00 FF 13 ED D5 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EA 00 //6塊
復制代碼分析:
41 00 //正確
錯誤會返回: 00 00 FF 00 FF 00
00 00 FF 03 FD D5 41 13 D7 00
41 03 //錯誤。 (5)寫卡 - PC->PN532: 00 00 ff 15 EB D4 40 01 A0 06 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F CD 00
復制代碼分析:
40 //命令;
01 //卡1;
A0 //寫卡命令;
06 //塊號;
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F //16字節數據;
CD//校驗和,如果更改其他的數需重新計算。 - PN532->PC: 00 00 00 FF 00 FF 00
- 00 00 FF 03 FD D5 41 00 EA 00
復制代碼分析:
41 00 //正確。 二、使用上位機方式進行操作 下面使用上位機軟件進行讀寫測試:我們使用一個USB轉串口模塊連接到PN532模塊。 PN532模塊:
模塊圖.jpg (197.47 KB, 下載次數: 105)
下載附件
2019-6-4 15:36 上傳
電路連接如下:
接線圖.png (95.52 KB, 下載次數: 115)
下載附件
2019-6-4 15:36 上傳
我們使用模塊的串口模式接口,因此在上面的配置模式中我們選的是HSU這個,即1、2兩個開關都在左邊(基于上圖)。 連接好以后,我們打開上位機軟件,如下圖:
上位機.png (4.42 KB, 下載次數: 110)
下載附件
2019-6-4 15:37 上傳
如果我們連接沒有問題,接口選擇也正確,就會顯示“發現NFC設備”標識,如果沒有連接好,則會出現“未發現NFC設備”。 上一步成功后,我們就可以操作PN532來進行讀寫其他NFC卡片設備了。 我們把門禁卡放在PN532模塊上方,如下圖所示:
讀卡.jpg (285.58 KB, 下載次數: 117)
下載附件
2019-6-4 15:38 上傳
然后點擊上位機中的【讀取卡:讀取卡片內容】,就可以讀取到卡片的內容了:
結果.png (16.88 KB, 下載次數: 121)
下載附件
2019-6-4 15:38 上傳
更多詳細資料可到零知實驗室官網免費領取。
|