NFC近场通信PN532完全开发

1. 简介

PN532是一个多功能的NFC(近场通信)RFID模块,具有多种工作模式和通信接口,广泛应用于各种非接触式通讯场合。该模块基于80C51微控制器内核,支持13.56MHz频率下的非接触通讯,并具备多种工作模式和主机接口,以满足不同应用场景的需求。
PN532支持包括SPI、I2C和UART在内的多种通信接口,可灵活地与各种主控设备连接和通信。
PN532支持包括读写器模式、卡模拟模式和点对点模式在内的多种工作模式。在读写器模式下,可以读取和写入符合ISO/IEC 14443 Type A和Type B标准的标签。
本文介绍PN532的UART开发及TYPEA和TYPEB的开发。

2. 原理图

原理图如下:

在这里插入图片描述

这里只使用HSU_TX和HSU_RX作为通讯接口,需要将IO_1和IO_0下拉到GND进行配置。其余接口都可以悬空。

3. 器件介绍

首先看一下描述:点击下载手册合集

在这里插入图片描述

PN532通信频率13.56MHz,使用晶振27.12MHz,内核80C51,支持
ISO 14443A/ISO 14443B,可以读取常用的大白卡、水滴卡,二代证的UID也是可以读取的。

工作电压:

在这里插入图片描述
在这里插入图片描述

发射部分:发射后绕几圈回到GND

在这里插入图片描述

4. 数据交互

4.1 通用信息帧

主机控制器向PN532发出的命令,以及从PN532向主机控制器对这些命令的响应,框架的结构如下:
在这里插入图片描述
在这里插入图片描述

说明:
以 00 00 FF 04 FC D4 4A 01 00 E1 00 为例;

00 00 FF, 这三位为固定的开头;
04,数据长度,超过8位则分为高8位和低8位,其中包括帧识别码D4,即 D4 4A 01 00 四个字节的长度;
FC,报文数据校验位,FC = 100-04,如果长度是114,则使用200-114,校验位即为EC;
D4 4A,D4帧识别码,4A即命令代码;
** 01 00**,数据位;
E2,数据校验码,使用超过(TFI+DATA0+DATA1+…+DATAX)之和的整数(0x100、0x200…)减(TFI+DATA0+DATA1+…+DATAX)之和得到,即(D4+4A+01+00)= 11F,则0x200-0x11F=0xE1;
00,数据结束标志。

4.2 ACK回复/确认信息帧

主机控制器回复PN532,以及PN532回复主机控制器命令的响应,框架的结构如下:
在这里插入图片描述
主机向PN532发送数据后,接收到该指令,说明发送的数据PN532已经接收,ACK指令后会有PN532返回的通用信息帧。

以寄存器读取指令为例:
主机发送: 00 00 FF 08 F8 D4 06 63 38 63 3C 63 3D 4C 00
以上为读取相应寄存器地址上的值,地址分别为0x6338,0x633C,0x633D
从机接收后返回:00 00 FF 00 FF 00 00 00 FF 05 FB D5 07 00 00 00 24 00
00 00 FF 00 FF 00 为ACK报文;
00 00 FF 为通用报文数据头;
D5 数据长度5;
00 00 00 为读取到的寄存器数据;

4.3 错误帧

固定的错误帧格式如下:

在这里插入图片描述

4.4 指令

指令位,即TFI。

在这里插入图片描述

指令名称及数据位:

在这里插入图片描述

在这里插入图片描述

4.4.1 测试指令及返回

在这里插入图片描述

4.4.2 版本号读取指令及返回

各数据位说明如下:
在这里插入图片描述

读取固件版本号:
55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 02 FE D4 02 2A 00
PN532返回:
00 00 FF 00 FF 00 00 00 FF 06 FA D5 03 32 01 06 07 E8 00

4.4.3 读寄存器

读寄存器指令结构如下:
在这里插入图片描述
说明:
主机发送: 00 00 FF 08 F8 D4 06 63 38 63 3C 63 3D 4C 00
以上为读取相应寄存器地址上的值,地址分别为0x6338,0x633C,0x633D
D4 帧识别码,06命令代码,ADR1H,ADR1L,第一个地址高8位和低8位;
从机接收后返回:00 00 FF 00 FF 00 00 00 FF 05 FB D5 07 00 00 00 24 00
00 00 FF 00 FF 00 为ACK报文;
00 00 FF 为通用报文数据头;
D5 数据长度5;
00 00 00 为读取到的寄存器数据;

4.4.4 写寄存器

写寄存器指令结构如下:
在这里插入图片描述
说明:
主机发送:
00 00 FF 05 FB D4 08 63 3C 00 85 00
从机返回:
00 00 FF 00 FF 00 00 00 FF 02 FE D5 09 22 00
即:0x633C地址被写入0x00;

5. 读卡操作

5.1 寄存器地址介绍

以下是寄存器地址及其描述:

在这里插入图片描述

在这里插入图片描述

5.2 读TypeA卡UID操作

唤醒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返回:00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00

读取卡TypeA卡ID:00 00 FF 04 FC D4 4A 01 00 E1 00

若没有放置卡,返回:00 00 FF 00 FF 00
已放置卡,返回:00 00 FF 00 FF 00 00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 A3 3C 14 2B B0 00

5.3 读TypeB卡UID操作(二代证)

唤醒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返回:00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00

设置参数:00 00 FF 03 FD D4 12 14 06 00
返回:00 00 FF 00 FF 00 00 00 FF 02 FE D5 13 18 00

设置寄存器:00 00 FF 0C F4 D4 06 63 02 63 03 63 0D 63 38 63 3D B0 00
返回:00 00 FF 00 FF 00 00 00 FF 07 F9 D5 07 80 80 00 01 00 23 00

写寄存器:00 00 FF 08 F8 D4 08 63 02 80 63 03 80 59 00
返回:00 00 FF 00 FF 00 00 00 FF 02 FE D5 09 22 00

RF设置: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

RF设置:00 00 FF 04 FC D4 32 01 01 F8 00
返回:00 00 FF 00 FF 00 00 00 FF 02 FE D5 33 F8 00

RF设置:00 00 FF 06 FA D4 32 05 FF FF FF F8 00
返回:00 00 FF 06 FA D4 32 05 FF FF FF F8 00

写寄存器:00 00 FF 29 D7 D4 08 63 01 FF 63 02 03 63 03 03 63 05 00 63 08 4D 63 09 4D 63 0D 10 63 0E 03 63 14 68 63 17 FF 63 18 3F 63 19 18 63 3C 10 CE 00
返回:00 00 FF 00 FF 00 00 00 FF 02 FE D5 09 22 00

以下TypeB卡校验:
主机发送REQB:00 00 FF 07 F9 D4 42 05 00 00 71 FF 75 00
二代证收到后会发送12位ATQB应答xxxxxxxxxxx;
主机发送非标Attrib命令:00 00 FF 0D F3 D4 42 1D 00 00 00 00 00 08 01 08 F3 10 B9 00
二代证返回应答xxxxxxxxxx;
主机发送读取UID命令:00 00 FF 09 F7 D4 42 00 36 00 00 08 57 44 11 00
二代证应答,应答数据总长度28位,其中从第14位开始的8位数据位UID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuDvei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值