[STM32F1] STM32f103采集两路信号DMA传输

[复制链接]
2470|15
 楼主| wxhwdh 发表于 2015-11-6 13:03 | 显示全部楼层 |阅读模式
我用STM32f103采集两路正弦波信号以及DMA传输,然后处理这两路信号(A/B),但是有一个问提,那就是我采集信号以后通过DMA放入内存,然后cpu处理运算,cpu处理的时候,adc如果不继续采集,那么就会丢失一定的信号点,如果adc继续采集,那么会覆盖没有来的及处理的内存数据,这个问题怎么解决?
renqinglei 发表于 2015-11-9 17:23 | 显示全部楼层
cpu单纯的计算速度很快的,丢也丢不了几个点

评分

参与人数 1威望 +1 收起 理由
wxhwdh + 1

查看全部评分

 楼主| wxhwdh 发表于 2015-11-9 20:53 | 显示全部楼层
那么假如,一次采集10个点,然后cpu处理完以后,输出一个电压,此时adc再采集,cpu处理再输出,那么从第一次输出到第二次输出,就相差一个采集和处理时间,这是否是合理的,我的主要问题就是,单片机进行数字处理的时候,是怎样的过程,就比如采集处理输出。三者的关系,同步还是有个时间差?
gmm2015 发表于 2015-11-10 10:37 | 显示全部楼层
打开DMA传输完成中断,在中断中立马把数据拿走存放到其他的地方。当然你的采样间隔时间不能太快了,否则CPU没时间处理数据

评分

参与人数 1威望 +1 收起 理由
wxhwdh + 1

查看全部评分

金刚葫芦娃啊 发表于 2015-11-10 11:54 | 显示全部楼层
你还是没懂dma啊  这个不会丢点的   是你自己的理解问题   dma   就是adc转化完成就搬运到自己的存储器里   然后cpu访问dma就可以获取数据   我不懂你是怎么丢数据的  

评分

参与人数 1威望 +1 收起 理由
wxhwdh + 1

查看全部评分

 楼主| wxhwdh 发表于 2015-11-10 12:23 | 显示全部楼层
金刚葫芦娃啊 发表于 2015-11-10 11:54
你还是没懂dma啊  这个不会丢点的   是你自己的理解问题   dma   就是adc转化完成就搬运到自己的存储器里   ...

不是dma丢数据,而是dma传输和cpu处理的过程中,adc如果不采集信号就会造成丢失
 楼主| wxhwdh 发表于 2015-11-10 12:30 | 显示全部楼层
gmm2015 发表于 2015-11-10 10:37
打开DMA传输完成中断,在中断中立马把数据拿走存放到其他的地方。当然你的采样间隔时间不能太快了,否则CPU ...

是不是可以这样,adc设定为单次采集以后停止,然后dma,cpu处理,处理完然后再用adc采集,同时cpu输出结果
金刚葫芦娃啊 发表于 2015-11-10 14:42 | 显示全部楼层
wxhwdh 发表于 2015-11-10 12:23
不是dma丢数据,而是dma传输和cpu处理的过程中,adc如果不采集信号就会造成丢失 ...

肯定啊   采集跟cpu取dma数据没有很大联系  你停止采集肯定出问题啊   设置个中断或者什么的就行了啊   adc dma模式  他自己取回转化后的数据的
 楼主| wxhwdh 发表于 2015-11-11 19:16 | 显示全部楼层
金刚葫芦娃啊 发表于 2015-11-10 14:42
肯定啊   采集跟cpu取dma数据没有很大联系  你停止采集肯定出问题啊   设置个中断或者什么的就行了啊   a ...

哪里设置中断啊
金刚葫芦娃啊 发表于 2015-11-12 17:07 | 显示全部楼层
wxhwdh 发表于 2015-11-11 19:16
哪里设置中断啊

自己去看吧
gmm2015 发表于 2015-11-14 13:54 | 显示全部楼层
wxhwdh 发表于 2015-11-10 12:30
是不是可以这样,adc设定为单次采集以后停止,然后dma,cpu处理,处理完然后再用adc采集,同时cpu输出结 ...

1、ADC数据用DMA传输,数据存储在A[]; 采用单次
2、传输完成后进入中断,立马启动ADC的下次转换,然后将A[]的数据转移到更大的B[]处
3、主循环中处理B[]中的数据
android2 发表于 2015-11-14 17:07 | 显示全部楼层
当adc转化完成后,就存放在存储器里,cpu通过dma就可以获取数据
309030 发表于 2015-11-14 20:23 | 显示全部楼层
楼主可以找个采集两路信号DMA传输的例程来研究一下
逍遥李 发表于 2015-11-15 12:55 | 显示全部楼层
DMA速度极快的,而且你只是两路信号,边采集边计算,肯定会丢点,不过我不明白丢点有什么问题吗楼主?因为你处理速度就这么快,给你再多点你有用吗?所以楼主这个问题不需要考虑
米尔豪斯 发表于 2015-11-15 20:45 | 显示全部楼层
应该在传输完成后进入中断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

33

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部