此帖出自微控制器 MCU论坛
最新回复
本帖最后由 qinkaiabc 于 2014-4-29 08:50 编辑
MSP430g2553因为只有一个ADCMEM,不像其他系列有多个。所以在多通道同时采样的时候,必须要使用DTC。
unsigned int Control_Val[4] = {0};存储数据的地址
/*A0 A3两通道序列采样*/
void Init_ADC10(void)
{
ADC10CTL1 = INCH_3 + CONSEQ_1;// A3/A0,基本的配置
ADC10CTL0 = SREF_0 + ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
__delay_cycles(30);
ADC10AE0 |= BIT0 + BIT3;// P1.0,P1.3 ADC10 option select
ADC10DTC0 |= ADC10CT;//ADC10 continuous transfer使能DTC传输
ADC10DTC1 = 0x04; // 2 conversions
ADC10CTL0 &= ~ENC;//关闭ADC10
}
void adc10_Start(void)
{
ADC10CTL0 |= ENC + ADC10SC;//Enable conversion,Start conversion
}
void adc10_Stop(void)
{
ADC10CTL0 &= ~ENC;//ADC10 disabled
}
adc10_Start();
while(ADC10CTL1 & BUSY);
ADC10SA = (unsigned int)Control_Val;// Data buffer start采样的结果存储到你定义的地址中,这里是数组的地址
adc10_Stop();
上面是ADC10部分的代码。
首先要明白,当多通道采样时,先采高的通道,再采低的通道。即A3的结果存储到Control_Val[0],A0的结果存储到Control_Val[3],由于A1、A2没有使能,所以在A2、A1的结果分别存储到Control_Val[1],Control_Val[2]的是不定的。存储顺数也是按照这个方式存储的。
跟详细的解释请看这个http://blog.sina.com.cn/s/blog_6cd2030b01017x74.html
详情
回复
发表于 2014-4-29 16:46
| ||
|
||
此帖出自微控制器 MCU论坛
点评 | ||
个人签名
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
| |
|
|
此帖出自微控制器 MCU论坛
| ||
|
||
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
EEWorld Datasheet 技术支持