msp430fr2311单片机adc序列通道采样详细说明

msp430fr2311单片机adc序列通道采样

使用P1.2、P1.3、P1.4、P1.5为采样通道,以demo的msp430fr231x_adc10_10.c文件为例。

1、将上述4个管脚配置为ADC模式:

P1SEL0 |= BIT2 + BIT3 + BIT4 + BIT5;

P1SEL1 |= BIT2 + BIT3 + BIT4 + BIT5;

2、查看资料可知,有4种adc采样模式,单通道单次,序列通道单次,单通道多次,序列通道多次;

本例选择序列通道单次,将ADCCT寄存器设为L1ADCCONSEQ_1;430读取通道数据时是由最高通道开始,直至A0,因此将ADCMCTL0设置为ADCINCH_5(通道5),

ADCMCTL0 |= ADCINCH_5; //参考电压为ADCC。

adc采样值保存在ADCMEM0寄存器中,类似串口接收区。当配置为序列通道时,循环读取ADCMEM的值,即为采样的数据。

注意:序列通道时,需要从最高通道一直读到通道0,总共6个通道。因此定义数组u16 ADC_Result[6],在ADC的中断处理函数中,进行赋值:

//初始化函数
void adc_init()
{
       // Configure ADC A0~2 pins
    P1SEL0 |= BIT2 + BIT3 + BIT4 + BIT5;
    P1SEL1 |= BIT2 + BIT3 + BIT4 + BIT5;

    // Disable the GPIO power-on default high-impedance mode to activate
    // previously configured port settings
    PM5CTL0 &= ~LOCKLPM5;

   // Configure ADC 
    ADCCTL0 |= ADCSHT_2 | ADCMSC | ADCON; // 16ADCclks, MSC, ADC ON
    ADCCTL1 |= ADCSHP | ADCCONSEQ_1 | ADCSSEL_1;   // ADC clock ACLK, sampling timer, s/w trig.,single sequence
    ADCCTL2 = ADCRES;   // 10-bit conversion results
    ADCMCTL0 |= ADCINCH_5;   // A5~2(EoS); Vref=avcc=3.3v
    ADCIE |= ADCIE0;       // Enable ADC conv complete interrupt    

      // Configure reference
    PMMCTL0_H = PMMPW_H;         // Unlock the PMM registers
    PMMCTL2 |= INTREFEN;          // Enable internal reference
    __delay_cycles(400);           // Delay for reference settling
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值