我正在读取单个序列中的16个模拟通道。 使用 ADC12MCTLx 寄存器。 建议使用缓冲基准、VRSEL = 0001b (VR+= VREF 缓冲、VR-= AVSS)。 我对第一个通道执行了此操作、但将剩余的15个通道留给了非缓冲、VRSEL = 0010b、因为我担心文档会警告您仅使用缓冲器 REF 一次??? 我可以对所有模拟输入使用缓冲 REF 吗?
void ADC10_Initialize (void)
{
P9SEL1 = 0xff;// A8 - A15 58891数据表第114页
P9SEL0 = 0xff;
P1SEL0 = 0x0F;// A0 - A3 58891数据页93
P1SEL1 = 0x0F;
P1SEL1_BIT.P1SEL1_0 = 1;// A0
P1SEL0_bit.P1SEL0_0 = 1;
while (ADC12CTL1 & ADC12BUSY){dummy++;}
while (REFCTL0 & REFGENBUSY){dummy++;}//等待 REF 模块
ADC12CTL0_bit.ADC12SC = 0;//无采样 n 转换启动
ADC12CTL0_bit.ADC12ENC = 0;//禁用转换
ADC12CTL0 = 0x4490;//S&HTime 3=>64 ADC12CLK、ADC12ON=1、MSC=1序列模式
REFCTL0 = 0x0061;// Genot=1、VSEL=2.5V、REFON=1
ADC12CTL1 = 0x02FA;// ClkDiv=8、SHP=1、SHS=000 ADC12SC 位、
// ClkSel=11 SMCLK,CONSEQ=00单通道
ADC12CTL2 = 0x0010;// RES = 10位
ADC12CTL3 = 0x0000;// StartAddx=0在 Chnl 0上的起始序列
ADC12MCTL0 = 0x0100;// Chanl A0 VRSEL=0001b -> VR+= VREF 缓冲、VR-=AVSS
ADC12MCTL1 = 0x0401;//通道 A1
ADC12MCTL2 = 0x0402;//通道 A2
ADC12MCTL3 = 0x0403;//通道 A3
ADC12MCTL4 = 0x0404;//通道 A4
ADC12MCTL5 = 0x0405;//通道 A5
ADC12MCTL6 = 0x0406;//通道 A6
ADC12MCTL7 = 0x0407;//通道 A7
ADC12MCTL8 = 0x0408;//通道 A8
ADC12MCTL9 = 0x0409;// Chanl A9
ADC12MCTL10 = 0x040A;// Chanl A10
ADC12MCTL11 = 0x040B;// Chanl A11
ADC12MCTL12 = 0x040C;//通道 A12
ADC12MCTL13 = 0x040D;//通道 A13
ADC12MCTL14 = 0x040E;// Chanl A14
ADC12MCTL15 = 0x048F;// Chanl A15 8=EOS -序列结束
// ADC12IER0 = 0x0001;//仅中断使能:A0
ADC12IER0 = 0x0000;//中断使能:A15-A0
ADC12IER0 = ADC12IE15;//仅中断使能:A15
ADC12IER1 = 0x0000;//中断使能:A31-A16
ADC12IER2 = 0x0000;//中断使能:RDY、TOV、OV、HI、LO、 在中
ADC12IFGR0 = 0x0000;//中断标志:A15-A0
ADC12IFGR1 = 0x0000;//中断标志:A31-A16
ADC12IFGR2 = 0x0000;//中断标志:RDY、TOV、OV、HI、LO、 在中
ADC_DONE_FLAG=0;
ADC12CTL0 |= ADC12ENC | ADC12SC;
}