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

2019-08-19 18:20发布

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

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

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

程序可加入的内容是用定时器超时及时将缓冲区的内容存储到sd卡中,以防止外部
部数据传输中止导致DMA传输完成中断不触发
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
战舰水手
2019-08-20 06:10
回复【2楼】ricefat:
---------------------------------
已经做好了。测试每1ms发送500*32byte不丢数据。
我把串口的双接收缓冲内容都先放到同一个缓冲区中,这个缓冲区到达一定字节数一次写入SD卡,这样是不是有点浪费内存,是不是
一个缓冲区满之后就直接在传输完成中断里面把数据一次写入SD卡也能达到效果?

还有一点想请教老师一下:如果我想间断性得把SD卡里面的数据通过GPRS发送出去,是不是上操作系统比较好

一周热门 更多>