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:如何使用2 TRF#39作为简单的串行桥接器?

Guru**** 2553420 points
Other Parts Discussed in Thread: TRF7970A

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/625474/trf7970a-how-do-i-use-2-trf-s-as-a-simple-serial-bridge

器件型号:TRF7970A

大家好、

我希望使用2个 TRF7970A (TRF)芯片(8-32字节数据包、大约每100ms 发送一次)通过 NFC 链路在两个系统之间来回发送小数据包。

两端都是完全已知的(完全相同的硬件、C2000 MCU 和相同的基本软件)、而且器件根本不需要处理任何第三方 NFC 接口。

我花了一些时间对 SPI 接口等进行编码、以便与 TRF 进行交互、我已经阅读并重新阅读了几次相关数据表、以及许多其他针对14443A/B 和15639等各层的规格文档。

这一切都非常复杂、TRF 数据表非常混乱、似乎涉及很多问题、例如处理射频冲突、多个目标、参数选择等

在我的目标(工业控制)应用中、只有两个类型相同的器件彼此相邻、一个始终是发起方、另一个始终是目标方、 但是、需要有双向通信(如果更容易的话、它们可以是交替的单向通信、作为单独的"交易"进行时间分离。 即发起方向目标方发送数据包、或发起方向目标方请求数据包)

我要寻找的是对几个问题的一些回答:)

1/是否可以设置一个非常简单的状态机来利用 TRF 的 ISO14443A/B 组帧特性向目标发送数据包而无需参考 SENS_REQ/SDD/PFA 协商和时隙时序等?

2如果我将两端配置为完全相同的值、除了一端配置为启动器、另一端配置为目标、我是否只能发送一个非 ISO 固定长度的数据字符串并让另一端接收它?  我知道 TRF 嵌入了一些用于执行 SDD 状态机的逻辑、 并将目标协议标识位移出-如果我配置为 ISO14443A/B 模式、我是否需要使用此位、或者我是否只能有一个处理 RX 标志的 IRQ 处理程序(在传输/接收完成后)、然后读出已发送的数据字节? 我可以保证在任何一个传输中传输的字节都少于127字节。

3否则,是否有人成功地将示例/参考软件堆栈移植到 C2000架构? 堆栈的忙等待性质存在一些问题(我需要定期检查接收到的传输、然后使用 CPU 执行其他任务、在监听模式下、它不能等待500ms、等待潜在的传输)...  

很抱歉我的问题含糊不清。 我正在执行简单的自举 NFC 串行连接、以便自行实现、而不是业界通用的 NFC P2P 或读/写器堆栈实现...

我知道我不能做的(由于硬件设计)是进入直接模式0或1并实时移入/移出调制位-事后看来这是最好的方法:(

如果有任何链接、提示或建议、我们将不胜感激!

谢谢、

 Kyle

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

    我了解您的应用意图、当然也同意 TRF7970A 数据表和器件本身是高级(但"隐含")应用(如您所描述的内容)的复杂主题。

    首先、要回答您的问题:

    1) 1)对于专有系统、您无需使用任何这些命令。 时序方面、您可能需要处理超时问题。

    2) 2)我不明白为什么不这么做。 需要注意的是、您需要某种方式来确认收到了数据包、否则您永远不会知道数据包是否无法发送。 NFC 并非完美无缺的通信、如果您发送10、000个数据包、即使在完美的条件下、最终也会失败。 您需要能够处理这些故障。

    3) 3)不是、我们没有、但这样做不应太困难。 移植主要是 GPIO 配置、MCU 特定详细信息(时钟、中断、计时器)和使 SPI 正常工作。 对于500ms 监听等待的时间、您可以更改... 这只是示例量、但您可以使其更短。 不过、我会说至少25ms 是最小值。

    现在所有这些都说明了、我们不能真正为这种异常的专有应用提供支持。 我不介意将此信息作为指导点来帮助您了解可能的情况、但我无法帮助您了解实际的实施情况。

    我们花费了大量的时间和精力来制作 NFC 示例(我假设您已从您的评论中阅读了 SLOA192 for Peer to Peer、如果没有、请查看)、以确保根据其预期用例正确使用器件(作为 NFC 设备、 而不是原始收发器)、因此如果您选择为自己的发展铺平道路、则无法提供技术支持来克服您可能遇到的障碍。 只是需要记住的一点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的响应及时、令人鼓舞!

    我已经阅读了 P2P 文档、并在参考设计中的不同代码层上运行了几个小时。 我非常感谢大家付出的努力! 在一个理想的世界里,我会移植和实施完整的堆栈,并修改它以处理我的特定通信情况-但是,该状态机和标准的学习曲线是非常令人生畏的,在商业项目中,使用解决方案的时间是很短的

    对于我来说、丢失数据包并不是一大问题-它是一种无状态通信协议、能够容忍丢失的数据包、在较高的级别上会有超时、这表明存在可行通信的一般损失、 但是、如果我能够使基础知识发挥作用、最好进行一点(自行)握手来确认传输。

    我将继续、并开始尝试在电路板之间进行一些传输。

    如果稍后我有一些时间、我可能会为任何其他想要以这样简化的方式使用 TRF 的人提供基本代码框架。

    还有几个具体的 TRF 问题、我可以吗?

    目标协议寄存器:
    -它是否依赖来自启动器的正确格式化的命令字节来处理它的所有位? 还是仅 Pas106/Pas1443B 依赖于该命令的特定编码? (其他似乎可以通过 SOF 等的调制/编码而不是有效载荷来确定)
    -它处理的案例(如第50页第6.12.1节所列)并不能真正说明如果没有收到有效的命令序列会发生什么情况、我认为它在任何情况下都将打开、从而使接收到的数据在 FIFO 中可用?

    再次感谢您的帮助!

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

    目标/协议检测功能用于将 TRF7970A 保持在低功耗模式、在接收到 RF 场时唤醒、然后在唤醒时诊断与之通信的协议。 这允许配置器件的 ISO 控制寄存器、并允许主机 MCU 根据确定的标准处理命令。

    通过调制方案和接收数据的比特率进行检测。

    不管数据包是否有效、任何给定的数据都将进入 FIFO。