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