新闻中心

EEPW首页>嵌入式系统>设计应用> MSP430学习笔记(4)ADC12

MSP430学习笔记(4)ADC12

作者: 时间:2016-11-27 来源:网络 收藏

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.初始化代码

[cpp]view plaincopyprint?
  1. /*************************************************************************
  2. //名称:ADC12Init
  3. //参数:ucharTimes-0为单次转换,1为多次转换,
  4. ucharTube-0为单通告转换,1为多通道转换
  5. ucharn-待转换的通道(只有在Tube为0的时候有用)
  6. ucharV-0为内部参考电压,1为外部参考电压
  7. //返回值:无
  8. //功能:完成ADC12Init的初始化
  9. *************************************************************************/
  10. voidADC12Init(ucharTimes,ucharTube,ucharn,unsignedcharv)
  11. {
  12. if(Tube==0)//单通道转换
  13. {
  14. if(v==0)
  15. {
  16. ADC12CTL0=ADC12ON+SHT0_8+MSC+REFON+REF2_5V;//使用内部电压,打开ADC12内核,8分频,内部参考电压2.5V
  17. ADC12MCTL0=SREF_0;//使用内部电压,参考位为AVCC和AVSS
  18. }
  19. if(v==1)
  20. {
  21. ADC12CTL0=ADC12ON+SHT0_8;//使用外部电压,打开ADC12内核,8分频
  22. ADC12MCTL0=SREF_2;//使用外部电压,参考为为VeREF+和AVSS
  23. }
  24. if(Times==0)ADC12CTL1=SHP+CONSEQ_0;//单通道单次转换,采样信号来自采样定时器
  25. if(Times==1)ADC12CTL1=SHP+CONSEQ_2;//单通道多次转换,采样信号来自采样定时器
  26. switch(n)//选择通道
  27. {
  28. case0:ADC12MCTL0|=INCH_0;break;
  29. case1:ADC12MCTL0|=INCH_1;break;
  30. case2:ADC12MCTL0|=INCH_2;break;
  31. case3:ADC12MCTL0|=INCH_3;break;
  32. case4:ADC12MCTL0|=INCH_4;break;
  33. case5:ADC12MCTL0|=INCH_5;break;
  34. case6:ADC12MCTL0|=INCH_6;break;
  35. case7:ADC12MCTL0|=INCH_7;break;
  36. }
  37. ADC12IE=n;//使能待转换通道的中断
  38. ADC12CTL0|=ENC;//开启软件使能
  39. }
  40. if(Tube==1)//多通道转换
  41. {
  42. if(v==0)
  43. {
  44. ADC12CTL0=ADC12ON+SHT0_8+MSC+REFON+REF2_5V;//使用内部电压,打开ADC12内核,8分频,内部参考电压2.5V
  45. ADC12MCTL0=SREF_0;//使用内部电压,参考位为AVCC和AVSS
  46. }
  47. if(v==1)
  48. {
  49. ADC12CTL0=ADC12ON+SHT0_8;//使用外部电压,打开ADC12内核,8分频
  50. ADC12MCTL0=SREF_2;//使用外部电压,参考为为VeREF+和AVSS
  51. }
  52. if(Times==0)ADC12CTL1=SHP+CONSEQ_1;//多通道单次转换,采样信号来自采样定时器
  53. if(Times==1)ADC12CTL1=SHP+CONSEQ_3;//多通道多次转换,采样信号来自采样定时器
  54. ADC12IE=0xff;//使能待转换通道的中断
  55. ADC12CTL0|=ENC;//开启软件使能
  56. }
  57. }


上一页 1 2 下一页

评论


技术专区

关闭