一、串口命令操作 1、数据帧结构 使用串口命令操作时候,需要按照下面的帧格式进行数据传输,这是通信的基础。 下面详细解释一下:
这种的数据结构只能有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模块: 电路连接如下: 我们使用模块的串口模式接口,因此在上面的配置模式中我们选的是HSU这个,即1、2两个开关都在左边(基于上图)。 连接号以后,我们打开上位机软件,如下图: 如果我们连接没有问题,接口选择也正确,就会显示“发现NFC设备”标识,如果没有连接好,则会出现“未发现NFC设备”。 上一步成功后,我们就可以操作PN532来进行读写其他NFC卡片设备了。 我们把门禁卡放在PN532模块上方,如下图所示: 然后点击上位机中的【读取卡:读取卡片内容】,就可以读取到卡片的内容了:
|