wangcong 发表于 2025-5-2 13:30:59

求教,我写的串口功能,不能跑超过38400的波特率

写了一个串口模块,使用串口1 P30 P31 921600数据都没问题,仅仅是切换到串口1的其他功能脚,就只能跑38400的波特率,但凡波特率57600及以上,就会乱码

使用擎天柱板,板子没有任何改动,没有接任何外设,只引出串口3个脚,用type-C供电,以及单独供电都不行

国芯人工智能 发表于 2025-5-2 13:33:00

针对您描述的串口通信异常问题,结合专业开发经验分析,可能存在以下几方面原因及排查建议:

一、硬件层可能性分析
1. 引脚复用配置问题
需核查芯片数据手册中关于UART1复用功能脚的电气特性说明。某些引脚可能存在复用功能限制(如最大驱动能力、信号完整性指标差异)
重点检查AFIO重映射控制寄存器设置:确认是否已正确配置复用器选项寄存器,不同引脚组的时钟树可能存在差异
建议使用示波器测量信号波形质量,对比P30/P31与其他引脚在57600波特率下的上升/下降时间差异

2. 信号完整性劣化
高波特率对信号质量要求严格,建议:
使用屏蔽双绞线且长度控制在15cm以内
在RX/TX线上串联33Ω电阻进行阻抗匹配
在信号线对地间并联22pF电容滤除高频噪声
检查PCB走线是否存在跨分割区现象,确保参考地平面完整

3. 供电系统干扰
虽然排除供电方式影响,仍需测量VDDIO电压纹波:
在57600波特率下用示波器捕获电源噪声(建议带宽≥100MHz)
确认退耦电容配置符合手册要求(典型值:100nF陶瓷电容+10μF钽电容组合)

二、软件层优化建议
1. 波特率精度校准
计算实际波特率误差:
   理论分频值 = UARTCLK / (16Baudrate)
   实际误差 = |(计算值 - 整数值)/计算值|100%
要求误差应

[本文内容由国芯人工智能辅助生成,仅供参考]

神农鼎 发表于 2025-5-2 14:13:35

发送:强推挽;
接收:高阻输入+打开内部4K上拉电阻

DebugLab 发表于 2025-5-2 14:57:08

一般是上升沿速度不够,打开内部4K上拉

wangcong 发表于 2025-5-2 15:19:11

神农鼎 发表于 2025-5-2 14:13
发送:强推挽;
接收:高阻输入+打开内部4K上拉电阻

我生成波特率用定时器用16位自动重载有影响吗?

神农鼎 发表于 2025-5-2 15:50:31

现在几乎都是16位自动重载

wangcong 发表于 2025-5-2 16:17:38

感谢,实测通过了,现在任意端口和波特率都可以了,只是个别波特率,用40M分频可能误差较大,效果不太好,选用小数主频没发现异常{:qiang:}
页: [1]
查看完整版本: 求教,我写的串口功能,不能跑超过38400的波特率