Henryko 发表于 2025-4-20 15:43

STM32F103串口发送数据总是丢帧怎么办?

上电后通过USART1发送连续数据包,接收端偶尔漏掉前几个字节。尝试降低波特率和调整DMA配置无效,硬件流控已关闭,示波器看波形电平正常。有没有可能和时钟树配置有关?

回复就哭哭 发表于 2025-4-30 23:41

电源不稳定或地线连接不良可能会导致传感器的输出异常,影响速度反馈。

stormwind123 发表于 2025-5-6 13:15

串口引脚连接错误?

flycamelaaa 发表于 2025-5-6 13:16

可能是波特率不匹配

powerantone 发表于 2025-5-6 13:16

波特率、数据位、停止位等参数配置错误。

stormwind123 发表于 2025-5-6 13:16

发送缓冲区溢出,在数据未发送完成前写入新数据,导致丢帧。

probedog 发表于 2025-5-6 13:17

DMA配置错误或缓冲区被意外修改。

jcky001 发表于 2025-5-6 13:17

中断优先级冲突

cr315 发表于 2025-5-6 13:18

用非阻塞发送或DMA,避免缓冲区溢出。

一秒落纱 发表于 2025-5-13 13:47

STM32F103的时钟系统对串口性能至关重要。若时钟配置不当,可能导致串口通信不稳定,出现丢帧现象。

暖了夏天蓝了海 发表于 2025-5-13 14:30

系统时钟源稳定性,确认是否使用外部高速晶振(HSE)作为PLL输入源,并确保PLL倍频和分频配置正确。

夜阑风雨 发表于 2025-5-13 15:02

外设时钟使能,确认USART1和DMA的时钟已正确使能(通过RCC_APB2PeriphClockCmd函数)。

淡漠安然 发表于 2025-5-13 16:32

使用STM32CubeMX工具生成时钟配置代码,确保时钟树配置正确。在初始化代码中添加时钟配置验证逻辑,确保时钟稳定后再启动串口通信。

江河千里 发表于 2025-5-13 17:00

直接调用USART_SendData函数连续发送数据时,若未等待发送完成标志位,可能导致缓冲区溢出或数据覆盖

冰春彩落下 发表于 2025-5-13 19:00

在每次调用USART_SendData后,通过USART_GetFlagStatus检查USART_FLAG_TC(发送完成标志位),确保数据已发送完毕再发送下一字节。

远山寻你 发表于 2025-5-13 19:52

通过DMA将数据从内存搬运到串口发送寄存器,减少CPU干预,提高传输效率。需确保DMA配置正确,包括源地址、目标地址、传输长度等,并启用DMA中断以处理传输完成事件。

别乱了阵脚 发表于 2025-5-13 21:00

连续发送时,若发送缓冲区未清空,新数据会覆盖旧数据,导致丢帧

光辉梦境 发表于 2025-5-13 22:00

时钟频率与波特率匹配,检查系统时钟频率与波特率设置是否匹配,避免因波特率计算错误导致通信异常。

三生万物 发表于 2025-5-13 23:00

若使用中断方式接收数据,需确保中断处理函数高效且优先级合理,避免因中断处理延迟导致数据丢失。
页: [1]
查看完整版本: STM32F103串口发送数据总是丢帧怎么办?