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

ADS7952采样的数据有时是正确的值,有时是0x0FFF,不知道问题出在哪。程序不知道有没有问题。

void CADD(void)         

{
  uint32 aa;                 

 uint32 ADdata;
  ADdata=0;
   //从机选择(主机模式)低有效,为低将从机拉进中断,正式开始数据传输
   IO0CLR=(1<<16);//片选信号拉低
    
  S0SPDR=0x1C40;      //选择通道8,Manual Mode   

  while((S0SPSR&0x80)==0);  //等待发送完成

  aa=S0SPDR;      //第一个周期的输出值不要         
         
  IO0SET=(1<<CS1);          //取消片选
  IO0CLR=(1<<CS1);//片选信号拉低

  S0SPDR=0x0000;       //以先前选择的模式继续

  while((S0SPSR&0x80)==0);  //等待发送完毕
   ADdata=S0SPDR;
   ADdata=ADdata&0x0FFF;//取后12位AD转换数据
  
  GOODDATA=ADdata;
   IO0SET=(1<<CS1);          //取消片选

}

Decapton Wang:

ADdata为什么要和0x0FFF做一个与运算?建议检查一下是不是“ADdata=ADdata&0x0FFF;//取后12位AD转换数据”这句代码出了问题。

qing wang:

回复 Decapton Wang:

因为ADS7952转换出来的数据高四位是通道地址,后12位才是转换出来的数据,所以进行了与运算

Decapton Wang:

回复 qing wang:

1. 你把0x0FFF改成0xFFFF,看看采出数据的通道对不对。

2. S0SPDR出现过多次,从“S0SPDR=0x1C40"看出S0SPDR应该是从主机向ADC发,但是从”ADdata=S0SPDR“来看又像是从ADC向主机发,检查一下是不是这个S0SPDR出问题了。

qing wang:

回复 Decapton Wang:

1、通道地址正确;

2、主机先向ADC发通道选择控制字(即“S0SPDR=0x1C40"),然后再从ADC读出AD转换数据,SOSPDR是个双向数据寄存器。

user4064604:

回复 qing wang:

楼主可否发一份ads7952的例程?

shencheng hu:

回复 user4064604:

请问你解决了吗?能不能发我一份

赞(0)
未经允许不得转载:TI中文支持网 » ADS7952采样的数据有时是正确的值,有时是0x0FFF,不知道问题出在哪。程序不知道有没有问题。
分享到: 更多 (0)