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

[复制链接]
 楼主| Henryko 发表于 2025-4-20 15:43 | 显示全部楼层 |阅读模式
上电后通过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 | 显示全部楼层
外设时钟使能,确认USART1DMA的时钟已正确使能(通过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 | 显示全部楼层
时钟频率与波特率匹配,检查系统时钟频率与波特率设置是否匹配,避免因波特率计算错误导致通信异常。

646326822dddbeb408.png
三生万物 发表于 2025-5-13 23:00 | 显示全部楼层
若使用中断方式接收数据,需确保中断处理函数高效且优先级合理,避免因中断处理延迟导致数据丢失。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

138

主题

2411

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部