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.

[参考译文] MSP432E401Y:更改 UART 空闲状态

Guru**** 2539570 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/992945/msp432e401y-change-uart-idle-state

器件型号:MSP432E401Y

IAM 在 TI RTOS 中使用 TI 驱动程序版本的 UART 可以更改其 TX 引脚上的 UART 默认空闲状态?当我初始化 UART 模块或在其空闲时、TX 引脚将从0V 跳转到3.3V 并保持3.3V、直到我关闭 UART 或 向其写入数据。

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

    这是 UART 模块的低功耗设计。 向 TX FIFO 写入数据将启用发送、以便 BUSY 位将被置位。 退出空闲状态的唯一方法是保持 BUSY 位为高电平、即继续向 TX FIFO 写入数据。  

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

    空闲高电平对于逻辑电平 UART 来说是相当标准的、我在 TRM [(SLAU723A)第26章]中看不到任何更改该值的机制。 在许多/大多数 UART 中、"长时间"的低 Tx 信号被视为中断字符。

    如果线路另一端的器件断电(即您希望避免通过其 UART 引脚为其供电)、则应禁用 UART。 您还可以将引脚备用功能设置为 GPIO (而不是 UnTX)并将其设置为低电平。

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

    这是从六个方面开始的原始 RS-232规格的相关内容。 我相信 Arduino 将允许您指定空闲状态。 在任何情况下、您都可以使用外部逆变器、具体取决于接收器是否可以处理该逆变器。

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

    我知道如果您使用该驱动程序、它不会有所帮助、但它有什么作用

    EUSCI_A_UART_IDLE_LINE_MULTI_PROCESSOR_MODE

    定义"执行"? 它是否使空闲状态反相?

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

    好的、它是否仍然需要为发送的每8个位创建一个停止位(拉高)?

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

    @Bruce Mckenney47378

    我正在考虑在运行时设置引脚并在其 GPIO 和 UART 功能之间切换、但我不确定这是如何工作的。查看 TI 驱动程序 GPIO 和 UART 源代码的工作方式、似乎无法实现、因为 UART_INIT 和 GPIO_INIT 都只初始化引脚功能一次。IAM 正在考虑 修改 TI 驱动程序 UART 和 GPIO 源代码我想坚持使用 TI 驱动程序、但 我也在查看 在我的 TiRtos 项目中使用 DriverLib、我不确定是否建议这么做。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="301692" URL"~/support/microcontrollers/msp430/f/msp-low-power-microcontroller-forum/992945/msp432e401y-change-uart-idle-state/3668242 #3668242"]

    是什么

    EUSCI_A_UART_IDLE_LINE_MULTI_PROCESSOR_MODE

    定义"执行"? 它是否使空闲状态反相?

    [/报价]

    我本应该更清楚一点、这是一个针对 TI 的问题。

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

    我对 TI 驱动程序不太熟悉(有些使用 Driverlib)、但通常 UART 无法判断引脚是否连接。 如果您的程序将 Alternate 函数更改为 GPIO (使用 Driverlib 或裸寄存器操作)、驱动程序可能看不到什么区别。

    由于这是一种不太常见的用法、因此某些上下文可能会有所帮助。 导线另一端是什么? 它是否会注意到/关心其 Rx 线路是否处于低电平状态一段"很长的时间"? 更一般地说:您的目标是什么?

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

    是的、最终目标是传输一个 DMX 数据包、因此我需要为最小88us 创建一个中断、为最小12us 创建一个 MAB。我的原始代码只是以90kbps 的速率初始化 UART、写入0、然后关闭、然后以250kbps 的速率重新初始化以写入 DMX 通道。这可以正常工作、但 MAB 将在180us 范围内、信号形状不对称、MAB 信号的另一个问题是 我无法控制其长度、这是我关闭 UART 并将其重新初始化为250kbps 并开始时确定的 发送 dmx 通道。

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

    Driverlib 具有一个函数"UARTBreakCtl (uint32_t ui32Base、bool bBreakState)"、该函数将 UARTLCRH:BRK 设置为启动或停止中断字符[参考 TRM (SLAU723A)表26-10]。 您必须自行安排休息时间。 结束中断字符后、(Tx)线将变为空闲高电平、我认为这将为您提供 MAB。 虽然使用计时器更好、但最初您可能只需使用自旋环路进行计时即可。

    可能是 TI 驱动程序具有类似的功能。

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

    在 TI 驱动程序中找不到与 driverlib UartCtrlBreak 类似的函数 我在 RTOS 中使用了 driverlib Project Iam 不能完全确定在工程中将 ti 驱动程序和 driverlib 混合在一起是多么安全。但是 现在它工作正常、我可以控制信号、它的信号形式是对称的。感谢大家 输入

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

    我很确定我在这里看到过有人将 Driverlib 与 TI 驱动程序结合使用(小心)。 您需要避免干扰 TI-Driver 状态、但这尤其看起来是良性的。 (您可能只能在 UART 空闲时使用它。)