问题标签 [pn532]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nfc - 发送 GetInitiatorCommand (0x88) 指令时来自 PN532 NFC 板的 CRC 错误
我正在使用 Adafruit PN532 分线板来模拟 NTAG213 ISO/IEC 14443-2 标签。我已将板配置为使用 TgInitAsTarget 进行仿真,如下所示:
[ 0x8C, 0x01, 0x44, 0x00, 0x7B, 0x58, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00 , 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00];
作为回应,我收到了对原创签名的 ReadSig 请求:
[0x8D,0x00,0x3C]
这确认与发起者的通信正在工作。我通过返回部分显示的原创性签名成功地处理了请求,并且由于显而易见的原因在这里被遮盖了:
[ 0x90, 0x??, 0x??, 0x??, ... ]
我得到了积极的回应:
[0x91,0x00]
然后,我以 100 毫秒的间隔重复发送明确的 GetInitiatorCommand 指令(我尝试了长达 250 毫秒但没有运气),以便从发起者那里检索下一个命令:
[0x88]
PN532 以 CRC 错误响应每一个:
[0x89,0x02]
当我发送它们时,我使用相同的算法来计算所有这些命令的校验和,所以我不认为我的 CRC 实际上是错误的,但要明确的是,发送到 PN532 的完整数据帧是:
[0x00、0x00、0xFF、0x02、0xFE、0xD4、0x88、0xA4、0x00]
当我手动运行计算时,这似乎对长度和数据都有正确的 CRC。
顺便说一句,如果我使用完全不同的设备作为启动器,它的行为类似 - 尽管最初使用读取命令 (0x30) 响应 - 这表明问题出在我的尽头。
CRC错误是否可能适用于其他东西,可能是PN532和发起者之间的数据包?我是否以错误的顺序提交指令?我承认我不完全理解 TgInitAsTarget 数据集中所有选项的含义,这些选项是从另一个已知的好应用程序复制的,也许我的 PN532 仿真器设置不正确?显然我做错了什么。
关于我做错了什么或如何诊断根本原因的任何提示?
python - 从连接到 Raspberry Pi 的 PN532 模块(UART 模式)读取 Python 中的 NDEF 消息时出现问题
我有一个通过 UART 连接到 Raspberry Pi 3B 的 PN532。在 Python 脚本(V3.7.4)中,我激活阅读器并从标签中读取数据。如果有 NDEF 消息,我会读取标签的数据并在字典中返回 NDEF 记录。所有这些都基于 nfcpy 和 ndeflib 库。
问题是,检查 NDEF 消息的标签似乎无法正常工作。使用 Android App NFC Tools Pro 模拟标签时,可以读取 NDEF 消息。使用各种其他应用程序,无法读取 NDEF 消息。当我使用 NFC 工具 Pro 对真实标签或卡片进行编程时,也找不到 NDEF 消息。使用其他应用程序或带有 USB NFC 阅读器的标签或使用手机扫描标签,可以找到并读取 NDEF 数据。
所以由于某种原因 if 的结果tag.ndef:
并不总是返回 true,即使它应该返回它。
这是使用 Pi 上的 PN532 从 Android App NFC 工具 Pro 读取数据的结果: 单击此处
我用与应用程序发送的相同数据对芯片进行了编程。编程也使用 NFC 工具 Pro 完成。这是用NFC工具Pro读取芯片的结果: 点这里
这是我在 Pi 上使用 PN532 读取上述编程芯片时的结果: 单击此处
知道这里出了什么问题吗?
提前感谢您的任何帮助。
python - 在 GPIO 中断上写入/读取 SPI 失败并出现 OSError:[Errno 9] 文件描述符错误
我在我的 Raspberry Pi 上运行一个带有中断引脚的 NFC 阅读器,我编写了一个脚本来让它运行。到目前为止,它工作得很好,但在某些情况下,SPI xfer 崩溃并出现OSError: [Errno 9] Bad file descriptor
当我收到 GPIO 引脚的中断时,整个 SPI 部分都会发生 - 这可能是个问题吗?我知道代码不应该在中断上做太多事情,这可能会导致崩溃。
在这里分享的代码有点多,但我正在使用带有 Adafruit 库的 PN532 芯片https://github.com/adafruit/Adafruit_Python_PN532 - 我知道它已被弃用,但与 C 实现的差异非常小。我正在运行pn532.read_passive_target(timeout=0.2)
从该 NFC 芯片读取 UID 并使其扫描 NFC 卡。
它工作得很好,直到我经常这样做。为了测试,我一次又一次地将卡片放在阅读器上,没有任何延迟。大约5-10次后它崩溃了。
任何想法如何解决这个问题?很抱歉对错误的错误描述。
arduino - arduino yun 和 rfid shield 兼容性
我和这个板子一起买了一个 arduino yun
https://wiki.keyestudio.com/Ks0259_keyestudio_PN532_NFC/RFID_Controller_Shield
阅读一些帖子,由于引脚排列,它们似乎不兼容(uno没问题!),
我对电子产品的经验很少,但如果有办法让它在不连接电缆的情况下工作,我会徘徊吗?
arduino - PN532 V3 + Arduino UNO + libnfc 错误(错误:无法打开 NFC 设备:pn532_uart:/dev/ttyUSB0:115200)
我正在尝试将 PN532 (v3) 板与 Arduino UNO 和 libnfc 一起用于我的大学项目。我偶然发现的一个问题是,当我调用 nfc-list 时,libnfc-1.7.1 给了我以下错误:
我在 Arduino 上使用阅读器没有任何问题,我可以上传草图,阅读器与标签进行交互。阅读器处于 SPI 模式,当我调用 nfc-list 时,LED 会闪烁,因此我唯一能想到的就是 libnfc 的某种问题。
我希望有人可以提供帮助,任何建议都会很棒!:) 谢谢!
连接
文件配置
/etc/nfc/libnfc.conf
uartnfc.info
使用的资源
http://nfc-tools.org/index.php/Libnfc:Arduino - 用于安装 libnfc
https://github.com/gunmetal313/mfocuino - 上传草图uartnfc.ino并导入库(mfocuino/mfocuino-read -only/nfcreader/arduino/libraries/PN532/ ) 进入 Arduino IDE。
我已经尝试解决问题的事情
为什么使用 libnfc 和 PN532 SHIELD PN532“找不到 NFC 设备”
无法打开 NFC 设备
https://github.com/nfc-tools/libnfc/issues/507
https://forums.adafruit.com/viewtopic.php?f =19&t=58188
https://superuser.com/questions/1409108/nfc-unable-to-open-nfc-device
raspberry-pi - 使用 PN532 和 Raspberry Pi 检测徽章的问题
我一直在尝试使用从亚马逊购买的 PN532 模块检测标签:
https://www.amazon.ca/ASHATA-Controller-Raspberry-Interface-Switching/dp/B07XFNDHNS
我按照这里的教程:
http://wiki.sunfounder.cc/index.php?title=PN532_NFC_Module_for_Raspberry_Pi
我尝试同时使用 I2C 或 SPI,但是当我运行 nfc-poll 时,这两个结果都给了我以下信息:
看起来 PN532 已正确连接到 Pi,但未检测到标签或打印任何信息。我开始怀疑问题是否出在 PN352 设备本身。也许我有一个错误的?
谢谢
java - 来自带有 Jewel/Topaz512 NFC 标签的 ACR122U 阅读器的“超时,目标尚未回答”
我正在构建一个 Windows/Java 程序(使用javax.smartcardio
)以使用 ACR122U 设备(内部带有 PN532 NFC 控制器芯片)与 Jewel/Topaz512 标签(来自 Innovision/Broadcom)进行通信。
我实现了 Topaz512 协议(来自此数据表),但我的命令只有一半有效。
- 一些有效的命令:
RID, RALL, READ, WRITE-NE, RSEG
- 一些不起作用的命令:
WRITE-E, READ8, WRITE-E8, WRITE-NE8
使用 WRITE-NO-ERASE 命令的示例
例如,这是我发送 WRITE-NO-ERASE 命令时得到的结果:
命令:FF:00:00:00:0C:D4:40:01:1A:7F:42:38:01:9A:00:17:E8
在哪里:
D4:40:01
是 InDataExchange 命令,1A:7F:42
是 WRITE-NO-ERASE 命令(值:0x42,块 0x0F,字节 7),38:01:9A:00
是 4 字节的标签 UID,17:E8
是CRC。
回复:D5:41:00:42:90:00
这里的回答是正确的:0x42
。状态字节 ( 0x00
) 通知一切顺利。
使用 WRITE-WITH-ERASE 命令的示例
这是我发送 WRITE-WITH-ERASE 命令时得到的结果:
命令:FF:00:00:00:0C:D4:40:01:53:7F:42:38:01:9A:00:28:6E
在哪里:
D4:40:01
是 InDataExchange 命令,53:7F:42
是 WRITE-WITH-ERASE 命令(值:0x42,块 0x0F,字节 7),38:01:9A:00
是 4 字节的标签 UID,28:6E
是CRC。
回复:D5:41:01:90:00
这里,状态字节 ( 0x01
) 通知 PN532 检测到超时。(来自PN532 文档(p67):“超时,目标未回答 - 0x01”)
此外,当我删除 PN532 超时(使用FF:00:00:00:06:D4:32:02:00:00:00
)时,非工作命令不响应D5:41:01:90:00
,但等待更长时间,然后我没有得到响应。
编辑 2020-04-20
我只是尝试使用 gscriptor(来自pcsc-tools套件)执行命令,我得到了相同的行为。这是我的结果:
剧本:
结果:
c - Elechouse PN532 模拟卡时返回超时
我想将 Elechouse PN532 NFC 模块 V3 模拟为 ISO/IEC 1443-4A 卡。我使用 Arduino Uno 作为开发板。我还从Github下载了他们的库并运行了一些示例来检查 NFC 模块是否工作正常(ISO 卡读取)。检查模块后,我熟悉了 PN532 应用笔记,如何模拟 ISO/IEC 1443-4A 卡。所以,我使用tgInitAsTarget()函数来设置参数和 UID。但是这个函数返回超时错误。启用调试后,我得到以下输出:
我的 Arduino 划痕:
如果我没有向tgInitAsTarget()传递任何参数,它就会卡在readResponse()函数中。
有什么想法吗?
1)PN532 模块正在工作 - 因为我能够获得固件版本(在这个例子中也是如此)或做其他事情。
2) 在终端输出的最后一行是tgInitAsTarget()函数的写入帧。但在第 57 页的应用说明中给出了所有参数。它们与那些在库函数中的不同。我尝试粘贴此应用笔记中的参数,但并没有解决问题
3)在我看来,问题是 MCU 向 PN532 芯片发送数据(写入帧)后,无法读取 RDY 寄存器- 或 PN532 收到此命令时未将其设置为 1。这就是为什么它停留在readResponse()函数上的原因
PC - 根据参考手册,RDY 寄存器是特定寄存器“它允许主机控制器知道 PN532 是否准备好接收或发送回数据”。