主题中讨论的其他器件: 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 模块。 相应的晶振引脚和唤醒在上述设置中保持打开!