[STM32L0] L0用内部RC跑UART时串口老出错

[复制链接]
450|18
 楼主| 公羊子丹 发表于 2025-6-20 07:17 | 显示全部楼层 |阅读模式
想省个晶振结果串口就不准,发出去上位机经常接收乱码。
Clyde011 发表于 2025-6-20 07:27 | 显示全部楼层
UART配上DMA还容易出错,RC时钟确实不稳。
 楼主| 公羊子丹 发表于 2025-6-20 07:28 | 显示全部楼层
RC振荡器偏差大,波特率超出容忍范围了吧。
周半梅 发表于 2025-6-20 07:29 | 显示全部楼层
我试过用内部RC跑9600,误码率也挺高的。
帛灿灿 发表于 2025-6-20 07:30 | 显示全部楼层
要不加个外部晶振?稳定不少。
童雨竹 发表于 2025-6-20 07:31 | 显示全部楼层
用示波器抓抓TXD,看波形有没有毛刺。
万图 发表于 2025-6-20 07:32 | 显示全部楼层
HAL_UART_Init里面的时钟源要确认清楚。
Wordsworth 发表于 2025-6-20 07:33 | 显示全部楼层
内部RC得用工厂校准值,不然误差更大。
Bblythe 发表于 2025-6-20 07:34 | 显示全部楼层
用低速串口比如4800试试会不会好点。
Pulitzer 发表于 2025-6-20 07:35 | 显示全部楼层
我之前RC震荡加了温度补偿才稳定些。
Uriah 发表于 2025-6-20 07:36 | 显示全部楼层
建议直接开LSE,用它当系统时钟更靠谱。
flycamelaaa 发表于 2025-6-20 09:59 | 显示全部楼层
STM32L0的内部RC振荡器默认精度为±2%,但在温度变化或电压波动时,频率可能漂移,导致UART波特率误差超过±3%,引发通信错误。
laocuo1142 发表于 2025-6-20 10:06 | 显示全部楼层
硬件连接问题?
jcky001 发表于 2025-6-20 10:10 | 显示全部楼层
缩短UART信号线长度,避免平行走线。
elephant00 发表于 2025-6-20 10:12 | 显示全部楼层
在MCU电源引脚附近添加0.1μF陶瓷电容和10μF钽电容,降低电源噪声。
onlycook 发表于 2025-6-20 10:15 | 显示全部楼层
可能未处理UART错误标志如帧错误、噪声错误、溢出错误。
onlycook 发表于 2025-6-20 10:16 | 显示全部楼层
可能未处理UART错误标志如帧错误、噪声错误、溢出错误。
powerantone 发表于 2025-6-20 10:36 | 显示全部楼层
启用RCC_CR寄存器中的HSICAL和HSITRIM位,或使用HAL_RCCEx_PeriphCLKConfig函数配置时钟校准。
豌豆爹 发表于 2025-6-20 10:48 | 显示全部楼层
用外部晶振。
stormwind123 发表于 2025-6-20 11:02 | 显示全部楼层
手动校准,通过读取RCC_ICSCR寄存器中的HSITRIM值,结合实际波特率误差调整校准值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

200

主题

6534

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部