TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F427A SD16 A/D转换为什么无结果

使用427A芯片学习做一个电子称系统,包括AD转换、键盘输入和12864显示,硬件焊接完成后键盘和显示调试成功。SD16AD转换使用外部参考电压1.4V,单步进行到SD16CCTL0 |= SD16SC; SD16控制寄存器值全部=0,转换无结果,改用内部1.2V参考电压时发现VREF脚电压为0V,单步到SD16CCTL0 |= SD16SC; SD16控制寄存器值全部=0,转换仍无结果,请各位老师赐教!不会是单片机有问题吧!程序如下:

#include <msp430x42x.h>
//void init_SD16();
int i;
//unsigned int results;
#define   Num_of_Results   8

static unsigned int results[Num_of_Results];
void main(void)
{
  WDTCTL=WDTPW+WDTHOLD;
  IE2 |=BTIE;
  FLL_CTL0 |=XCAP14PF;
  BTCTL=BTDIV+BTIP2+BTIP1;

  _EINT();
  for(;;)
  {
    _BIS_SR(LPM3_bits+GIE);
   _NOP();
  }
}
#pragma vector =BASICTIMER_VECTOR
__interrupt void basic_timer(void)
{
  _BIC_SR_IRQ(LPM3_bits);
  for(i=0;i<10000;i++);
  SD16CTL=SD16SSEL0;
  SD16CCTL0 |= SD16IE ;                     // 使能中断
  SD16CCTL2 |= SD16SNGL;                    // Single conv   dl
  for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup
    SD16CCTL0 |= SD16SC;                    // Set bit to start conversion
  _NOP();
}
#pragma vector=SD16_VECTOR
__interrupt void SD16ISR(void)
{
  static unsigned int index = 0;
  switch (SD16IV)
  {
  case 2:                                   // SD16MEM Overflow
    break;
  case 4:                                   // SD16MEM0 IFG
     results[index] = SD16MEM0;              // Save CH2 results (clears IFG)

    if (++index == Num_of_Results)
    {
      index = 0;                            // SET BREAKPOINT HERE   dl
    }
    break;
  case 6:                                   // SD16MEM1 IFG
    break;
  case 8:                                   // SD16MEM2 IFG
    break;
  }
  //_BIC_SR_IRQ(LPM3_bits);                   // Exit LPM0
}

yz l:

回复 Xutong Han2:

尊敬的Xutong Han2老师:

您好!再次感谢您的赐教!按照您所赐的方法,我给芯片427A的 A0.0+加了1.1V电压,A0.0-接电压地,VREF和AVSS接了100uF电容。再次下载官方测试程序,调试结果任然读不出转换结果。单步运行到

1. SD16CCTL0 = SD16SNGL+SD16GRP;    时  (SD16CCTL0=0x0401)

2. SD16CCTL1 = SD16SNGL+SD16GRP;  时 SD16CCTL1 =0x0401

3. SD16CCTL2 = SD16SNGL+SD16IE;   时 SD16CCTL2=0x0408

运行到SD16CCTL2 |= SD16SC;  时SD16CCTL0、1、2全部等于0,程序跳到1….2…3…如此重复2次后有跳到main()前面

SD16MEM0、SD16MEM1、SD16MEM2始终等于0,也无结果。是何原因?敬请赐教!  甘肃省平凉市 柳玉柱

Xutong Han2:

回复 yz l:

 你直接在 这条语句前增加断点_BIS_SR(LPM0_bits); 然后让单片机全速运行,查看ADC的数值 不要单步运行 试试这样可以得到数据不,

yz l:

回复 Xutong Han2:

Xutong Han2老师,您好!

按照您的吩咐,在低功耗模式命令前面设置断点,程序全速运行多次仍然读不出转换结果。使用万用表测量出内部参考电压=1.2V。从SD16的控制寄存器工作正常,各引脚输出电压也正常,显示和键盘可以正常工作,参考电压正常来看,单片机应该是好的,SD16模块好像是好的,但是为什么读不出转换结果?

Xutong Han2:

回复 yz l:

你如果有其他的板子可以在其他的板子上试试,或者试试其他官方的程序,首先排除硬件问题~

Xutong Han2:

回复 yz l:

程序附在附件中了~

yz l:

回复 Xutong Han2:

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F427A SD16 A/D转换为什么无结果
分享到: 更多 (0)