打印
[STM32F4]

STM32F429ZI波特滤高于9600收不到正确数据

[复制链接]
255|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lilaiju|  楼主 | 2025-4-5 22:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F429ZI只有在波特率9600和4800的情况下,终端才会接收到UART5数据,对于更高的波特率,我们会得到垃圾数据。可能是什么问题?
系统时钟PLL_HSE
HSE 连接为 12MHz
system_stm32f4xx.c中HSE_VALUE设置为12000000 & SystemCoreClock = 1800000000
HCLK = 180MHz
PCLK1 = 45MHz
PLLM = 12;
PLLN = 360;
PLLP = RCC_PLLP_DIV2;
PLLQ = 4;
波特率寄存器也经过验证,并且该值与计算结果匹配。


使用特权

评论回复
沙发
公羊子丹| | 2025-4-6 07:36 | 只看该作者
我之前在F4上也碰到过类似问题,高波特率下收乱码,后来发现是串口的时钟源有问题,建议检查一下UART5用的时钟是不是跟主频不一致。

使用特权

评论回复
板凳
周半梅| | 2025-4-6 07:37 | 只看该作者
你用的终端是啥?有些串口终端在高波特率下不稳定,换个终端试试看,比如Tera Term或者RealTerm。

使用特权

评论回复
地板
帛灿灿| | 2025-4-6 07:39 | 只看该作者
HCLK到180MHz的时候,USART的采样精度可能也会受影响,可以试试稍微降低主频,比如到168MHz,看看还有没有问题。

使用特权

评论回复
5
童雨竹| | 2025-4-6 07:40 | 只看该作者
我有点好奇,你是直接用HAL库配置的UART,还是裸写寄存器?有时候HAL默认的一些oversampling设置可能会出问题。

使用特权

评论回复
6
万图| | 2025-4-6 07:41 | 只看该作者
会不会是TX引脚没有加下拉或上下拉?高波特率下对电平的干扰比较敏感,尤其是长线或飞线的情况。

使用特权

评论回复
7
Wordsworth| | 2025-4-6 07:42 | 只看该作者
我建议你试试USART1或USART2那几个挂在APB2的串口,看高波特率下有没有一样的问题,可能跟UART5本身的时钟来源有关。

使用特权

评论回复
8
Bblythe| | 2025-4-6 07:44 | 只看该作者
SystemCoreClock = 1800000000?是不是你多写了个0?1800MHz的话MCU早烧了

使用特权

评论回复
9
Pulitzer| | 2025-4-6 07:45 | 只看该作者
我以前用12MHz HSE的时候也调过F4,PLL倍频高的时候波特率精度就特别关键了,看看USART_BRR值是不是精确匹配的。

使用特权

评论回复
10
Uriah| | 2025-4-6 07:46 | 只看该作者
看着你配置PLL参数都挺标准的,可能可以试试把UART5的OverSampling调成8位试试看,应该能改善高波特率下的稳定性。

使用特权

评论回复
11
Clyde011| | 2025-4-6 07:48 | 只看该作者
感觉问题很像时钟或者采样偏差导致的,试试看用STM32CubeMX重新生成一份配置代码,对比一下初始化流程有没有遗漏。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

7

帖子

0

粉丝