首页 > 新闻资讯 > 新闻详情

PN532 NFC RFID模块引脚配置及使用说明详解

IC先生 IC先生 5019 2023-07-17 16:14:24

PN532是一个基于Arduino的简单NFC RFID模块,该模块因其功能而与其它RFIC模块和设备略有不同。PN532功能描述了通过NFC芯片实现的现代通信功能。单模块具有UART、SPI、I2C三种通信方式。

最常见的是,PN532设备与Arduino接口,因为它在Arduino IDE中有官方库。该模块用于执行多种功能,例如数据发送、RFIC卡和RFID读取器。该器件只能在5-7cm的近距离工作,但由于其功耗低且速度快,大多数移动公司开始将该模块集成到其设备中以实现多种功能。

PN532

引脚配置

PN532提供多种通讯方式。因此,它的引脚数量比其他RFID要多一些,但在电路中,一次只能使用一些引脚。引脚图显示了所有这些引脚:

引脚配置

引脚配置功能说明如下:

PIN 功能描述
VCC VCC为整个设备供电。
GND  GND引脚有助于与电源和Arduino/微控制器建立公共接地。
UART UART通信引脚。
TXD UART 通信需要两个通信引脚,第一个用于发送数据,第二个用于接收数据。TXD有助于传输数据。
RXD RXD引脚是UART通信的数据接收引脚。
I2C I2C通信引脚。
SDA I2C通信需要一个引脚来进行数据传输和接收。因此,PN532模块中SDA是I2C通信的数据引脚。
SCL SCL是I2C通信的时钟引脚。数据根据时钟脉冲在设备之间传输。
IRQ IRQ 引脚是一个中断引脚,有助于I2C通信产生中断以引起Arduino/微控制器的注意。
RST RST是复位引脚,有助于通过外部信号复位设备。在 PN532中,该设备用于I2C通信。
SPI SPI通信引脚。
MOSI SPI 通信需要4个引脚用于数据通信。因此,MOSI是一个Master Out Slave In引脚,它有助于将数据从Arduino传输到PN532。
MISO MISO是一个Master In Slave Out,它有助于将数据从PN532传输到Arduino。
SS SS为从机选择引脚;它激活从站(PN532)的SPI通信。
SCK 它是一个时钟引脚,有助于根据时钟脉冲收发数据。

功能

PN532设备的尺寸可能较小,但该设备的功能列表有很大不同,并且根据现代应用而定。PN532提供的功能大多仅在特定设备中可用,并且由于市场需求而日益增加。其功能特性包括:

  • 允许两个模块在特定距离内相互交换任何类型的数据。
  • 使用13.56MHz频率,由于范围小,可以合法使用。
  • PN532模块可用作NTAG/RFID卡标签和读取器。
  • 该器件可在3.3V的SPI电压和5V的其他通信电压下工作。
  • 板载开关有助于更改通信协议。
  • 一个芯片内有3种协议与之建立接口。
  • 该设备具有板载天线,尺寸较小,有助于将其固定在设备的任何位置,而不会占用太多空间。
  • 这支持Android手机的NFC。

使用方法

PN532最常见和官方的建议是将其与Arduino Broads一起使用。Arduino中对此模块进行了大量的工作和研究。首先将其与Arduino结合使用,了解模块应在何处与Arduino连接。PN532模块使用SPI、I2C和UART协议。首先,将其与外部模块的以下引脚连接。

对于Arduino UNO:

  • SPI
    • SS – D10
    • MOSI – D11
    • MISO – D12
    • SCK – D13
  • I2C
    • SCL – A5, D19
    • SDA – A4, D18
  • UART
    • RX – D0
    • TX – D1

另一个Arduino板的通信引脚有所不同,可在其官方网站上找到。这里一切都将根据Arduino UNO进行。将所有通信引脚与PN532连接后,它还有一个拨动开关。拨动开关模式一次激活单个协议。

开关1 开关2 协议
0 0 UART
1 1 SPI
1 0 I2C

PN532与Arduino连

以上所有讨论的说明和细节都是针对硬件方面的。要使PN532完全运行,请使用以下Arduino编程。

使用Arduino编程

在编程时,Arduino总是依赖PN532的库。该库允许开发人员根据电路板更改引脚。

#include <Adafruit_PN532.h>

协议

使用PN532库,Arduino将无法通信。要使用I2C和SPI协议,以下库将帮助设备进行通信。

#include <Wire.h> 
#include <SPI.h>

Wire库用于I2C通信。这两种协议几乎在每个板上都有固定引脚。要定义使用任何协议而不是硬件串行,以下对象将有所帮助:

Adafruit_PN532 nfc(PN532_SS);
Adafruit_PN532 NFC(PN532_IRQ,PN532_RESET);

如果使用默认值,SPI引脚将按原样使用PN532_SS,但对于I2C协议,请将PN532_IRQ和PN532_RESET替换为其数字PIN。有时,板卡可能会导致通信问题。因此,为了避免SPI通信中的问题,以下函数有助于定义引脚。

