GD32F407VET6芯片 串口波特率问题?
本帖最后由 sunxongtao 于 2025-1-3 19:32 编辑现在使用的是GD32F407VET6芯片替代STM32F407VET6,GD32IDLE_receive_interrupt例程,使用SP3485芯片,485通信,晶振25M,波特率设置115200时,发送数据正常,接收数据错误,有时还收不到数据,当波特率设置9600时,接收发送都正常了,有碰到这个问题的吗?都是怎样解决的呀,STM的没有这个问题。
可能是硬件连接问题 检查通信协议 用示波器检查波形有无异常抖动或干扰。 可能是引脚连接有误 降低波特率 检查起始位、数据位、停止位的波形是否符合UART协议要求。
晶振电路连接是否稳定 波特率配置有误? 检查GD32F407VET6的UART中断配置是否正确,包括接收中断、发送中断等。 检查数据位、停止位、校验位等配置是否与通信对方一致。 无数据格式不匹配 检查晶振的启动电容是否匹配,且电容值无偏差。 检查是否存在外部干扰问题 检查在接收数据过程中有没有发生数据溢出或丢失的情况。 检查GD32F407VET6的UART接收中断处理逻辑是否正确,包括数据接收、存储、处理等。 检查通信线路是否存在外部干扰源,如电磁干扰、电源噪声等。 原来使用STM32F407VET6没有这问题,在网上查说是这个芯片的硬件起始位检测的问题,现在还没解决这个问题。 学习一下,提升自己 usart_oversample_config(USART_485, USART_OVSMOD_8);
降低串口过采样试试
页:
[1]