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:如何正确执行接收器增益调整命令(0x1A)?

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

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/813409/trf7970a-how-to-properly-implement-receiver-gain-adjust-command-0x1a

器件型号:TRF7970A

发出 接收器增益调节命令(0x1A)的正确步骤是什么?  TRF7970A 手册(SLOS743K)说、 当 MCU 确定没有标签响应以及 RF 和接收器打开时、应该执行该命令。  但是、之后似乎表明芯片在可能的几百毫秒内执行增益调整。

  1. 发出命令后需要做什么?  在一段时间内、我肯定不会发送任何命令(例如 WUPA)吗?
  2. 如何知道接收器增益调整何时完成?

谢谢、
AJ

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

    你好、AJ、

    我们已从上一版本的数据表中删除了接收器增益调整、因为它不是用于生产的功能: http://www.ti.com/lit/ds/symlink/trf7970a.pdf

    在大规模生产的系统中、没有实际应用。

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

    这很有趣、因为发出此命令是我在嘈杂环境中可靠地接收数据的唯一方法。  如果我不应该这么做、那么我不知道还有什么要做-应该手动设置 RX 特别设置寄存器(0x0A)中的 B2和 B3吗?

    作为背景、我构建了一个具有配置为 RFID/ISO14443a 模式的 TRF7970A 的电路板、以从运行 Google Pay 或 Apple Pay 的移动设备接收信用卡数据。  只要只有一个 TRF7970A 板和一个移动设备彼此靠近(接近12英寸)、它就能可靠地工作。  但是、如果我将第二块 TRF7970A 板带到第一块附近、这两块板定期发送 ISO14443a WUPA 命令、那么在两块板上、我开始看到从 FIFO 接收到的垃圾字节。  我之所以将这些垃圾字节称为垃圾字节、是因为它们比任一电路板传输的字节多得多。  此外、我发现、如果 我在得到这个垃圾后重新检查芯片状态控制寄存器(0x00)、那么寄存器的值与我最初设置的值有很大不同。  我将其重置为正确的值、但此后不久、我发现它再次发生了变化。

    通过试用和错误、我最终发现 在初始化后调用接收器增益调整(0x1A)命令可以解决此问题-我不会得到无用字节、 现在、我可以从 Google Pay 在一个电路板上正确读取数据、即使附近有另一个 TRF7970A 电路板也是如此。  因此、我的上述原始问题是为了确认该命令的正确使用、因为它对我来说似乎有了很大的改进、所以我很惊讶地听到您说不需要这个命令。

    如果我不应该使用此命令、那么我猜测 使用 RX 特别设置寄存器(0x0A)中的增益降低设置是替代方法、但我不确定设置这些位的正确过程。  您能为我描述一下吗?  我应该从最大增益开始、然后仅在遇到问题时才进行降压?  或者、只需找到在所有情况下最适合我的增益设置、并坚持这样做即可?

    最后、您能否告诉我测试寄存器(0x1A)中的 B0 Test_AGC 是什么以及我将如何使用它?

    谢谢、

    AJ

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

    你好、AJ、

    您是否计划使用此系统进行 EMVco 认证、以打造可与 Apple Pay 和 Google Pay 配合使用的 POS 解决方案?

    很抱歉、发散了、但如果是、我需要通知您有关器件的重要信息。

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

    我们没有任何即时计划,但我们在将来也在考虑这一点。  但目前、我们只是希望接收非接触式 MAG 条带数据。

    AJ

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

    你好、AJ、

    好的、那么您事先知道、TRF7970A 将无法通过 EVMCo 测试。 两个单独的勘误项 Device#B01和 Device#B06披露了芯片问题会导致 EMVco 测试失败。 器件#B01尤其糟糕、因为它通常会阻止所有 ISO14443A 测试运行、因为每次测试通常都会检查位持续时间。 完整的勘误表可在以下位置找到: http://www.ti.com/lit/er/sloz011b/sloz011b.pdf

    现在、关于您所描述的问题、我很惊讶接收器增益调整对这一点有所帮助-这将是一个新的用例、但这不是我们已经测试过的、我无法说它在现场的可靠性如何。

    通常、在 TRF7970A 范围内检测到另一个射频场的情况应被视为器件在另一个读取器离开附近之前不会重新打开其场的情况。

    我们的 NFC 堆栈会在轮询周期之前检查外部射频场、以避免射频冲突。

    虽然您可以最大限度地降低接收器增益以避免出现问题、但这不是我要用的语言。 总体而言、该器件的设计初衷是尝试忽略附近的射频场、同时仍与标签进行通信。 由于有源 P2P 的工作方式、它实际上希望能够更精确地检测外部字段、因此通用器件的操作始终是检测外部射频字段、然后进入正确的响应模式(卡仿真、等待字段离开、活动 P2P 模式、 等)

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

    好的、感谢您对 EMV 认证问题的反馈。  我已经看到了勘误表、但没有意识到这对于认证来说是致命的。

    关于你的其余评论,我还有几个问题:

    1. 在检查外部 RF 场方面、我使用的代码与 TRF79xxA_checkExternalRfField (..)中的代码相似 我在 www.ti.com/.../493678链接)。    您能不能帮助我准确了解在50 us 延迟期间发生了什么?  在这个延迟之后、如果我读取一个为零的 RSSI 水平、但随后又轮询几次这个相同的 RSSI 水平、那么我通常会在随后的轮询中的一个期间获得一个非零值。  发出命令后、芯片是否开始锁存检测到的最高 RSSI、而等待50us 只是一个足够长的延迟、以确保我们至少有一个测量-但芯片在这之后继续测量?
    2. 当我有两个板彼此非常接近时-可能相隔2英寸-我将看到一个非零外部 RSSI、我将不再继续;在重新检查外部 RF 场之前、我的代码睡眠~100ms。  我不希望两个阅读器都能成功读取我的手机。  但是、如果我将电路板分布得更远-比如12英寸-我始终会看到 RSSI 为0、但也会观察到我 的芯片状态控制寄存器(0x00)值在 WUPA 轮询周期后发生了变化。  通常、我发现 B4半输出功率或 B0 3V 运行处于错误状态(通常我设置 B4 = 0 =全功率且 B0 = 1 = 5V 运行)。  您是否希望 芯片状态控制寄存器(0x00)被芯片本身更改?
      1. 当我把我的读取器分开时,这个现象似乎停止了--芯片状态控制寄存器(0x00)一直是我初始化它的方式。
      2. 在 NFC_findTag (..) 函数我看到在每个轮询循环开始时执行软复位是"推荐的最佳做法"(NFC_app.c 的第71行)。  这是因为上述 有可能在运行期间更改芯片状态控制寄存器的情况吗?  或者、也许这就是您从未看到这种问题的原因...
    3. 我已经尝试禁用对 接收器增益调整(0x1A)命令的调用、而是设置 RX 特别设置寄存器(地址0x0A)的 B3和 B2中的增益降低位、但我观察不到运行中的任何明显变化。  这些位是否与过时 的接收器增益调整(0x1A)命令相关、或者它们执行的操作是否完全不同?
    4. 考虑 到接收器增益调整(0x1A)命令似乎对我做出了一些重大改进、您能否帮助我了解此命令的实际作用以及如何最好地实施代码以使用它?  在手册的"K"版本中、似乎我需要等待几百毫秒、然后才能确信它已经完成了调整-这是正确的吗?
    5. 您能告诉我测试寄存器(0x1A)中的 B0 Test_AGC 是什么以及我将如何使用它吗?

    非常感谢、

    AJ

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

    [引用用户="AJ Johnson37"]

    1. 在检查外部 RF 场方面、我使用的代码与 TRF79xxA_checkExternalRfField (..)中的代码相似 我在 www.ti.com/.../sloc297中找到的函数 (从 e2e.ti.com/.../493678链接)。     您能不能帮助我准确了解在50 us 延迟期间发生了什么?  在这个延迟之后、如果我读取一个为零的 RSSI 水平、但随后又轮询几次这个相同的 RSSI 水平、那么我通常会在随后的轮询中的一个期间获得一个非零值。  发出命令后、芯片是否开始锁存检测到的最高 RSSI、而等待50us 只是一个足够长的延迟、以确保我们至少有一个测量-但芯片在这之后继续测量?
    [/报价]
    AJ、您好、延迟来自器件数据表第28页中概述的官方程序。 我不相信芯片在执行该命令之外测量外部 RSSI。

    [引用用户="AJ Johnson37"]

    1. 当我有两个板彼此非常接近时-可能相隔2英寸-我将看到一个非零外部 RSSI、我将不再继续;在重新检查外部 RF 场之前、我的代码睡眠~100ms。  我不希望两个阅读器都能成功读取我的手机。  但是、如果我将电路板分布得更远-比如12英寸-我始终会看到 RSSI 为0、但也会观察到我 的芯片状态控制寄存器(0x00)值在 WUPA 轮询周期后发生了变化。  通常、我发现 B4半输出功率或 B0 3V 运行处于错误状态(通常我设置 B4 = 0 =全功率且 B0 = 1 = 5V 运行)。  您是否希望 芯片状态控制寄存器(0x00)被芯片本身更改?
      1. 当我把我的读取器分开时,这个现象似乎停止了--芯片状态控制寄存器(0x00)一直是我初始化它的方式。
      2. 在 NFC_findTag (..) 函数我看到在每个轮询循环开始时执行软复位是"推荐的最佳做法"(NFC_app.c 的第71行)。  这是因为上述 有可能在运行期间更改芯片状态控制寄存器的情况吗?  或者、也许这就是您从未看到这种问题的原因...
    [/报价]
    这与此相关-如果另一块板已完全从该区域中卸下、您是否看到问题已解决? 它们是否以与同一电源或同一主机 PC 类似的任何方式耦合在一起? 我无法想象接收器增益调节到底会如何影响这一点。
    除了 MCU 命令之外、我从未听说过芯片状态控制因任何其他原因而发生变化。 尤其是在半功率模式下。 如果设置为3V、这可能是由于默认芯片状态设置为 0x01的软 Init 命令导致的、但这不会解释半功率模式。 您的代码应在软复位后随时将其设置回5V。
    SPI 线路上是否可能存在噪声? 您是否有一个 LSA、您可以在其中获取 SPI 线路的扩展捕捉?

    [引用用户="AJ Johnson37"]

    1. 我已经尝试禁用对 接收器增益调整(0x1A)命令的调用、而是设置 RX 特别设置寄存器(地址0x0A)的 B3和 B2中的增益降低位、但我观察不到运行中的任何明显变化。  这些位是否与过时 的接收器增益调整(0x1A)命令相关、或者它们执行的操作是否完全不同?
    [/报价]
    老实说,我不知道。 我觉得它们是相关的、但我怀疑接收器增益调节可能会转动一些额外的内部旋钮。

    [引用用户="AJ Johnson37"]

    1. 考虑 到接收器增益调整(0x1A)命令似乎对我做出了一些重大改进、您能否帮助我了解此命令的实际作用以及如何最好地实施代码以使用它?  在手册的"K"版本中、似乎我需要等待几百毫秒、然后才能确信它已经完成了调整-这是正确的吗?
    [/报价]
    我从未亲自使用过它、因此很遗憾我没有任何反馈。 我们的团队中没有具备一些知识的专家、此外、由于他们来自 D/S、因此我们无论如何都不支持他们。
    不过、如果芯片状态控制发生变化、我认为还有其他事情发生、因为接收器增益调节作为解决该问题的一种方法没有意义。

    [引用用户="AJ Johnson37"]

    1. 您能告诉我测试寄存器(0x1A)中的 B0 Test_AGC 是什么以及我将如何使用它吗?
    [/报价]

    AGC 是我们推出的另一项功能-它用于自动增益控制。 使用 AGC、我们既没有明显的性能改进、也没有发现性能下降。 不过、如果您想更深入地了解、旧 D/S 中有一些子句。

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

    是的、当我完全分离两个板时、芯片状态寄存器损坏的问题就会停止。  当我将它们重新组合在一起时、它在两个板上再次开始发生。  电路板由同一个壁式插座供电,但每个电路板都有自己的 AC->DC 变压器。  两者都未连接到 PC。

    我本身没有线路信号分析器、但我将示波器连接到了连接到 TRF7970A 的 MOSI 和 SS 引脚、我在那里看不到任何我无法解释的内容。  我的板还具有触摸显示屏、可与 TRF7970A 共享 SPI 总线。  我知道 TRF7970A 在未选择 MISO 线路时不会对其进行三态处理、但该线路不会与显示屏共享(我们只对显示屏进行写操作;不对显示屏进行读回操作)、因此我认为这不是问题。  主 CPU 还具有一个 WiFi 模块、因此该区域有大量其他射频、但我不会看到这种损坏、除非一个板靠近另一个板、而另一个板也使用其 TRF7970A。  因此、我倾向于认为它不是来自 SPI 线路、而是通过 TRF7970A 接收器输入。

    无论如何、在轮询之前定期发出接收器增益命令、等待500ms、然后发送 WUPA 命令似乎有了很大的改进、并使我达到了所需的性能水平。  因此、我希望能够准确地了解正在发生的情况、我想我将把它留在那里、然后继续讨论其他事情。

    非常感谢本周的快速回答、他们非常乐于助人。

    AJ

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

    你好、AJ、

    所有 SPI 线路都没有三态、因此如果您通过 MOSI 发送数据、这可能是根本原因。 MISO 上是否只有三态? 如果是、这可能会解释发生了什么情况、即当另一个射频场与 LCD 屏幕命令接近耦合时、器件如何工作的组合最终导致器件接收到一个由 LCD 命令覆盖的寄存器?

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

    我的电路板上没有任何三态。  TRF7970A 和 LCD 之间唯一共用的引脚是 MOSI 线路、此线路将从我的 MCU 发送到另外两个器件的数据传送到另外两个器件。  除非我缺少某些东西、否则我不会认为我们需要在这条线路上使用三态、因为所有从器件都只是侦听-换句话说、它们的输入引脚已经是高阻抗。

    另一方面、我本来希望(并理解 SLOA159A 第7.1项的意思)当 SS 为高电平时、TRF7970A (I/O_6)的 MISO 输出引脚不会变为高阻抗。  这通常需要一个三态、但在我的电路板上、由于 LCD 不向我发送任何数据、所以这条线实际上不会与 LCD 共享。  换句话说、我不需要三态、因为没有其他器件尝试使用该线路;TRF7970A 是唯一的所有者。

    当我与 TRF7970A 通信时、我只设置 TRF7970A 上的 SS (I/O_4)引脚。  当我与 LCD 通信时、TRF7970A 上的这个从器件选择信号一直为高电平、所以 TRF7970A 应该忽略我发送的任何内容。  不是这样吗?

    谢谢、

    AJ

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

    你好、AJ、

    该器件还具有不带 SS 模式的 SPI、虽然不应在上电序列中触发、但我不知道我们是否验证了在具有 SS 模式的 SPI 中、当 SS 为高电平时忽略 MOSI。 我担心的是、如果只有 MISO 有任何风险、我们就不会说对所有引脚使用三态。 最后、我不确定、但它会解释发生了什么、因为我从未听说过射频信号破坏器件寄存器。