公羊子丹 发表于 2025-6-20 07:17

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

想省个晶振结果串口就不准,发出去上位机经常接收乱码。

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值,结合实际波特率误差调整校准值。
页: [1]
查看完整版本: L0用内部RC跑UART时串口老出错