NFC的PN532 读写命令格式

PN532操作命令 PN532命令(S50)

说明:1、本文只针对pn532与S50卡的通信。

2、Pn532与PC通信方式为串口,波特率115200,数据位8,停止位1,奇偶校验none

3、除特别说明,所有发送和接收的信息都遵循普通帧格式

4、所有对EEPROM的操作必须首先经过身份验证

普通帧格式:(正常发送和接收的命令和数据遵循此格式)



ACK帧格式:



NACK帧格式:



扩展帧格式:



错误帧格式:(提示应用层错误,无法识别的命令或参数等错误)



命令集:

唤醒: 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 03 FD D4 14 01 17 00

解释:1、55 55 00 00 00 00 00 00 00 00 00 00 00 00唤醒命令比较特殊,仅有该命令有此部分,代表等待



2、命令 SAMConfiguration ,其中01表示配置为正常模式



例:返回信息00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00

解释:

1、 ACK

2、 D5 15表示正确执行并完毕



获取UID: 00 00 FF 04 FC D4 4A 01 00 E1 00



2、 各波特率的值

例:返回数据:00 00 FF 00 FF 00 00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 FB 0E E2 0B D8 00





身份校验: 00 00 FF LEN LCS D4 40 01 60 Addr FF FF FF FF FF FF UID DCS 00

例:输入命令:00 00 FF 0F F1 D4 40 01 60 07 FF FF FF FF FF FF FB 0E E2 0B 94 00





读操作: 00 00 FF 05 FB D4 40 01 30 Addr DCS 00

解释:

命令InDataExchange, 01表示目标卡数目,30表示读操作,Addr是要读取的block地址

例:输入命令:00 00 FF 05 FB D4 40 01 30 04 B7 00

解释:04表示要读取的block地址

返回信息:00 00 FF 00 FF 00 00 00 FF 13 ED D5 41 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FA 00

解释:00表示读取成功,后面的数据为读取的数据



写操作: 00 00 FF 15 EB D4 40 01 A0 Addr BlockData 4F 00

解释:

Addr为要写入的地址,BlockData为要写的数据。

例:输入命令:00 00 FF 15 EB D4 40 01 A0 04 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 37 00

解释:对sector2中的block1全写01

输出信息:00 00 FF 00 FF 00 00 00 FF 03 FD D5 41 00 EA 00

解释:00表示写入成功

输入命令:00 00 FF 05 FB D4 40 01 30 04 B7 00

解释:读该block的数据

输出信息:00 00 FF 00 FF 00 00 00 FF 13 ED D5 41 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 DA 00

解释:显然,读出的数据即写入的数据





增操作: 00 00 FF 09 F7 D4 40 01 C1 Addr 01 00 00 00 DCS 00



减操作: 00 00 FF 09 F7 D4 40 01 C0 Addr 01 00 00 00 DCS 00




传送操作: 00 00 FF 05 FB D4 40 01 B0 Addr DCS 00



存储操作: 00 00 FF 05 FB D4 40 01 C2 Addr DCS 00



关闭射频: 00 00 FF 04 FC D4 32 01 00 F9 00

解释:该命令为RFConfiguration,01表示RF field,00表示关闭射频

例:输入命令:00 00 FF 04 FC D4 32 01 00 F9 00

输出信息:00 00 FF 00 FF 00 00 00 FF 02 FE D5 33 F8 00

解释:D5 33表示执行完毕,RF Field关闭





一、M1卡命令解析 (1号M1卡)
密钥验证:按照块号来验证,同一个扇区内只要验证其中一块,就可以操作同一个扇区内的4个块了。
操作另一个扇区时,还要重新验证。
1、初始化PN532到normal状态
in: 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00
out:00 00 FF 00 FF 00
00 00 FF 02 FE D5 15 16 00

2、寻卡
in:00 00 ff 04 fc d4 4a 02 00 e0 00
析:4a //命令
02 //卡数量,0--2
00 //波特率 106K

out:00 00 FF 00 FF 00
00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 02 F5 13 BE 06 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、密钥验证
in: 00 00 fF 0F F1 D4 40 01 60 07 FF FF FF FF FF FF 02 F5 13 BE C2 00
析: 40 //命令
01 //卡1
60 //密钥验证命令
07 //块号
ff ff ff ff ff ff //密钥
02 f5 13 be //UID

OUT: 00 00 FF 00 FF 00
00 00 FF 03 FD D5 41 00 EA 00
析: 41 00 //正确状态

