打印
[STM32F1]

STM32f103采集两路信号DMA传输

[复制链接]
2126|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
5
金刚葫芦娃啊| | 2015-11-10 11:54 | 只看该作者
你还是没懂dma啊  这个不会丢点的   是你自己的理解问题   dma   就是adc转化完成就搬运到自己的存储器里   然后cpu访问dma就可以获取数据   我不懂你是怎么丢数据的  

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
wxhwdh + 1
6
wxhwdh|  楼主 | 2015-11-10 12:23 | 只看该作者
金刚葫芦娃啊 发表于 2015-11-10 11:54
你还是没懂dma啊  这个不会丢点的   是你自己的理解问题   dma   就是adc转化完成就搬运到自己的存储器里   ...

不是dma丢数据,而是dma传输和cpu处理的过程中,adc如果不采集信号就会造成丢失

使用特权

评论回复
7
wxhwdh|  楼主 | 2015-11-10 12:30 | 只看该作者
gmm2015 发表于 2015-11-10 10:37
打开DMA传输完成中断,在中断中立马把数据拿走存放到其他的地方。当然你的采样间隔时间不能太快了,否则CPU ...

是不是可以这样,adc设定为单次采集以后停止,然后dma,cpu处理,处理完然后再用adc采集,同时cpu输出结果

使用特权

评论回复
8
金刚葫芦娃啊| | 2015-11-10 14:42 | 只看该作者
wxhwdh 发表于 2015-11-10 12:23
不是dma丢数据,而是dma传输和cpu处理的过程中,adc如果不采集信号就会造成丢失 ...

肯定啊   采集跟cpu取dma数据没有很大联系  你停止采集肯定出问题啊   设置个中断或者什么的就行了啊   adc dma模式  他自己取回转化后的数据的

使用特权

评论回复
9
wxhwdh|  楼主 | 2015-11-11 19:16 | 只看该作者
金刚葫芦娃啊 发表于 2015-11-10 14:42
肯定啊   采集跟cpu取dma数据没有很大联系  你停止采集肯定出问题啊   设置个中断或者什么的就行了啊   a ...

哪里设置中断啊

使用特权

评论回复
10
金刚葫芦娃啊| | 2015-11-12 17:07 | 只看该作者
wxhwdh 发表于 2015-11-11 19:16
哪里设置中断啊

自己去看吧

使用特权

评论回复
11
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[]中的数据

使用特权

评论回复
12
android2| | 2015-11-14 17:07 | 只看该作者
当adc转化完成后,就存放在存储器里,cpu通过dma就可以获取数据

使用特权

评论回复
13
309030| | 2015-11-14 20:23 | 只看该作者
楼主可以找个采集两路信号DMA传输的例程来研究一下

使用特权

评论回复
14
逍遥李| | 2015-11-15 12:55 | 只看该作者
DMA速度极快的,而且你只是两路信号,边采集边计算,肯定会丢点,不过我不明白丢点有什么问题吗楼主?因为你处理速度就这么快,给你再多点你有用吗?所以楼主这个问题不需要考虑

使用特权

评论回复
15
米尔豪斯| | 2015-11-15 20:45 | 只看该作者
应该在传输完成后进入中断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

33

帖子

1

粉丝