打印

LM3S9B96 ADC序列发生器步进问题

[复制链接]
1829|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
s05812229|  楼主 | 2012-12-20 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
永远的不知| | 2012-12-21 11:38 | 只看该作者
ADC采样序列发生器的相关疑问解答

有朋友问:
void ADCSequenceStepConfigure(unsigned long ulBase,  
      unsigned long ulSequenceNum,  
      unsigned long ulStep,  
      unsigned long ulConfig)  
ulStep:步值,决定触发产生时ADC捕获序列的次序,对于不同的采样序列取值也不相同:
采样序列编号   步值范围
    0            0~7
    1            0~3
    2            0~3
    3             0
问题是:步值是什么意思?比如采样序列为0,歩值0和歩值7有什么区别?  
-----------------------------------------------------------------------

每个序列共有8次采样,这个step就是第n次采样,比如ulstep为3,就是对第3次采样进行相应的设置,不知道这么解释你明白了吗?


可以解释下,为什么要8次采样吗? 每个序列共有8次采样   
是不是8次采样求平均吗?
-----------------------------------------------------------------------

不是一定要采8次,你可以设定采样1-8次都行,这样做我个人理解是为了方便采不同通道的数据时减少cpu的干预,这个8次采样是独立的,需要为每次采样设置采样通道。
此外,Stellaris总共有4个采样序列,只有采样序列0可以连续采样8次,采样序列1和2可以连续采样4次,采样序列3只可以采样1次。



能同时配置ulstep 为3和4吗?  
adcsequstepconfig(adc_base, 0, 3, adc_ctl_ch0 |  
                                      adc_ctl_end |  
                                      adc_ctl_ie);  
adcsequstepconfig(adc_base, 0, 4, adc_ctl_ch0 |  
                                      adc_ctl_end |  
                                      adc_ctl_ie);  
这能在同一个函数下配置使用吗?
-----------------------------------------------------------------------
用函数库应该不能在adcsequstepconfig()中设置多步,因为没步是独立的采样,分别设置有利于可读性;
你在第3次采样设定了adc_ctl_end,标识本次是采样序列最后一次采样的,你后面设置第4次就没作用了。

使用特权

评论回复
板凳
永远的不知| | 2012-12-21 11:39 | 只看该作者
楼上的一些常见疑问,应该能解决楼主的疑问,如果还有问题,我们再讨论。

使用特权

评论回复
地板
s05812229|  楼主 | 2012-12-21 14:06 | 只看该作者
谢谢版主的回答   
假设我要用到16个通道,当使用序列0进行采样,序列0只能使用0~7个通道,此时我要用到其他的通道(8、9、10、、、、、),问如何设置

使用特权

评论回复
5
永远的不知| | 2012-12-21 14:19 | 只看该作者
s05812229 发表于 2012-12-21 14:06
谢谢版主的回答   
假设我要用到16个通道,当使用序列0进行采样,序列0只能使用0~7个通道,此时我要用到其 ...

0-7不是指的通道,这个指的是序列0的采样深度可以是1-8;序列0最多可以有8次采样,0-7可以分别设置,可以用同一通道,也可以用不同通道。

使用特权

评论回复
6
s05812229|  楼主 | 2012-12-21 15:07 | 只看该作者
谢谢楼主的回答
我知道怎么弄了   
最近刚学ARM   打算先看书 --->实际操作--->再看书   所以一直在看书  没实际操作   
刚看了下API函数库知道了
#define ADC_CTL_CH1             0x00000001  // Input channel 1
#define ADC_CTL_CH2             0x00000002  // Input channel 2
#define ADC_CTL_CH3             0x00000003  // Input channel 3
#define ADC_CTL_CH4             0x00000004  // Input channel 4
#define ADC_CTL_CH5             0x00000005  // Input channel 5
#define ADC_CTL_CH6             0x00000006  // Input channel 6
#define ADC_CTL_CH7             0x00000007  // Input channel 7
#define ADC_CTL_CH8             0x00000008  // Input channel 8
#define ADC_CTL_CH9             0x00000009  // Input channel 9
#define ADC_CTL_CH10            0x0000000A  // Input channel 10
#define ADC_CTL_CH11            0x0000000B  // Input channel 11
#define ADC_CTL_CH12            0x0000000C  // Input channel 12
#define ADC_CTL_CH13            0x0000000D  // Input channel 13
#define ADC_CTL_CH14            0x0000000E  // Input channel 14
#define ADC_CTL_CH15            0x0000000F  // Input channel 15

使用特权

评论回复
7
永远的不知| | 2012-12-21 15:10 | 只看该作者
s05812229 发表于 2012-12-21 15:07
谢谢楼主的回答
我知道怎么弄了   
最近刚学ARM   打算先看书 --->实际操作--->再看书   所以一直在看书  ...

实践最重要了,不清楚的时候,可以先试试,看看结果,可能就明白了。

使用特权

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

本版积分规则

29

主题

91

帖子

0

粉丝