MSP430模数转换ADC12

2019-07-23 16:32发布

MSP430模数转换ADC12详解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
zhangbo1985
1楼-- · 2019-07-23 19:27
这个主要就是关于自带的ADC12模块及功能寄存器的介绍的,要是有相关的代码的就更好了
cemaj
2楼-- · 2019-07-23 19:42
 精彩回答 2  元偷偷看……
i1mcu
3楼-- · 2019-07-24 00:45
分辨率(LSB):表示输出数字量变化一个相邻数码所需要输入模拟电压的变化量,它定义为转换器的满刻度电压与2的n次幂,其中n为ADC的位数。
uptown
4楼-- · 2019-07-24 04:23
void ADC12Init(uchar Times,uchar Tube,uchar n,unsigned char v)  
{  
    if(Tube ==0)                                                //单通道转换  
    {  
        if(v == 0)  
        {  
            ADC12CTL0 = ADC12ON + SHT0_8 + MSC + REFON + REF2_5V;   //使用内部电压,打开ADC12内核,8分频,内部参考电压2.5V  
            ADC12MCTL0 = SREF_0;                                    //使用内部电压,参考位为AVCC和AVSS  
        }  
        if(v == 1)  
        {  
            ADC12CTL0 = ADC12ON + SHT0_8;               //使用外部电压,打开ADC12内核,8分频  
            ADC12MCTL0 = SREF_2;                                //使用外部电压,参考为为VeREF+和AVSS              
        }  
        if(Times == 0)ADC12CTL1 = SHP + CONSEQ_0;           //单通道单次转换,采样信号来自采样定时器  
        if(Times == 1)ADC12CTL1 = SHP + CONSEQ_2;           //单通道多次转换,采样信号来自采样定时器  
        switch (n)                          //选择通道  
        {  
        case 0:ADC12MCTL0 |= INCH_0;break;  
        case 1:ADC12MCTL0 |= INCH_1;break;  
        case 2:ADC12MCTL0 |= INCH_2;break;  
        case 3:ADC12MCTL0 |= INCH_3;break;  
        case 4:ADC12MCTL0 |= INCH_4;break;  
        case 5:ADC12MCTL0 |= INCH_5;break;  
        case 6:ADC12MCTL0 |= INCH_6;break;  
        case 7:ADC12MCTL0 |= INCH_7;break;  
        }  
        ADC12IE = n;                                //使能待转换通道的中断  
        ADC12CTL0 |= ENC;                           //开启软件使能  
    }  
    if(Tube ==1)                                                //多通道转换  
    {  
        if(v == 0)  
        {  
            ADC12CTL0 = ADC12ON + SHT0_8 + MSC + REFON + REF2_5V;   //使用内部电压,打开ADC12内核,8分频,内部参考电压2.5V  
            ADC12MCTL0 = SREF_0;                                    //使用内部电压,参考位为AVCC和AVSS  
        }  
        if(v == 1)  
        {  
            ADC12CTL0 = ADC12ON + SHT0_8;                   //使用外部电压,打开ADC12内核,8分频  
            ADC12MCTL0 = SREF_2;                                //使用外部电压,参考为为VeREF+和AVSS              
        }  
        if(Times == 0)ADC12CTL1 = SHP + CONSEQ_1;           //多通道单次转换,采样信号来自采样定时器  
        if(Times == 1)ADC12CTL1 = SHP + CONSEQ_3;           //多通道多次转换,采样信号来自采样定时器  
        ADC12IE = 0xff;                             //使能待转换通道的中断  
        ADC12CTL0 |= ENC;                           //开启软件使能  
    }  
}  
cehuafan
5楼-- · 2019-07-24 05:14
   第一个是ADC12模块的时钟,这个是模块运行时的时钟,跟采样定时器是两个概念,曾经我有一段时间被迷惑住了。这个由ADC12CTL1里面的ADC12SSEL和ADC12DIV配置,可以选择ADC12OSC/ACLK/SMCLK/MCLK,TI例程里面好像都是选择的ADC12OSC,这个是5MHZ,不过频率容易受外界影响而改变。这个部分配置好了就得到了ADC12CLK。
cemaj
6楼-- · 2019-07-24 06:33
MSP430F169中的ADC12是一个12位SAR核的高性能模数转换器

一周热门 更多>