MSP430学习笔记(4)ADC12
b)转换控制寄存器ADC12CTL1
i.CSStartAdd转换存储地址位,可以定义单次转换地址或序列转换的首地址。
ii.SHS采样输入触发源选择:0为ADC12SC,1为Timer_A.OUT1,2为Timer_B.OUT0,3为Timer_B.OUT1。
iii.SHP采样信号(SAMPCON)选择控制位:0为信号源来自采样触发输入信号,1为信号源来自采样定时器,由采样输入信号的上升沿触发采样定时器。
iv.ISSH采样输入信号方向控制位:0为采样输入信号为同向输入,1为反向。
v.ADC12DIV:ADC12时钟源分频因子选择为。
vi.ADC12SSEL ADC12内核时钟源选择:0为ADC12内部时钟源ADC12OSC(默认)为1为ACLK,为2为MCLK,为3为SMCLK。
vii.CONSEQ转换模式选择位:0为单通道单次转换模式,1为序列通道单次转换模式,2为序列通道多次转换模式,3为序列通道多次转换模式。
viii.ADC12BUSY ADC12忙标志位:0表示没有活动,1表示忙。
c)ADC12MEM0~ADC12MEM15转换存储寄存器:16位寄存器,用来存放A/D转换结果,只用其中低12位。
d)ADC12MCTLx转换存储器控制寄存器:
i.EOS:序列结束控制位:0为序列没有结束,1为结束。
ii.Sref参考电压源选择位:
iii.INCH选择模拟输入通道:该4位表示的二进制数为所选的模拟输入通道:
e)ADC12IFG中断标志寄存器:ADC12IFGx置位表示转换结束,并且转换结果已经装入转换存储寄存器;ADC12IFGx复位表示ADC12MEMx被访问。
f)ADC12IE中断使能寄存器:1为允许响应的ADC12IFGx在置位时发生的中断请求服务,0为禁止ADC12IFGx在置位时发生的中断请求服务。
g)ADC12IV中断向量寄存器。
5.初始化代码
- /*************************************************************************
- //名称:ADC12Init
- //参数:ucharTimes-0为单次转换,1为多次转换,
- ucharTube-0为单通告转换,1为多通道转换
- ucharn-待转换的通道(只有在Tube为0的时候有用)
- ucharV-0为内部参考电压,1为外部参考电压
- //返回值:无
- //功能:完成ADC12Init的初始化
- *************************************************************************/
- voidADC12Init(ucharTimes,ucharTube,ucharn,unsignedcharv)
- {
- 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)//选择通道
- {
- case0:ADC12MCTL0|=INCH_0;break;
- case1:ADC12MCTL0|=INCH_1;break;
- case2:ADC12MCTL0|=INCH_2;break;
- case3:ADC12MCTL0|=INCH_3;break;
- case4:ADC12MCTL0|=INCH_4;break;
- case5:ADC12MCTL0|=INCH_5;break;
- case6:ADC12MCTL0|=INCH_6;break;
- case7: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;//开启软件使能
- }
- }
评论