打印
[STM32F4]

关于stm32f407串口出野值的问题

[复制链接]
1272|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
akumon|  楼主 | 2016-8-15 16:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟最近在用stm32f407,用串口往外面发数,发现通过串口发出的数据时不时就会出现野值,而且数量不少,请问各位大侠,可知道是什么原因引起的,麻烦指点一下
沙发
mmuuss586| | 2016-8-15 17:31 | 只看该作者
出现其它值吗?
波特率不准吧,硬件不稳定也有可能

使用特权

评论回复
板凳
akumon|  楼主 | 2016-8-15 20:29 | 只看该作者
mmuuss586 发表于 2016-8-15 17:31
出现其它值吗?
波特率不准吧,硬件不稳定也有可能

我波特率设置115200,在定时器中断法,每秒发100次,开了DMA功能。然后用串口助手接数,最后在统一解析,只有识别到包头才能解析数据,结构解出来的数会有几个达到10的25次方的

使用特权

评论回复
地板
akumon|  楼主 | 2016-8-15 20:30 | 只看该作者
mmuuss586 发表于 2016-8-15 17:31
出现其它值吗?
波特率不准吧,硬件不稳定也有可能

波特率应该没事,但时其他原因不清楚,出错之后后面还会有正常的数据包

使用特权

评论回复
5
energyplants| | 2016-8-15 21:09 | 只看该作者
我估计是波特率太高了,再加上不准确造成的

使用特权

评论回复
6
yklstudent| | 2016-8-15 21:26 | 只看该作者
akumon 发表于 2016-8-15 20:29
我波特率设置115200,在定时器中断法,每秒发100次,开了DMA功能。然后用串口助手接数,最后在统一解析, ...

你的通信架构设计的就有问题吧

使用特权

评论回复
7
akumon|  楼主 | 2016-8-15 21:48 | 只看该作者
yklstudent 发表于 2016-8-15 21:26
你的通信架构设计的就有问题吧

能麻烦具体点吗?不理解什么意思

使用特权

评论回复
8
akumon|  楼主 | 2016-8-15 21:55 | 只看该作者
energyplants 发表于 2016-8-15 21:09
我估计是波特率太高了,再加上不准确造成的

我调低点看看

使用特权

评论回复
9
akumon|  楼主 | 2016-8-16 10:42 | 只看该作者
energyplants 发表于 2016-8-15 21:09
我估计是波特率太高了,再加上不准确造成的

大侠,我把波特率调到57600,还是会有野值。由于实际需要,实在没法再调低了,有没有什么其他方法

使用特权

评论回复
10
LOVE_ELEC| | 2016-8-16 10:55 | 只看该作者
是不是只是第一个字节是野值?要是只是第一个字节是野值的话,就是你没有在启动串口之前没有清除标志位造成的!

使用特权

评论回复
11
玄德| | 2016-8-16 11:03 | 只看该作者

估计是只管往DR里面塞数字,没有判断发送完成与否。

使用特权

评论回复
12
冰零分子| | 2016-8-16 11:39 | 只看该作者
不知道是不是开头结尾错误?检查一下TXE和TC两个标志位

使用特权

评论回复
13
icecut| | 2016-8-16 15:29 | 只看该作者
别用 dma 试试

使用特权

评论回复
14
akumon|  楼主 | 2016-8-16 17:06 | 只看该作者

不用dma,200Hz中断,100Hz发数来不及发完

使用特权

评论回复
15
akumon|  楼主 | 2016-8-16 17:08 | 只看该作者
LOVE_ELEC 发表于 2016-8-16 10:55
是不是只是第一个字节是野值?要是只是第一个字节是野值的话,就是你没有在启动串口之前没有清除标志位造成 ...

在发送前清过了,而且野值经常是发了一段时间后出现

使用特权

评论回复
16
akumon|  楼主 | 2016-8-16 17:10 | 只看该作者

因为中断里还要运行其他内容

使用特权

评论回复
17
akumon|  楼主 | 2016-8-16 17:12 | 只看该作者
玄德 发表于 2016-8-16 11:03
估计是只管往DR里面塞数字,没有判断发送完成与否。

每次发前都会判断一下发送完成标志,如果有就清掉才发的

使用特权

评论回复
18
icecut| | 2016-8-16 18:09 | 只看该作者
akumon 发表于 2016-8-16 17:06
不用dma,200Hz中断,100Hz发数来不及发完

115200,是 bps,11520byte,每秒发100次不用 dma 绰绰有余

使用特权

评论回复
19
玄德| | 2016-8-16 19:13 | 只看该作者
akumon 发表于 2016-8-16 17:12
每次发前都会判断一下发送完成标志,如果有就清掉才发的


那就查硬件。

另外,前面人都说了,单独测试串口。
先抛开其他任务。
问题总要解决,别总拿别的事挡住自己。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

24

帖子

1

粉丝