Adafruit_PN532 nfc(PN532_SCK、PN532_MISO、PN532_MOSI、PN532_SS);

PN532_SCK、PN532_MISO、PN532_MOSI和PN532_SS定义引脚编号顺序,应替换为新的PIN。上述所有讨论都是关于通过库选择协议,但PN532的激活和使用说明对于所有协议都是相同的。

数据通讯初始化

在PN532中编程的第一件事也是最重要的就是初始化PN532,不初始化有时IDE不会报错。那么开发人员就很难确定模块不工作的原因。

nfc.begin(); // 用于初始化PN532 
nfc.SAMConfig(); // 它将把卡设置为读卡器模式

通讯方式和所有协议仅用于初始化模块。为了传输和接收数据,一切都应该在编程中初始化。NFC 模块可以执行多种不同的方法。

使用Arduino的NFC RFID示例

这里将PN532定义为NTAGS的读取器。每张NTAGS卡都有一个可通过PN532查看和更改的代码。为此,需要对不同的功能进行编程。首先,将Arduino模块的引脚连接到I2C引脚D18和D19。之后,上传以下代码。

使用Arduino的NFC RFID电路

带有库的Arduino代码如下:

#include <Wire.h>
#include <Adafruit_PN532.h>
#define PN532_IRQ (2)
#define PN532_RESET (3)
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
void setup(void) {
Serial.begin(115200);
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); 
}
nfc.SAMConfig();
}
void loop(void) {
uint8_t success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
uint8_t uidLength;
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
if (success) {
Serial.println("Found an ISO14443A card");
Serial.print(" UID Length: "); Serial.print(uidLength, DEC); Serial.println(" bytes");
Serial.print(" UID Value: ");
nfc.PrintHex(uid, uidLength);
Serial.println("");
if (uidLength == 7){
uint8_t data[32];
Serial.println("Seems to be an NTAG2xx tag (7 byte UID)");
for (uint8_t i = 0; i < 42; i++){
success = nfc.ntag2xx_ReadPage(i, data);
Serial.print("PAGE ");
if (i < 10){
Serial.print("0");
Serial.print(i);
}
else{
Serial.print(i);
}
Serial.print(": ");
if (success){
nfc.PrintHexChar(data, 4);
}
else{
Serial.println("Unable to read the requested page!");
}}}
else
{
Serial.println("This doesn't seem to be an NTAG203 tag (UUID length != 7 bytes)!");
}
Serial.println("\n\nSend a character to scan another tag!");
Serial.flush();
while (!Serial.available());
while (Serial.available()) {
Serial.read();
}
Serial.flush();
}
}

上传代码之后,现在将卡放在模块附近。串行监视器将能够显示卡代码。NTAGS卡可用于任何行业的安全目的。上述代码仅有助于读取卡代码,但卡可以通过 PN532 通过不同的编程进行编程。NTAGS的安全性在每个版本中都略有不同。每个模块都有不同的安全位,但所有这些都可与PN532一起使用。大多数NTAGS可与NTAG203、NTAG213、NTAG215和NTAG2016配合使用。

封装设计参数

封装设计参数

总结

PN532是一款由NXP Semiconductors开发的NFC(近场通讯)控制器芯片,它能在各种应用和设备中实现NFC通讯。其主要功能特点包括:

  • 支持多种NFC通信协议,包括ISO/IEC 14443 Type A和B、FeliCa以及ISO/IEC 18092(NFCIP-1)。
  • 常用于非接触式支付系统、门禁控制、身份识别、数据交换以及其他NFC相关应用。
  • 允许设备在近距离(通常几厘米内)进行数据交换。这种技术通常用于非接触式支付系统、公共交通卡以及需要安全便捷数据交换的应用。
  • PN532与多种微控制器和系统兼容,因此在将NFC功能集成到各种设备中时成为热门选择。
  • 支持点对点通讯,使设备能够直接交换数据,无需专用NFC读卡器。
  • 广泛应用于各种NFC读卡器、NFC启用的智能手机以及其他与NFC相关的设备。
  • 包含安全功能,确保通讯的安全性,包括加密和认证协议,以防止未经授权的对敏感数据的访问。

不难看出,PN532在推动NFC技术的应用方面发挥了重要作用,并已成为许多NFC启用设备和应用中的标准组件。它提供了一种可靠、方便的无线通讯方式,为不同行业的多种用例提供了可能性。

推荐商品
CC0805KRX7R9BB222
库存:0
¥ 0.02355
JMK316AB7226KLHT
库存:6000
¥ 0.26717
C2012X5R1C106KT000N
库存:0
¥ 0.5352
C2012X5R1E105K125AA
库存:0
¥ 0.04696
CL03A225MQ3CRNC
库存:0
¥ 0.01066
版权声明: 部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者及时联系本站,我们会尽快处理。
标题:

PN532 NFC RFID模块引脚配置及使用说明详解


网址: https://www.mrchip.cn/newsDetail/3993
文章标签: 芯片
0 购物车
0 消息