微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS7952采样的数据有时是正确的值,有时是0x0FFF,不知道问题出在哪。程序不知道有没有问题。

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

时间:10-02 整理:3721RD 点击:

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);          //取消片选

}

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

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

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

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

1、通道地址正确;

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

解决了 原来是AD采样的电压信号不稳定,至于为什么不稳定还在进一步的研究中 总之谢谢楼上的建议

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top