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.

[参考译文] TMS320F28376S:处理从逻辑零开始的 UART 输出

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1404421/tms320f28376s-dealing-with-a-uart-output-that-begins-as-logic-zero

器件型号:TMS320F28376S

工具与软件:

您好!  

并将一个信号馈送到 F2837xs 的 SCICRX 引脚。 问题是、馈送到该引脚的发送 UART 在数据发送到它之前可能没有通电、这意味着信号是恒定的零。

这会在 DSP 中引发中断检测错误、从而阻止接收器寄存器进一步更新、并且一旦传输设备唤醒、我们就无法处理任何数据。

现在、理想情况下、我们不想更改硬件来解决此问题。 我想我可以在启动时禁用 UART、将 GPIO 设置为标准 GPIO 引脚。 一旦该引脚读数为零、则会将该引脚配置为 UART、然后读取数据。 一旦 GPIO 检测到中断检测、例如、如果发送 UART 再次断电、我们将禁用 UART 并将其设置为标准 GPIO 引脚、然后清除中断检测标志、直到 GPIO 再次设置为高电平。  

这听起来是否合适? 我们打算在大于1兆波特的高波特率下接收、关于此方法和在 UART 硬件中可配置的速率、我已经阅读了一些相互冲突的信息。

与上述简单技术相比、是否有更好的方法可以改进?  

此致、  

JmH

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

    您好、JMH:

    感谢您的咨询。 我会在本周努力回复您、但请注意、我在接下来的几天内不在办公室。

    此致、

    Allison

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

    您好、JMH:

    我对这项调查拖延时间过长深表歉意。  

    根据我的理解、您有一个 C2000器件和另一个器件、非 C2000器件在启动时断电、并持续加电 和断电、从而中断 SCI 通信。 您正在尝试防止 SCI 模块在另一个器件断电后挂起。

    [quote userid="563423" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1404421/tms320f28376s-dealing-with-a-uart-output-that-begins-as-logic-zero 这样会抛出我们的 DSP 中的中断检测错误、从而阻止接收器寄存器的进一步更新、并且一旦发送设备唤醒、我们将无法处理任何数据。

    当您接收到 RX 中断时、您是否正在检查中断检测标志是否被设置? 在 RX ISR 中、您可以检查该标志是否已设置、然后可以使用 SCI SWRESET 清除该标志(例如、通过SCI_clearInterruptStatus() 从 DriverLib 中调用如下代码段)。 在这种情况下、您将重置 SCI 模块以恢复 SCI 通信(您可以使用此波特率实现超过1兆波特)。  

    如果您不能像上述情况那样持续接收中断检测、那么我会建议您这样描述的内容:

    • 从启用 SCI 开始
    • 当器件断电(或者如果在启动时它已经关闭)时、会发生中断检测、因此您可以在 RXISR 中禁用 SCI (通过检查中断检测标志并禁用)。
    • 当器件再次上电时、会将 GPIO 驱动至高电平。 您可以检测 GPIO 电平或边沿 并启用 SCI。

    此致、

    Allison