硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3096|回复: 4
收起左侧

[技术讨论] F103的芯片 串口发送数据丢包,高手指教

[复制链接]

25

主题

58

回帖

133

积分

初级会员

积分
133
发表于 2020-3-23 18:36:01 | 显示全部楼层 |阅读模式
本帖最后由 wxqhit 于 2020-3-23 18:37 编辑

版主,这两天在调试一个小的信号板给F429的主板传输数据。

小板的mcu是F103的32F103C8T6,这个芯片好像官方一直用它来做stdemo的stlink功能

我现在发现 每次发送9个字节的数据,会运行一段时间,丢掉一个数,而且是特定的第四个字节数据。

如何解决。

如下图
0x01+3bytes +0x02 +3bytes+0x55     

0x01 后面是第一组数据,0x02后面是第二组数据;0x55是结束符

现在发现 就是第四个字节就穿丢了。

这个现象也不是每次,但是会发生。2~3%的概率。

哪位指点一下谢谢。
QQ图片20200323183159.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2020-3-23 19:20:28 | 显示全部楼层
直接DR寄存器存入数据,然后等待TC发送完成标志,这种最简单的方式来测试即可,容易排查问题。
回复

使用道具 举报

5

主题

62

回帖

77

积分

初级会员

积分
77
发表于 2020-3-23 20:32:40 | 显示全部楼层
115200波特率 速度挺快的了,尽量用DMA发送和接收,如果用查询方式 或中断方式  很容易让其他的高优先级任务或优先级高的中断打断,   我不清楚的程序架构是什么样,只是这样假设
回复

使用道具 举报

6

主题

680

回帖

698

积分

金牌会员

积分
698
QQ
发表于 2020-3-24 09:19:58 | 显示全部楼层
芯片没那么弱,多半你自己程序的锅
回复

使用道具 举报

25

主题

58

回帖

133

积分

初级会员

积分
133
 楼主| 发表于 2020-3-24 09:28:05 | 显示全部楼层
本帖最后由 wxqhit 于 2020-3-24 09:52 编辑

谢谢@eric2013,谢谢@dghwjh 的热心回答

我之前是用的usart1中断处理模式。
使能uasrt1的接收中断

周期性的SPI采集AD数据,完成每一次的采集后,我会使能usart1的发送中断。通过示波器发现,9字节的波形长度有跳变。应该是丢数据了。

改用Usart的DMA TX 功能,一次性的交给Dma来完成。从波形上看,9bytes的串行数据长度很稳定。
如下图。

所以我现在觉得应该该是之前串口软件有bug,丢数据。希望我的猜错是对的。


IMG_20200324_092300.jpg
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-13 19:12 , Processed in 0.521971 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表