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.

[参考译文] RTOS/TMDSIDK437X:UART 460800bps 波特率错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/665305/rtos-tmdsidk437x-uart-460800bps-baudrate-error

器件型号:TMDSIDK437X

工具/软件:TI-RTOS

尊敬的所有人:

我正在使用适用于 AM437x 4.0.2的 Processor SDK RTOS、并按如下方式初始化 UART1:

1
2.
3.
4.
5.
6.
7.
UART_Param.baudRate = 460800;
UART_Param.parityType = UART_PAR_EVEN;
UART_Param.writeDataMode = UART_DATA_BINARY;
UART_Param.readDataMode = UART_DATA_BINARY;
UART_Param.readReturnMode = UART_RETURN_FULL;
UART_Param.readEcho = UART_ECHO_OFF;
UART = UART_open(1, &UART_Param);

但是、通过示波器查看 UART 帧、我看到组帧错误、波特率似乎为480kbaud。

在技术参考手册表21-6中、列出了波特率、并且应该有一个016%的误差。

但是、该库似乎始终使用 UART16x_Oper_mode 来计算分频值、而不是技术参考手册中所示的 UART13x_Oper_mode

我缺少什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我查看了 UART 驱动程序、它看起来是例程:
    /*计算 params.baudrate 的 Divisor 值*/

    已编辑:

    visorValue = UARTDivisorValCompute (hwAttrs->frequency、
    object->params.baudrate、
    UART16x_OPER_MODE、
    UART_MI_OPAMPLING_RATE 42);

    使用了16倍过采样率。 根据 TRM 的表21-6、功能时钟为48MHz、为了达到460800bps、它应该使用13x 过采样率和除数8来实现这一点。 我将与开发团队核实这一点。

    此致、Eric

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

    我认为一个好的解决方案是、对于所需的 UART 波特率、使用数学运算来计算16倍和13倍、并选择误差最小的设置。 但我们尚未实现该功能、我们对16x 进行硬编码。

    对于460800bps、您是否能够更改 UART_v1.c:
    visorValue = UARTDivisorValCompute (hwAttrs->frequency、
    object->params.baudrate、
    UART16x_OPER_MODE、
    UART_MI_OPAMPLING_RATE 42);

    UARTOperatingModeSelect (hwAttrs->baseAddr、UART16x_Oper_mode);

    UART13x_Oper_mode 并为此重新构建 UART 库?

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

    您好!

    我已经实现了一个修复、此修复适用于参考手册中表中列出的所有波特率。 但最好的解决方案应该是您建议的解决方案。

    希望这将在下一个 RTOS 版本中实现。

    此致

    弗兰克