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.

[参考译文] PGA460:PGA460 UART Tx&RX 同时工作、使用半双工 RS485时出现问题

Guru**** 2540720 points
Other Parts Discussed in Thread: PGA460, BOOSTXL-PGA460, PGA460-Q1

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/890011/pga460-pga460-uart-tx-rx-work-simultaneously-there-is-problem-when-use-half-duplex-rs485

器件型号:PGA460

PGA460 UART TX&RX 同时工作、使用半双工 RS485。时出现问题

如下图所示,TX 尚未完成,RX 启动工作,在 MCU 和 PGA460,之间使用半双工 RS485

, ?当我们以此方式使用时会出现问题。我们如何解决这个问题,TX/RX 可以异步工作

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

    MCU 是 BOOSTXL-PGA460中的 MSP430

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

    EVM 工具 UART 诊断失败、如以下。所示

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

    user60721、

    在 MCU 仍在传输数据但 PGA460开始响应的情况下发送什么命令? 在 UART 模式下、发送和接收命令之间不应存在任何重叠。 GUI 可能会向所有命令(包括响应命令)添加校验和。 通常、PGA460的响应命令不需要校验和、但不会影响标准 UART 交换的响应。 我不知道添加中间 RS-485桥接器时数据如何受到影响、因为我们尚未测试此接口用例。

    您可以使用 GUI 的 Interface Mode - UART 页面并发送带有和不带有校验和的单个命令(使用"with Checksum (带校验和)"复选框)来确定附加的主传输校验和是否是问题的根源。

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

    尊敬的 Akeem:

       我尝试使用校验和复选框。

    1.1CMD5-Ultrasonic measurement、带校验和、UART 诊断失败。    

    1.2 CMD5-Ultrasonic measurement、不带校验和、UART 诊断正常。

    因此、我认为 MCU TX 校验和与 PGA460 TX 相冲突、因此半双工 RS485无法处理这种情况。

    2.1 GUI 接口模式下的哪个命令与 GUI 数据监视器中的 BURST 和 Listen 命令相同、0-P1突发和 Listen 命令不相同。

    2.2当我在 GUI 接口模式下运行0-P1突发和监听命令时、无论是否具有校验和、我都无法获取以下数据字节。

    3.1哪个命令可以删除校验和、以及如何在软件中删除校验和。

    3.2能否在 GUI 数据监视器中删除校验和、如何操作? 因为我想通过由 UART 转换的半双工 RS485对电路板进行调试。

    谢谢。

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

    Akeem Whitehead、

      我期待你的答复,谢谢

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

    user60721、

    感谢您确认主器件为响应命令生成的校验和是 RS-485接口的问题。 我需要更新 GUI 以禁用这些特定命令的校验和。 请给我几天时间对 GUI 进行更改并将最新版本上传到 Web。

    发送 Px 突发/侦听命令时未发现任何问题的原因是这是一个无响应命令。 对于无响应命令、您将永远不会看到任何 RX 活动。

    请参阅"表3 - UART 接口命令列表"、了解哪些命令是响应命令、哪些是无响应命令。 在 S-to M data bytes 列中、每当您看到"0"时、这是一个无响应命令、例如 cmds 0、1、2、3、4、 10、12、14和16。 只有无响应命令才需要主器件生成的命令。

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

    谢谢。

        我发送不需要响应的命令、没有校验和,半双工可以工作。

    但我还有另一个问题:

    我在同一条 RS485总线上使用五个具有不同地址的 PGA460s,当 PGA460s 中的一个响应时、结果,结果包含同步字段,其他 PGA460s 的人将识别为命令、我使用以下示波器测试这种情况。

    我如何解决这个问题,谢谢。

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

    user60721、

    在十六进制中、您向"This460"发送了什么命令、"This460"提供了什么响应、以及"other460"意外运行了什么命令?

    您能否提供 RS485连接图的示意图? 也许我不完全了解 RS485、但为什么一个 PGA460的 TX 连接到另一个 PGA460的 RX。 如果 TX 和 RX 通道是独立的、则 PGA460的 RX 不应看到另一个 PGA460的 TX。

    如果 RX 和 TX 引脚像单线制接口一样常见、那么这可能是一个挑战。 如果 PGA460从器件无意中创建了类似命令帧的主器件来触发不同的从器件来执行新命令、可能需要考虑更改"other460"的 UART_ADDR。 由于您仅使用五个地址、因此您有三个备用地址可供试用。

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

       我们使用半双工 RS485,RX 和 TX 变压器、就像单线制接口,TX 和 RX 通道不是相互独立的。

    我们的图如下所示。

    正如您所说的、如果我更改了另一个地址,如果仍然存在此类问题、该怎么办( PGA460 从器件无意中创建了类似命令帧的主器件、以触发不同的从器件来执行新命令)。 我认为改变地址不是最好的方式。

    2.如果我将半双工 RS485更改为 LIN,可以解决这个问题(一个 LIN 中有五个 PGA460)?

    can PGA460检查所有命令的校验和(PGA460不检查响应命令的校验和)

    谢谢

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

    user60721、

    感谢您提供 RS485图。

    正确的做法是、使用不同的地址不会完全解决问题、但可能会降低 PGA460响应将主命令仿真到另一个 PGA460的可能性。 这就是为什么我要问哪个特定命令以及创建此错误情况的响应的值;可能不同的地址会避免出现错误情况、因为 PGA460响应中的特定位可能不会切换。

    2.我不知道 PGA460-Q1 IO 引脚的单线制 UART (LIN)接口是否可以解决此错误情况。 您能否提供特定的主命令和 PGA460响应数据位详细信息、以便我们尝试通过 OWU 复制此错误情况?

    无法为所有命令启用校验和。

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

    我捕获波形、然后转换为数字信号、但我不确定我的转换是否正确。

    如下所示、我认为解决此问题可能会有所帮助。

    我期待您的回复,谢谢。

    该捕获、一条总线上的五个 PGA460、地址为3、4、5、6、7。

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

    user60721、

    我已确认、OWU 也会受到相同的意外数据冲突错误的影响。

    我将两个器件连接到了一个 OWU 总线上、一个在 UART_ADDR=0、另一个在 UART_ADDR=1。  在 UART_ADDR=0的器件中、我将寄存器地址0x28-0x2A 设置为值0x55、08、F2、这与主命令相同、强制使用 UART_ADDR=1的器件执行系统诊断回读。

    当只有 UART_ADDR=0连接到总线时、批量 EEPROM 读取命令的末尾是这样;所有操作都按预期工作:

    当两个器件都连接到总线时、以下是相同的批量 EEPROM 读取命令。 您将注意到数据在末尾发生冲突、因为两个器件都尝试使用不同的数据进行响应、因为 UART_ADDR=0的 EEPROM 批量读取结果会在 UART_ADDR=1时意外触发系统诊断回读命令。

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

    Akeem Whitehead、

    感谢您的确认。

    是否有任何方法可以解决此问题?

    谢谢!

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

    user60721、

    目前、在使用单个 RS485转 UART 总线拓扑时、我们没有您所需要的解决方案或权变措施。

    以下是需要考虑的两种解决方案:

    1) 1) RS-485和 OWU

    如果您同时使用 RS-485和 OWU 的组合、则该双总线解决方案的工作方式如下:

    1. 当您想要与特定器件地址(例如 UART_ADDR=5)进行通信时、您可以通过 RS-485发送单个寄存器写入命令、以便在 UART_ADDR=5的 PGA460的 IO 引脚上启用单线 UART 模式。 默认情况下、IO 模式应针对 TCI 通信进行 EEPROM 编程。
    2. 然后、使用 OWU、您可以使用 UART_ADDR=5通过 OWU 读取和写入数据、其他 PGA460器件将不会响应、因为它们都需要 TCI 命令、而不是 OWU 命令。
    3. 从 UART_ADDR=5读取数据后、发送 RS-485命令将 IO 模式设置回 TCI 以准备下一个地址。

    2) OWU 和 TCI

    只使用 PGA460的 IO 引脚、就可以在 TCI 和 OWU 模式之间切换。

    1. 如果所有器件在加电时都被编程为 OWU 模式、则可以执行单个寄存器 OWU 命令将特定器件地址(例如 UART_ADDR=5)设置为 TCI 模式。
    2. 然后、使用 TCI 通信、将数据读写到该特定地址、以避免数据与其他需要 OWU 命令的器件发生冲突。
    3. 在 TCI 模式下完成 UART_ADDR=5后、向所有其他器件发送广播单个寄存器写入 OWU 命令、以便也将其设置为 TCI 模式。
    4. 一旦所有器件都处于 TCI 模式、使用 系统内 IO 引脚接口选择(请参阅数据表第7.3.6.3节)强制所有器件返回到 OWU 模式。