• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

还是ADC+DMA采集阵列数据,关于DMA中断的问题

沃尔夫斯堡的羊 2018-04-20 浏览量:1801

还是采集阵列传感数据,ADC+DMA,一行一行的扫描,扫完一行即通过ESP8266发送数据给上位机,在DMA中断里实现扫描行的切换以及DMA双缓冲,可是能采集到数据,但是在发送数据的时候,发出的数据行是乱的,比如阵列采集10行,发送的只是5行,1,3,5,7,9,而且行顺序还是乱的。。。DMA中断实现如下图,主程序发送部分如图,是不是双缓冲的问题?在切换通道的时候,需不需要禁掉ADC啊,切换后再重新使能ADC?

DMA双缓冲.pngDMA双缓冲1.png

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • DMA的接收是不是同一片区域,会不会是被新数据覆盖了
    • 发布于 2018-04-22
    • 举报
    • 评论 1
    • 0
    • 0
沃尔夫斯堡的羊 回复了 明有几时有:应该是这样的,加了一个判断标志,就好了,,,可是在程序里设计了双缓冲啊,为了就是避免这种情况,,可是还是碰到了。。。是不是要考虑双缓冲的读写时间? 回复

其他答案 数量:5
  • 不用禁掉的,加个顺序识别标记就好
    • 发布于2018-04-20
    • 举报
    • 评论 0
    • 0
    • 0

沃尔夫斯堡的羊 回复了 辛迪可乐 :哦哦,那实现双缓冲有问题么?为什么发出来的是5行,13579.。。是不是ADC在一直采集将前面的覆盖掉了?上一次采集到的数据还没发送完完,ADC已经又采完DMA又传完发送数据了。。。 回复

  • 你这里完成一次DMA接收发送之后最好把DMA的缓冲区清一下
    • 发布于2018-04-20
    • 举报
    • 评论 0
    • 0
    • 0

  • ADC的采样率是多少?是不是太快,而DMA中的数据还没有处理完全而又有新的数据了?

    可以先关了ADC,去传输一个固定的数据来确定是ADC还是DMA的问题。

    • 发布于2018-04-22
    • 举报
    • 评论 0
    • 0
    • 0

  • ADC在DMA传输完毕后才会重新采集,在这之前要将DMA缓存区的数据转移到内存中,不然会出现无法预料的错误。

    • 发布于2018-04-24
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

还是ADC+DMA采集阵列数据,关于DMA中断的问题