This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TRF7970A:使用 ISO 14443A 协议读取标签 UID 的正确命令序列

Guru**** 2928980 points

Other Parts Discussed in Thread: TRF7970A, MSP430F2370

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1645638/trf7970a-correct-command-sequence-to-read-tag-uid-using-iso-14443a-protocol

器件型号: TRF7970A
主题: MSP430F2370 中讨论的其他器件

  • 读者 IC: TI TRF7970A
  • 平台: DLP‑RFID2 (USB 主机接口+ TRF7970A)
  • 主机命令是使用 DLP‑RFID2 组帧而不是原始 SPI 发送的
  • 已测试标签:
    • ISO 15693 →正常工作
    • ISO 14443A (MIKROE‑1475) 响应

当我使用 ISO 15693 协议测试 ISO 15693 标签类型时、TRF7970A 成功地使用标签 UID 进行了响应。 仅当我尝试使用 ISO 14443A 时才会出现此问题。 有人可以帮助我确认我是否使用了正确的命令序列来读取 ISO 14443A 标签?  

以下命令序列位于 DLP-RFID2 组帧中、但粗体文本将是实际的 TRF 有效载荷。 我注意到、它与 MSP430F2370 中使用的组帧相同 (TRF7970A 参考固件说明表 4):

-->0108000304FF0000:ping

<- TRF7970A EVM

-->01080003042B0000:启用外部天线

<- 0d 0A(十六进制响应)

--> 010C00030410002201080000:通过将 0x22 写入 0x00(强制射频输出激活)设置为 ISO 14443A 模式、0x08 至 0x01(无 CRC、设置为 ISO/IEC 14443A RX 比特率、106kbps)

<-寄存器写入请求  

-->0108000304A00000:ISO14443A REQA 命令

<- 1443A REQA

-->0109000304120C0000 :读取 IRQ 状态寄存器 (0x0C)

<-[00]

-->0109000304121C0000:读取 FIFO 状态寄存器 (0x1C)

<-[00]

-->0109000304121F0000:读取 FIFO I/O 寄存器 (0x1F)

<-[00]


我永远不能从 REQA 命令或 FIFO 寄存器将标签 UID 读取为响应。 我还尝试了以下此论坛中的命令序列: TRF7970A:用于读取/写入 ISO14443A 标签的正确命令序列 — 其他无线技术论坛-其他无线 — TI E2E 支持论坛、 但括号中从来没有 UID。 请参阅前面链接的论坛中的以下内容:
>[142093] 01080003042B0000  
>[142131] 010A0003041001210000
<[142181] 14443A REQA。
>[142182] 010C00030410002101090000
>[142232] 0109000304A0010000
<[142282][04152FB6422B1491EC、7F]//获得 UID


 如果我尝试在 0109000304A0010000 之后发送任何其他命令、则模块永远不会再次响应。 我怀疑这可能是卡住等待接收的东西从标签,但我也不知道这一点,以及如何检查. 我通常会重新启动系统并重试。

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Samantha:

    我希望一切顺利、并对拖延表示歉意。 请注意、此设备的支持有限、但我会尽力回答您的问题:

    查看命令序列与工作论坛示例相比、有几个问题需要解决。

    已发现问题

    1. A0 命令参数错误
    您的序列使用 A0 00、论坛的工作序列使用 A0 01:
    您的:0109000304 A0 00 0000←仅 REQA、无防撞
    论坛:0109000304 A0 01 0000←完整 REQA +抗逆循环

    参数 01 告知 DLP-RFID2 固件运行完整的防冲突序列并返回 UID。 参数
    00 可能只是触发 REQA 并让固件等待您手动驱动防冲突—这是
    解释模块在之后出现“卡住“的原因。

    2.错误的寄存器值 (0x22 和 0x08 与 0x21 和 0x09)

    寄存器 您的价值 论坛工作值
    0x00 芯片状态 0x22 0x21
    0x01 ISO 控制 0x08 0x09

    -芯片状态 0x22 与 0x21:寄存器 0x00 的位 1 选择 AM 与 PM 输出驱动。 0x22(设置位 1)启用 AM 模式;0x21
    (设置位 0)是无源 ISO 14443A 标签的正确模式。 这可能是您的 IRQ 状态返回[00]的原因—
    射频输出调制不正确、因此标签永远不会唤醒。
    - ISO 控制 0x09 与 0x08:寄存器 0x01 的 0 位用于启用所需的单槽/防冲突子模式
    14443A REQA 至工作端到端

    3.缺少两步初始化

    论坛序列首先写入寄存器 0x01、然后接收固件的 14443A REQA 确认(该字符串为
    DLP-RFID2 固件确认模式进入、这不是标签的 ATQ)、然后将最终寄存器写入两个寄存器
    RTD 电阻值。 您的序列会在进行确认之前一次性写入两个寄存器、从而跳过此握手。

    更正了命令序列

    →01080003042B0000
    启用外部天线

    →010A0003041001210000
    写入寄存器 0x01 = 0x21(预配置 ISO 控制,触发固件模式进入)

    ←“14443A REQA“
    DLP-RFID2 固件确认(非标签响应)

    →010C00030410002101090000
    写入寄存器 0x00 = 0x21(射频开启,PM 输出模式)
    写入寄存器 0x01 = 0x09(ISO 14443A 106kbps,防冲突子模式)

    →0109000304A0010000
    A0 01—运行完整的 REQA +抗逆变、返回 UID

    ←[04152FB6422B1491EC、7F]
    UID

    为什么您的 IRQ 状态始终为[00]

    如果 0x22 处于芯片状态、AM 输出模式可能会抑制唤醒无源标签的射频场变化。 否
    标签响应→无 RX 中断→整个电路板上没有向 IRQ→[00]记录 TX 完成事件。 修复芯片状态
    值 0x21 应取消阻止上游的所有内容。

    希望这对您有所帮助。

    谢谢、

    Riz