通过串口dma发送数据,接收混乱

2019-08-13 21:41发布

我通过串口进行两个f1板子之间的通信,发送的是一个数据包,发送用的dma,接受也是用的dma,并且接收使用的是dma中断来接收数据。发送的数据通过串口打很完美,没有出现任何错误数据。然后我通过usart_cmddma 这个指令接收数据,必须把缓存区弄成200才可以每次都接收到相关包头的数据,但是接收到了相关包头的数据,但是还是会出现混乱的数据。请问大伙有遇到过这种情况的吗 接收到的数据内容 接收到的数据内容 发送的数据 发送的数据 发送的数据包 发送的数据包


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
穿梭者
1楼-- · 2019-08-13 23:42
发现程序其实并没有错误只是没有供地!!!如果以后由他人看见了这篇帖子先检测有没有供地吧
正点原子
2楼-- · 2019-08-14 03:24
检查你的DMA接收代码,是否写好了,其实发送可以不用DMA。
穿梭者
3楼-- · 2019-08-14 04:40
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-08-14 05:28
穿梭者 发表于 2017-9-22 11:58
因为发送过来的数据是float,所以用了一个联合体,然后dma接收中断给个标志位,最后在while循环里面读取 ...

你先简化代码,纯粹验证下功能是否正常吧
我在论坛发过串口的MODBUS例程,通信正常,关键你处理数据要精简。
穿梭者
5楼-- · 2019-08-14 08:43
正点原子 发表于 2017-9-22 22:39
你先简化代码,纯粹验证下功能是否正常吧
我在论坛发过串口的MODBUS例程,通信正常,关键你处理数据要精 ...

我通过修改波特率,使得发送的数据正确率高了很多,然后发现之前数据组合前后顺序倒了。现在的问题在于读取的数据是通过串口发送的过来的u32型,使用联合体,也没法变成float,现在还在找方法,感谢原子哥的回复了

一周热门 更多>