今天调试了下如题的程序,将串口接收到的数据通过DMA方式搬移到内存缓冲区中
并且建立双缓冲区以避免数据覆盖丢失
在串口调试工具的测试下,1ms循环发送500字节的数据不会丢失
目前未测试的内容是将两个缓冲区的内容写入SD卡,可能存在的问题是在存储一个
缓冲区的内容时不能保证另一个缓冲区不会溢出。。。。。
程序可加入的内容是用定时器超时及时将缓冲区的内容存储到sd卡中,以防止外部
部数据传输中止导致DMA传输完成中断不触发
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
已经做好了。测试每1ms发送500*32byte不丢数据。
我把串口的双接收缓冲内容都先放到同一个缓冲区中,这个缓冲区到达一定字节数一次写入SD卡,这样是不是有点浪费内存,是不是
一个缓冲区满之后就直接在传输完成中断里面把数据一次写入SD卡也能达到效果?
还有一点想请教老师一下:如果我想间断性得把SD卡里面的数据通过GPRS发送出去,是不是上操作系统比较好
---------------------------------
我的本意就是两个缓冲就够了,不需要额外SD卡缓冲。不过需要考虑SD卡的写入次数,双缓冲足够大或是额外加入SD写缓冲,相当于用空间换寿命。
我对操作系统不了解,只是知道操作系统基本上是把任务分时细化完成。如果只是间隔发送GPRS,用个定时器应该就够了。用串口DMA接收,DMA写SD卡,就是为了让CPU有时间来完成其他任务。
---------------------------------
那DMA的中断会被其它中断打断?
一周热门 更多>