4、读卡 //07是控制字节
in: 00 00 ff 05 fb D4 40 01 30 07 B4 00 //读第7块
00 00 ff 05 fb D4 40 01 30 06 B5 00 //读第6块
00 00 ff 05 fb D4 40 01 30 08 B3 00 //读第8块
析: 40 //命令
01 //卡1
30 //读卡命令
07 //快号

out: 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块
out: 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 //正确

err: 00 00 FF 00 FF 00
00 00 FF 03 FD D5 41 13 D7 00
析: 41 03 //错误


5、写卡
in: 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字节数据
out: 00 00 00 FF 00 FF 00
00 00 FF 03 FD D5 41 00 EA 00


附件:
00 00 FF 00 FF 00
00 00 FF 0F F1 D5 4B 01 01
00 44 //44代表什么呢?
00 //不遵循ISO14443-4标准
07
04 8F D7 5A CF 20 80
60 00

二、P2P应用

1、初始化PN532到normal状态
in: 55 55 00 00 00 00 00 00 00 00 00 0

0 00 00 00 00 ff 03 fd d4 14 01 17 00
out:00 00 FF 00 FF 00
00 00 FF 02 FE D5 15 16 00

/************NFC initial****************/
1、扫描1个目标并初始化 212K
in: 00 00 ff 09 f7 D4 4A 01 02 00 FF FF 00 00 E1 00
out:00 00 FF 00 FF 00
00 00 FF 16 EA D5 4B 01 01 12 01 01 FE A2 A3 A4 A5 A6 A7 C0 C1 C2 C3 C4 C5 C6 C7 D5 00

2、激活1个target
in:00 00 ff 04 fc d4 50 01 00 db 00
out:00 00 FF 00 FF 00
00 00 FF 12 EE D5 51 00 AA 99 88 77 66 55 44 33 22 11 00 00 00 09 01 29 00 //正确响应

out:00 00 FF 00 FF 00
00 00 FF 03 FD D5 51 01 D9 00 //超时

3、选择一个target 设定两个设备之间的通信速率为106k
in:00 00 ff 05 fb d4 4e 01 00 00 dd 00
out:00 00 FF 00 FF 00
00 00 FF 03 FD D5 4F 00 DC 00 //正确

4、向target发送数据
in: 00 00 ff 13 ed d4 40 01 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 73 00
out:00 00 FF 06 FA D5 41 00 AA AA AA EC 00

5、释放target
in: 00 00 ff 03 fd d4 52 01 d9 00
out:00 00 FF 00 FF 00
00 00 FF 03 FD D5 53 00 D8 00 //成功释放




nfc target
1、将本设备初始化为target DEP,即从设备
in: 00 00 ff 27 d9 d4 8c 00 08 00 12 34 56 40 01 fe a2 a3 a4 a5 a6 a7 c0 c1 c2 c3 c4 c5 c6 c7 ff ff aa 99 88 77 66 55 44 33 22 11 00 00 21 00
out:00 00 FF 00 FF 00
00 00 FF 14 EC D5 8D 26 11 D4 00 01 FE A2 A3 A4 A5 A6 A7 00 00 00 00 00 00 B9 00 //DEP Felica


2、获得数据TgGetdata
in: 00 00 ff 02 fe d4 86 a6 00
out:00 00 FF 00 FF 00
00 00 FF 13 ED D5 87 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2C 00 00

3、发送数据TgSendData= AA AA AA
in: 00 00 ff 05 fB d4 8e AA AA AA A0 00
out:00 FF 00 FF 00
00 00 FF 03 FD D5 8F 00 9C 00 //发送成功


三、模拟ISO-14443 A 卡

1、初始化为TARGET,only iso14443-A 卡
in:00 00 ff 27 d9 d4 8c 04 08 00 12 34 56 60 01 fe a2 a3 a4 a5 a6 a7 c0 c1 c2 c3 c4 c5 c6 c7 ff ff aa 99 88 77 66 55 44 33 22 11 00 00 fd 00
out:

2、获得数据TgGetdata
in: 00 00 ff 02 fe d4 86 a6 00
out:


3、发送数据TgSendData= AA AA AA
in: 00 00 ff 04 fa d4 8e 90 00 0e 00
out:00 FF 00 FF 00
00 00 FF 03 FD D5 8F 00 9C 00 //发送成功


相关文档
最新文档