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

2019-08-19 18:20发布

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

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

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

程序可加入的内容是用定时器超时及时将缓冲区的内容存储到sd卡中,以防止外部
部数据传输中止导致DMA传输完成中断不触发
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
ricefat
2019-08-20 06:36
回复【4楼】战舰水手:
---------------------------------
我的本意就是两个缓冲就够了,不需要额外SD卡缓冲。不过需要考虑SD卡的写入次数,双缓冲足够大或是额外加入SD写缓冲,相当于用空间换寿命。

我对操作系统不了解,只是知道操作系统基本上是把任务分时细化完成。如果只是间隔发送GPRS,用个定时器应该就够了。用串口DMA接收,DMA写SD卡,就是为了让CPU有时间来完成其他任务。

一周热门 更多>