[STM32F4] F407通过串口转485给F070发送数据,出错

[复制链接]
 楼主| 地瓜patch 发表于 2025-7-18 17:47 | 显示全部楼层 |阅读模式
uart3,波特率115200,发送ASCII码,一组报文7个字符包括尾部的回车换行。每20ms发一组报文。HAL_UART_Transmit(&huart3,(uint8_t *)send_value,7,100);
监视串口发送数据,一千条报文中总会出一包出错。
比如正常报文是“SC300/r/n”,出错报文为“SC3”或“SC30”

发送间隔改为100ms,还是会出现这种错误。




请教高手
公羊子丹 发表于 2025-7-25 07:26 | 显示全部楼层
这种漏字节很像是 485 驱动芯片的发送/接收切换没切好,检查下 DE/RE 控制。
周半梅 发表于 2025-7-25 07:27 | 显示全部楼层
你是半双工吗?485 发完后没延时就切换方向,数据尾巴可能没发完。
帛灿灿 发表于 2025-7-25 07:28 | 显示全部楼层
HAL_UART_Transmit 会阻塞到发完,但有时候 DMA 还没清,试试加个延时再切 DE。
童雨竹 发表于 2025-7-25 07:29 | 显示全部楼层
把波形抓出来看看,确认 TX 线是不是真的发了 7 个字节。
万图 发表于 2025-7-25 07:30 | 显示全部楼层
也有可能是总线干扰,485 线上有反射或接地不良也会丢字节。
Wordsworth 发表于 2025-7-25 07:30 | 显示全部楼层
试试用环形缓冲或 DMA 连续发,看会不会稳定些。
Bblythe 发表于 2025-7-25 07:31 | 显示全部楼层
把波特率调低一点试试,有时高波特率对线缆质量要求高。
Pulitzer 发表于 2025-7-25 07:32 | 显示全部楼层
你尾部的 \r\n 是不是字符串里没放对?最好用十六进制监视下发了啥。
Uriah 发表于 2025-7-25 07:33 | 显示全部楼层
F070 那边接收缓冲够不够?溢出的话也可能导致短帧。
Clyde011 发表于 2025-7-25 07:34 | 显示全部楼层
要不先换成普通串口直连测试,排除是不是 485 硬件的问题。
wang6623 发表于 2025-7-28 14:17 | 显示全部楼层
若前一次发送未完成(硬件仍在发送),就调用HAL_UART_Transmit,可能导致数据覆盖或发送不完整。
stormwind123 发表于 2025-7-28 15:13 | 显示全部楼层
中断冲突或优先级问题吧。。
elephant00 发表于 2025-7-28 15:17 | 显示全部楼层
HAL 库版本或配置问题。某些 HAL 库版本存在 UART 发送的 Bug,需检查更新。
duo点 发表于 2025-7-28 15:18 | 显示全部楼层
降低 UART 中断优先级。
onlycook 发表于 2025-7-28 15:18 | 显示全部楼层
增加 HAL_UART_Transmit 超时时间。
probedog 发表于 2025-7-28 16:13 | 显示全部楼层
UART3 的发送中断可能被其他高优先级中断抢占,导致发送未完成。
classroom 发表于 2025-7-28 18:14 | 显示全部楼层
如果用 DMA,可能 DMA 中断未正确处理。
flycamelaaa 发表于 2025-7-28 19:14 | 显示全部楼层
HAL_UART_Transmit() 的超时参数可能不足,尤其在系统负载较高时。
powerantone 发表于 2025-7-28 20:15 | 显示全部楼层
RS485 半双工通信中,方向控制信号切换延迟可能导致数据丢失。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

1800

主题

14824

帖子

29

粉丝
个人签名:出一块TI-PLABS-AMP-EVM

1800

主题

14824

帖子

29

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