PN532教程


熱烈歡迎,請直接點擊!!!

進入博主App Store主頁,下載使用各個作品!!!

注:博主將堅持每月上線一個新app!!

1、PN532數據包格式:

(1)正常數據包:
00 00 FF LEN LCS TFI PD0 PD1 PDn DCS 00
                       
  • 00 :序列頭
  • 00 FF :起始號
  • LEN :數據包長度,包含TFI
  • LCS :數據長度校驗和,LEN+LCS = 0
  • TFI :命令
  • PD0…PDn:數據
  • DCS :數據校驗和,TFI+PD0+…+PDn = 0
  • 00 :序列結尾
(2)應答包:
00 00 FF 00 FF 00
           
  • 00 FF :應答包
(3)非應答包:
00 00 FF FF 00 00
           
  • FF 00 :沒有應答
(4)加長數據包:
00 00 FF FF FF LENM LENL LCS TFI PD0 PD1 PDn DCS 00
                             

在正常情況下,只能發送256個字節的數據,PN532提供一種特殊的格式可以發送更多的數據;
– FF :正常模式下時為包的長度,特殊時為FF
– FF :正常模式下為數據長度校驗和,特殊為FF
– LENm,LENl:數據包長度的高位和低位,包括TFI

2、PN532操作

下面以操作m1-s50卡為例

(1)喚醒:

發送:55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00
應答: 00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00

(2)尋卡:
  • 發送:00 00 FF 04 FC D4 4A 02 00 E0 00
  • 應答:00 00 FF 00 FF 00
    00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 90 1F 2A A4 51 00

這里 90 1F 2A A4 為 UID號;

(3)驗證:
  • 發送:00 00 FF 0F F1 D4 40 01 60 07 FF FF FF FF FF FF 90 1F 2A A4 0D 00
  • 應答:00 00 FF 00 FF 00
    00 00 FF 03 FD D5 41 00 EA 00

驗證的是07這個塊,41 00 為正確

(4)讀寫:

注:讀寫操作時卡在驗證后不能拿開

a、讀第7塊的數據:
  • 發送:00 00 FF 05 fb D4 40 01 30 07 B4 00
  • 應答:00 00 FF 00 FF 00
    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

41 00 表示正確,00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF為第7塊的數據;

b、寫第6塊:
  • 發送: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
  • 應答:00 00 FF 00 FF 00
    00 00 FF 03 FD D5 41 00 EA 00

再讀取第6塊數據會讀到寫入的數據。


幀(frame)的結構:

1、PREAMBLE | 1 byte:所謂的幀頭,也稱為前導碼,一般是00

2、START CODE | 2 bytes (0x00 and 0xFF):起始碼 2個字節,分別是 00和FF 

3、LEN | 1 byte indicating the number of bytes in the data field (TFI and PD0 to PDn):數據長度,一個TFI和n個PD

4、LCS | 1 Packet Length Checksum LCS byte that satisfies the relation: Lower byte of [LEN + LCS] = 0x00:是LEN的補碼,也就是(LEN取反+1)

5、TFI 1 byte frame identifier, the value of this byte depends on the way of the message

- D4h in case of a frame from the host controller to the PN532,
- D5h in case of a frame from the PN532 to the host controller.

表示數據流向 。

D4h:在從主機控制器到 PN532 的幀的情況下,表示數據發向PN532。
D5h:在從 PN532 到主機控制器的幀的情況下,表示PN532數據發出。

6、DATA | LEN-1 bytes of Packet Data Information The first byte PD0 is the Command Code:要發的數據,DATA的第一個字節PD0為控制字符,其余為普通數據。該包長度為 LEN-1。

7、DCS | 1 Data Checksum DCS byte that satisfies the relation: Lower byte of [TFI + PD0 + PD1 + … + PDn + DCS] = 0x00,

DCS其實就是把這些十六進制數加起來,后兩位取補碼即可。即(TFI + PD0 + PD1 + … + PDn)累加和,取后兩位的補碼。
8、POSTAMBLE | 1 byte:幀尾 一般為 00

The amount of data that can be exchanged using this frame structure is limited to 255 bytes (including TFI).

使用這種幀結構可以交換的數據量限制為 255 字節(包括 TFI)。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM