OpenEdv-开源电子网

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

ADC分频和采样周期是什么关系?和延时函数有关系没有?

[复制链接]

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2014-9-24 14:51:33 | 显示全部楼层 |阅读模式
5金钱
前面初始化ADC:RCC_ADCCLKConfig(RCC_PCLK2_Div8);
后面设置这个函数:ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_55Cycles5);
问题1:8分频的9MHz和后面的55.5什么关系?我看到55.5+12.5之类,不知道什么意思。
问题2:这两个函数和延时控制采样频率有关系吗,我设置每延时100ms 执行adc采样一次。

最佳答案

查看完整内容[请看2#楼]

这个Cycle是ADC的时钟频率的。 ADC时钟频率是你自己设置的,具体看<STM32参考手册>
小小蜗牛
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-9-24 14:51:34 | 显示全部楼层
这个Cycle是ADC的时钟频率的。
ADC时钟频率是你自己设置的,具体看<STM32参考手册>
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2014-9-24 15:07:20 | 显示全部楼层
55.5+12.5=68个周期,每个周期是1/9微秒。这个68是什么?
小小蜗牛
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2014-9-25 08:36:12 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
都看了,不太明白。我要采集50Hz正弦波,每个20ms的周期内采集100次,怎么设置分频和cycle呢?和我的延时有没有关系呢,我感觉一个延时采集一次,例如20ms/100延时一次,是不是就能达到目的,哪还要前面的adc的分频和cycle设置55.5之类有什么用,搞不懂
小小蜗牛
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-9-25 09:11:50 | 显示全部楼层
用DMA的循环模式即可,ADC只负责采样,设置好采样间隔即可。
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2014-9-25 09:30:38 | 显示全部楼层
回复【5楼】ricefat:
---------------------------------
采样间隔就是通过在一个任务里写个延时吗?那那个8分频9MHz,还有55.5随便写了吧
小小蜗牛
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-9-25 15:27:10 | 显示全部楼层
回复【6楼】jiutianshenjian:
---------------------------------
如果要求间隔比较精确,可以用定时器触发ADC,DMA传送数据
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2014-9-25 16:44:14 | 显示全部楼层
回复【7楼】ricefat:
---------------------------------
在μcos中,主要是需要跑很多任务,显示市电输入和6个三相交流电压电流输出,dac输出用户输入的几个电参数,同时系统还需要好多其他的任务,怎么去协调这些任务,我主要负责adc和dac这些。要保证不能出现老半天被别的任务抢占,adc采集或是哪个一直不执行的情况。
小小蜗牛
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-9-26 15:11:18 | 显示全部楼层
回复【8楼】jiutianshenjian:
---------------------------------
我不懂操作系统,但是我知道操作系统本身就不是实时的。如果你的系统实时性要求这么高,将每次采样点让操作系统去调度本身就是不对的。用定时器触发AD首先可以保证每次采样间隔的一致性,其次通过操作系统开关定时器就可以控制AD过程的启停。
个人认为你过分的依赖于操作系统而忽略了STM32本身的硬件特性,而且操作系统应该也不是这么用的。
比如我说的定时器触发ADC,DMA传输数据,这两个硬件设计本身就是要减少重复操作过程对于CPU的依赖,而你反而将其完全交给操作系统,浪费了大量的时间。

回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2014-10-14 09:40:31 | 显示全部楼层
回复【9楼】ricefat:
---------------------------------
感觉很有道理,定时器触发还不会。看哪里资料呢?
小小蜗牛
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
 楼主| 发表于 2014-10-16 10:27:49 | 显示全部楼层
回复【7楼】ricefat:
---------------------------------
请问定时器触发ADC,能和DMA共存不?多通道循环采集,老大的意思是不用DMA,定时器中断会影响DMA。
小小蜗牛
回复

使用道具 举报

164

主题

1230

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2014-5-21
在线时间
342 小时
发表于 2014-11-2 09:19:48 | 显示全部楼层
回复【11楼】jiutianshenjian:
---------------------------------
其实这12.5个周期 是STM32内部模拟开关切换时间,所以说不可能做到完全同步采集两路AD或者三路
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2018-1-21
在线时间
13 小时
发表于 2018-2-9 12:51:48 | 显示全部楼层
jiutianshenjian 发表于 2014-9-25 08:36
回复【3楼】正点原子:
---------------------------------
都看了,不太明白。我要采集50Hz正弦波,每个20m ...

和楼主有相同的问题。求解决!
我还想问如果想采集更高频率的模拟输入信号,分频周期该如何设置呢?谢谢各位了!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 07:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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