OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2360|回复: 2

ADC采集速度和读取速度那个快

[复制链接]

6

主题

8

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-9-3
在线时间
6 小时
发表于 2019-12-25 09:54:59 | 显示全部楼层 |阅读模式
  1. void Get_Adc_Average(u16 times)
  2. {
  3.         u16 temp_val[2]={0,0};
  4.         u8 t;
  5.         for(t=0;t<times;t++)
  6.         {               
  7.                 temp_val[0]+=ADC_ConvertedValue[0];
  8.                 temp_val[1]+=ADC_ConvertedValue[1];
  9.                 delay_ms(5);                                                                                                                                                                                                //读取速度和采集速度,加延时可以保证不会读到同一个数                                                                                                                                                                                                               
  10.         }
  11.         ADC_ConvertedLocalValue[0] = temp_val[0]/times;
  12.         ADC_ConvertedLocalValue[1] = temp_val[1]/times;
  13. }          
复制代码
开启ADC1采集两个通道,配置为12M采集速度,开启DMA传输,每次采完DMA传输到ADC_ConvertedValue,假如我要读取某一时刻的ADC_ConvertedValue值,为了消除误差,读取10个ADC_ConvertedValue然后取平均。假如我就在一个for循环里连续读10次,如上述代码,假如不加delay_ms(5)函数延时,那么是读取速度快还是采集速度快?不加延时会不会连续几次读取的都是同一个值?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

211

帖子

0

精华

高级会员

Rank: 4

积分
833
金钱
833
注册时间
2019-12-17
在线时间
157 小时
发表于 2019-12-25 10:31:08 | 显示全部楼层
本帖最后由 y284858 于 2019-12-25 10:32 编辑

读取的速度快,如果你不加延时读到的数据很大概率是一样的。已经使用DMA了建议开启DMA循环搬运模式,搬运到10个元素的数组,后面直接读数组所有元素取平均值。
注意最开始的时候还没有采集10个数据时,数组中有部分数据是无效数据。

回复 支持 反对

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-12-25 10:21:21 | 显示全部楼层

回帖奖励 +2 金钱

都DMA了 直接去数组里面的10个平均不就行了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-21 02:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表