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

STM32 ADC DMA数据采集问题?

缺省2016 2018-04-09 浏览量:1466
adc采用DMA通道循环模式传输到内存变量空间。如果其他函数不停的读取存储到内存空间的ADC值,而DMA不停的搬运转换后的ADC到内存空间,在读出和写入过程不会发生冲突吗?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个可以有一些机制杜绝冲突,比如读写锁,或者有严格的同步机制,大家协调一致即可。

    此外还要看读到不正确数据的影响,综合考虑合适的方案。

    还有可能这个内存空间仅仅是映射的,实际上读取的是直接设备上的数据,这样就可以认为一直是正确的(没有写入了,数据是传感器内部提供)

    • 发布于 2018-04-09
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :跟国产器件组向原厂申请。前台文件第50页有物料介绍。 回复

其他答案 数量:10
  • 读取要发生在转换完成之后,可以查询DMA的传输完成标志,或者传输数据数量寄存器等 来同步
    • 发布于2018-04-09
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :LTC3622EMSE-2#PBF,Analog Devices Inc.,供参考 回复

  • 这个只存在数据冲突问题,也就是数据有效性问题,对于数据传输过程应该是没有什么影响。
    • 发布于2018-04-09
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :根据丝印无法确认具体型号。 回复

  • 不会冲突的,AHB总线上的模块分主机和从机,ram是从机模块,CPU和DMA是主机模块,两个主机同时请求RAM时优先级高的获得访问权,优先级低的等待,这个是内核解决的问题,软件无需处理。
    • 发布于2018-04-09
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :https://www.ti.com.cn/zh-cn/support-quality/environmental-info/logo-product-labeling.html 回复

  • 很大可能会,你可以加上信号量来处理,避免这种情况发生
    • 发布于2018-04-09
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :两个不同系列的产品,电压电流不一样,见图 回复

  • 这应该跟优先级有关,优先级高的会占用
    • 发布于2018-04-09
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :触点镀层不同。 1-776180-1 镀金 776180-1 镀锡 回复

  • DMA的操作 不受CPU的控制,所以,这时会受到影响的 。

    可以通过事件触发DMA,

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

  • 读取和写入本身就不冲突,使用DMA之后,写入数据是外设跟内存之间有一条直接的通道,不经过CPU,读取这个数据才是CPU控制的。只是什么时候取这个数据是需要考虑的
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 你应该是读取到ADC后,再使用DAM进行搬移,如果ADC还没有转换完成 ,你DMA搬移的就是个错误的数据了
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以通过DMA的中断试试,中断处理时会有一个嵌套,不会丢数据
    • 发布于2018-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 读取和写入的延时导致这些数据不是实时的,但是延时不会很大,一般的应用没什么问题的,不要用中断,用了中断更难处理。

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

相关问题

问题达人换一批

STM32 ADC DMA数据采集问题?