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:无法从标签接收998字节 NDEF 重新绳

Guru**** 1751730 points
Other Parts Discussed in Thread: TRF7970A, RF430CL331H
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/727054/trf7970a-unable-to-receive-a-998-byte-ndef-reccord-from-tag

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

大家好、

我们在 Type4标签上存储了一些数据。  数据为998字节(包括 NDEF 标头)。  当我们尝试通过 NFC-B 将这些数据从标签传输到读取器时、读取器开始发送 nack。  下面是 Saleae 逻辑分析仪捕获标签上从 MSP 430到 RF430的 I2C 数据以及从 TRF7970A 到 MCU (STM32L4)的 SPI 数据。

www.dropbox.com/.../cal_request2.logicdata.zip

在~0.04256秒时、发送的读取二进制响应的 NDEF LEN 为998。

在~0.04484秒时、我们在 TRF7970A 的 FIFO 中放置一个读取二进制命令。

在~0.046065秒时、TRF7970A 生成并中断、表示之前的读取二进制命令已被发送。

在~0.06277秒时、标签的 MSP430开始通过 I2C 向 RF430发送数据。  这是998字节数据传输的开始。

但是、TRF7970A 从未看到此数据。  或者至少、永远不会在 TRF7970A 上生成一个中断、声明它已开始接收该数据。  在~0.078490秒时、读取器开始向标签发送 nacks。

请您说明一下我为什么会看到这种行为?  为什么 TRF7970A 没有开始接收这些数据?  它为什么不生成它开始接收的中断?

此致、

Robert Abad

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

    很抱歉、我查看了您的逻辑文件、我看到在 IRQ 触发之前、TRF7970A 正在尝试发送数据包。 数据包是通过先清除 FIFO 来发送的、因此看起来 FIFO 在 IRQ 到达之前就已被清除、然后在检查时它是空的。

    我认为 TRF7970A 没有足够长的时间等待接收数据包、所以在尝试发送下一个命令(即 NAK)之前、可能需要对超时进行时序调整。 您还可以从配置中检查两个器件之间的超时时序协议、并测量 RF430CL331H 是否足够快地发送数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ralph、

    感谢您花时间查看我们的数据文件。

    您能不能向正确的方向指出 TRF7970A 中该超时的设置方式?

    您提到了配置和计时协议。 假设这是由软件设置的、NFC 堆栈中的位置是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Robert、

    超时是根据 NFC 技术设置的、因此在本例中、NFC-B 位于 NFC_B.c 文件中。 具有读取器/标签超时协议的数据包是 SENSB 响应。 在 nFC_B.c 文件中查找变量 g_ui16NfcBFwt。

    然后在 NFC_controller.c 文件中使用超时。 对于您的应用、您需要特别查看此处的 NFC_DATA_EXCHANGE_Protocol 状态:

    ui16PICCTimeOut = NFC_引发 器_GetPICCTimeOut();
    
    eTrfIrqStatus = NFC_waitForCommand (ui16PICCTimeOut);
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Ralph。 这有助于解决我的问题! )