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:在半输出功率内缺少发送 ISO15693命令的 IRQ

Guru**** 2455560 points
Other Parts Discussed in Thread: MSP-EXP430G2ET, MSP-EXP430F5529LP, TRF7970A

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1046804/trf7970a-missing-irq-sending-iso15693-commands-in-half-output-power

器件型号:TRF7970A
主题中讨论的其他器件:MSP-EXP430G2ETMSP-EXP430F5529LP

您好!

我有以下问题。

如果我将 TRF7970设置为全输出功率 (状态控制寄存器= 0x20)、一切都正常。

如果我将 TRF7970设置为半输出功率(状态控制寄存器= 0x30)并且我发送读取单个块命令、则收发器会发送正确的答案一次、在下一条命令中收发器不会发送任何 IRQ、以此类推。

以下是包含 dbg 字符串的日志:

// 1个命令

022002 //读取单个块命令

80T40E[00AABBCCDD] //正确响应

//2命令

022002 //读取单个块命令

[y] //缺少 IRQ

// 3命令

022002 //读取单个块命令

80T40E[00AABBCCDD] //正确响应

// 4命令

022002 //读取单个块命令

[y] //缺少 IRQ

(笑声)

我 将使用例程 HostRequestCommand 从 TRF7970AEVM 的 FW 开始、但在每个命令结束时(状态控制寄存器= 0x10)关闭发送器和接收器、并在随后的传输中再次打开。

我只有在设置一半输出功率时才会遇到此问题。

我已经在 sloa159a 中阅读了有关缺少 IRQ 的提示、这可能是由于这个原因?

请更好地解释解决方法:

" FIFO 的加载和读取应以这样的方式进行编码、这样停止条件不会下降
直接位于 TX 字节边界上。"

此致

ELISA

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

    您好、Elisa、

    首先、TRF7970AEVM 的固件已知存在错误、将不再受支持。 更好的固件资源包括:

    https://www.ti.com/lit/zip/sloc346 、适用于 ISO15693、专为 MSP-EXP430G2ET Launchpad 编写

    https://www.ti.com/lit/zip/sloc297 也适用于 MSP-EXP430G2ET Launchpad、支持不同标准(仅限 UART 输出)

    https://www.ti.com/lit/zip/sloa227 适用于 MSP-EXP430F5529LP (及其他)的完整 NFC 软件包、包含固件和 GUI

    有关更多信息、另请参阅常见问题解答:

    https://www.ti.com/lit/sloa246

    关於你的质询,我不知道功率模式的设置应如何影响 IRQ。 您提到的文档中解释的权变措施适用于并行接口模式、这是具有停止条件的模式。 如果您使用的是 SPI 模式、请参阅 TRF7970A 数据表的第6.10.5章、了解当读取 IRQ 状态时、此停止条件与 SPI 模式下所需的虚拟读取有何关联。 您可以检查实施是否正确、并可能解决 IRQ 问题。

    此致、

    Helfried  

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

    感谢您的快速回复。

    我将查看您建议的 FW、但由于我使用并行接口、您是否还可以阐明权变措施或向我展示这方面的示例代码?

    此致

    ELISA

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

    您好、Elisa、

    我尝试找到有关该问题的更多信息、但无法找到更详细地解释该问题的任何内容、也无法找到任何示例代码。 我认为原因是我到目前为止看到的所有实现以及我们所有的演示硬件都使用 SPI 接口。 唯一能够在并行和 SPI 之间切换的系统是不再支持 TRF70AEVM。   
    如果您尚未使用并行接口设计定制硬件、我建议您使用 SPI 接口并获取我建议的固件样片之一作为您自己开发的基础。

    此致、

    Helfried

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

    尊敬的 Helfried:

    遗憾的是、我们已经使用并行接口设计了硬件。

    在一个成功的读取命令的末尾、IRQ 状态寄存器= 0xA0、那么如果我发送一个新的读取命令、它将失败(从不在所选引脚上获得 IRQ 中断、而只是由于定时器已用而中断)。

    如果我在 sendig 下一条命令之前读取 IRQ 状态寄存器、则 IRQ 状态寄存器值复位为0x00、并且命令正确执行。

    是否知道接收到命令响应后 IRQ 状态寄存器为什么= 0xA0?

    当 TRF7970A 被设定为全功率时、一切运转正常并且在读取命令的末尾 IRQ 状态寄存器= 0x00。

    我描述了使用读取单个块命令时的行为、但很显然、我使用所有其他命令时会得到相同的结果。

    此致

    ELISA

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

    您好、Elisa、

    IRQ 状态寄存器中的0x0A 值将指示 TX 正在进行中且 FIFO 为空。 这意味着 TX 结束时的 IRQ 不是由 MCU 发出或未由 MCU 处理。 我仍然不知道为什么您会注意到这种行为与电源设置的相关性。 在您的第一篇帖子中、您写道您已添加接收器的 TX 关闭和切换。 如果从代码中删除它、它会更改什么吗?

    此致、

    Helfried   

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

    您好、Helfried、

    奇怪的行为是、如果我在 IRQ 中断例程中启用调试字符串、我可以看到命令过程的正确顺序:

    IRQ 状态寄存器= 0x80 (dbg string 'T')

    IRQ  状态寄存器= 0x40 (dbg 字符串'E')

    但在接收结束时读取 IRQ 状态寄存器、我发现0x80 (而在接收结束时满功率正确为0x00)。

    我尝试在命令芯片状态寄存器= 0x30 (3V 电源)结束时不关闭收发器和接收器、并且它完全停止工作、 IRQ 状态寄存器固定为0x80...

    我发现的一个有趣的事情是、如果我只是在半功率模式下打开传输器和接收器(芯片状态寄存器从0x00到0x30)、然后我读取 IRQ 状态寄存器、我发现 IRQ 状态寄存器= 0x80! 在全功率模式下也不会发生同样的情况、打开收发器 (芯片状态寄存器从0x00到0x20)、 并且 IRQ 状态寄存器=0x00。

    有什么想法吗?

    此致

    ELISA