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 时钟频率标准

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/564658/rtos-clock-frequency-criteria-for-configuring-baudrate

器件型号:TM4C123GH6PM
主题中讨论的其他器件: TM4C123

工具/软件:TI-RTOS

我要提前真诚地道歉,不要通过文档/调试而使用这种快捷方式!


RTOS:tirtos_tivac_2_14_00_10

电路板:EK_TM4C129EXL 和用于 TM4C123GH6PM 的定制电路板

TI-RTOS 是否会探测 TM4C12x 的实际系统频率以配置 UART 的波特率,或者它只是假定指定的频率(TM4C129为120MHz, TM4C123GH6PM 为80MHz)。

EK_TM4C129EXL 板载 UART 配置为时,可通过外部设备提供正确的 Tx/Rx

SysCtlClockFreqSet (((SYSCTL_USE_PLL|SYSCTL_XTAL_25MHz|SYSCTL_OSC_MAIN|SYSCTL_CFG_VCO_480)、120000000); 

当 UART 位于 TM4C123GH6PM 的定制板上时、提供正确的 Tx、但当配置为时、来自外部器件的响应 Rx 在大约40字节后变为无用

SysCtlClockFreqSet (((SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN)、8000000); 

SysCtlClockGet() 也返回正确的值  8000000。

E2E 论坛、建议的 API "SysCtlClockSet"仅适用于 TM4C123、"SysCtlClockFreqSet"仅适用于 TM4C129。

在定制板上为 TM4C123GH6PM 配置、更换

SysCtlClockFreqSet (((SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN)、8000000); 

使用

SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN); 

 导致 TM4C123GH6PM 在 Tx 上传输垃圾字节、从而导致外部器件的 Rx 无响应

SysCtlClockGet ();也返回  40000000。

!! 上述观察结果的一个直接问题是、如果 TI-RTOS 一直在探测 TM4C123GH6PM 上的实际频率、无论是40M 还是80M、要配置波特率、Tx 都将保持不变!!

注:

TM4C123GH6PM 的定制板没有组装32K 晶体、因为目前不使用休眠/RTC 模块。 相应的晶振引脚和唤醒在上述设置中保持打开!

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

    TM4C123x 使用 SysCtlClockSet API、TM4C129x 使用 SysCtlClockFreqSet API 进行系统时钟配置。 如果您希望 TM4C123x 获得80MHz、请将 SYSCTL_SYSDIV_5替换为 SYSCTL_SYSDIV_2_5

    确保在配置系统时钟后配置 UART。

    至于晶振引脚、请确保如果这些引脚未被使用、那么 XOSC0被连接至 GND。 这是一种标准做法、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据上面共享的观察、SysCtlClockFreqSet API 有助于 TM4C123x 的部分通信。
    而 SysCtlClockSet API 会完全中断通信
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Luck Luck">根据上面共享的观察结果、SysCtlClockFreqSet API 有助于 TM4C123x 的部分通信。
    SysCtlClockSet API 完全中断通信[/引用]TI-RTOS for TivaC 具有 Tiva C 时钟配置选项、SYS/BIOS 在这里计算预期的 CPU 时钟频率。 以下示例来自 TI-RTOS TivaC 2.16.01.14 :

    如果您的代码调用 SysCtlClockSet()、这样实际的 CPU 时钟频率与 SYS/BIOS 计算的(预期的)频率不同、SYS/BIOS 将在其计算中使用错误的 CPU 时钟频率。

     不要在代码中调用 SysCtlClockSet()、而是尝试在 SYS/BIOS 的"引导-时钟选项"中设置所需的时钟配置。

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

    对于 TM4C123x 器件、SysCtlClockFreqSet API 为"非"。 正如 Chester 提到的、您可以尝试使用 TI-RTOS 设置。