打印

ADC2可以采集温度传感器吗?

[复制链接]
2371|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddb_21ic|  楼主 | 2009-9-23 18:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在72MHz条件下,怎样实现ADC速度20Ksps?
沙发
香水城| | 2009-9-23 23:38 | 只看该作者
ADC2不可以采集温度传感器。

实现ADC速度20Ksps有2种方法,一种方法是使用定时器按20kHz的速率触发ADC进行采样。

另一种方法是通过调节ADC采样转换时间,找到一个接近与50us的参数组合:

STM32的是可调的,有8种选择,按周期算为:
1.5+12.5=14
7.5+12.5=20
13.5+12.5=26
28.5+12.5=41
41.5+12.5=54
55.5+12.5=68
71.5+12.5=84
239.5+12.5=252

如果选择APB2时钟为36MHz,并选择ADC预分频系数=8,则ADC的时钟频率是4.5MHz,即每个周期0.222us;选择ADC采样转换周期(239.5+12.5=252),可得到56us的采样转换周期。同样计算,若选择ADC预分频系数=6,则ADC的时钟频率是6MHz,可得到42us的采样转换周期。56us和42us是2个比较接近20kHz的参数。

使用特权

评论回复
板凳
ddb_21ic|  楼主 | 2009-9-24 16:51 | 只看该作者
当需要进行信号处理的时候,还是觉得整数的周期时间容易计算
所以还是希望采样频率是10K,20K,50K等
看来只有用定时器触发了。

试过了用几个不同的采样周期组合起来得到一个整数,
但是会出现转换结果不对的情况:
ch1      13.5+12.5    26
ch1      13.5+12.5    26
ch2 ...
...
ch16 239.5+12.5
ch16 239.5+12.5
ch16 239.5+12.5
在DMA结果中,ch16的值平均后居然有大于0x0FFF,一次正确,间隔一次错误
所以通道的采样周期换成相同的,就没这个问题了.

使用特权

评论回复
地板
香水城| | 2009-9-24 17:01 | 只看该作者
请问,你要采集一个通道还是多个通道?20Ksps是针对一个通道还是多个通道的平均?

使用特权

评论回复
5
ddb_21ic|  楼主 | 2009-9-25 10:20 | 只看该作者
现在的任务是5个通道,4个信号+1个温度
希望是每个信号都用20Ksps采样
没想到的主要是103VB的ADC1才能使用DMA和CH16,空下个ADC2没有用
而温度的采样时间又不能在ADC1里面得到保证

使用特权

评论回复
6
ddb_21ic|  楼主 | 2009-9-25 10:24 | 只看该作者
如果用ADC1采集温度,ADC2中断方式采集4个信号
这样中断的频率比较高了,影响CPU的运算效率
看来还是外加温度传感器好点,可惜板板都做出来了

使用特权

评论回复
7
香水城| | 2009-9-25 10:56 | 只看该作者
本帖最后由 香水城 于 2009-9-25 14:58 编辑

你的意思是否是每50us要对5个通道分别采样一次,综合起来是20ksps?

如果是这样,你只需要使用定时器按100kHz的速率触发ADC1进行采样,ADC1设置为扫描模式,再使用DMA把转换结果传到RAM中。你可以安排每扫描一遍产生一次中断,即每50us产生一次中断,或每扫描多遍产生一次中断,假如是每扫描10遍才产生一次中断,则每500us才需要处理一次中断。

使用特权

评论回复
8
ddb_21ic|  楼主 | 2009-9-25 14:51 | 只看该作者
多谢香主耐心讲解
这样应该可以保证温度传感器的大于2.2us的采样要求了

使用特权

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

本版积分规则

105

主题

1106

帖子

3

粉丝