串口中断接收 DMA发送

2019-07-20 18:42发布

最近要接收一个字节比较大的数据包,本想以以下方法实现:

使用F407串口中断接收至两个buf。一个buf0接收中断数据,数据存满后将通过flag使数据存入另一个buf1,同时将buf0数据通过其他串口进行DMA发送(波特率大于接收串口);
buf1存满后亦是如此循环,类似于DMA双缓冲。


现在一直在做这个实验,但是数据发不出来,请问论坛大神这种想法是不是本身就不能实现?

谢谢指点!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-20 21:10
可以实现的,不过你先实现1个buf dma接收数据
soEZ
2楼-- · 2019-07-21 00:17
正点原子 发表于 2016-11-20 19:06
可以实现的,不过你先实现1个buf dma接收数据

谢谢原子哥,的回答!

这里我的原计划并没有用dma进行接收,仍使用的是串口中断接收。在中断接收完成后,再将内部sram的数据通过dma串口发送至另一块开发板。这个是原计划。缺点是本地的SRAM占用比较大。这种方法已经实现。

为了避免传大数据(比如BIN文件)时占用过多内部SRAM,现在仍是用串口中断接收。但接收存在两个较小buf里,小buf存满再用串口DMA发送。

但是现在发现貌似DMA发送的速度要小于我串口中断写入数据的速度,稍后奉上截图和代码。

难道原子哥的意思是DMA串口接收再DMA发送么?

再次谢谢原子哥的回答~

这是我传的128*8*2字节的数据,可以看到数据丢失比较严重。用老方法可以存而且不丢数据。C:UserssoEZDesktopQQ图片20161120192824.png
soEZ
3楼-- · 2019-07-21 01:51
 精彩回答 2  元偷偷看……
止天
4楼-- · 2019-07-21 03:29
方法没毛病  你两个串口各是多少
正点原子
5楼-- · 2019-07-21 03:45
 精彩回答 2  元偷偷看……
soEZ
6楼-- · 2019-07-21 06:39
止天 发表于 2016-11-21 08:58
方法没毛病  你两个串口各是多少

57600接收115200发送,xiexie~

一周热门 更多>