串口DMA双缓冲接收外部数据例程分享

2019-08-19 18:20发布

今天调试了下如题的程序,将串口接收到的数据通过DMA方式搬移到内存缓冲区中
并且建立双缓冲区以避免数据覆盖丢失

在串口调试工具的测试下,1ms循环发送500字节的数据不会丢失

目前未测试的内容是将两个缓冲区的内容写入SD卡,可能存在的问题是在存储一个
缓冲区的内容时不能保证另一个缓冲区不会溢出。。。。。

程序可加入的内容是用定时器超时及时将缓冲区的内容存储到sd卡中,以防止外部
部数据传输中止导致DMA传输完成中断不触发
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
战舰水手
1楼-- · 2019-08-21 07:14
开源小王子 发表于 2016-8-14 12:44
楼主。你共享的这个没有储存的代码呀,能不能共享下,我正在学习,新手不太会

你要存到哪里?
开源小王子
2楼-- · 2019-08-21 12:07
战舰水手 发表于 2016-8-18 17:38
你要存到哪里?

存到SD卡,用FATFS来做
战舰水手
3楼-- · 2019-08-21 12:21
开源小王子 发表于 2016-8-18 21:29
存到SD卡,用FATFS来做

我的方式:sdio+DMA,然后把相关的初始化和读写函数放到fatfs里面去,f_open  f_write  f_close

你也可以用原子的spi例程,fatfs他也做好了,直接把你要写的数据通过f_open  f_write  f_close写进去就可以
战舰水手
4楼-- · 2019-08-21 14:08
 精彩回答 2  元偷偷看……
开源小王子
5楼-- · 2019-08-21 15:28
战舰水手 发表于 2016-8-18 22:01
http://www.openedv.com/thread-82002-1-1.html我分享了我刚学这个时候的资料和例程,sd卡用的原子的spi ...

好的,谢谢,先学习着
splendid
6楼-- · 2019-08-21 20:29
楼主,能不能帮我配置一下F407的DMA接收,我怎么弄都不对,你上传的是103,正点资料里面也只有发送示例没有接受的,我按照你的103的配置更改后也不行,求助!

一周热门 更多>