微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1216Y操作过程求教

ADS1216Y操作过程求教

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

如题,硬件:AN0,AN1差分,内部参考2.5V,DSYNC及DRDY悬空。IO用来选在外部输入。单片机IO模拟SPI。

软件读写ADS1216寄存器正常,AD转换后的数据读出来随机,不正确。

请大侠赐教,急等,谢谢!

void AD_Convert(void)
{
  BYTE temp;  
  SPI_CSN_CLR;
  DrvSYS_Delay(3000);//Ñ¡ÔñADS1216Y

SpiTxRxByte(0xfe);
DrvSYS_Delay(100);//¸´Î»¼Ä´æÆ÷

  SpiTxRxByte(0x50);
  SpiTxRxByte(0x02);
  SpiTxRxByte(0x0e);//0x00ÅäÖÃSETUP¼Ä´æÆ÷
  SpiTxRxByte(0x01);//ÅäÖÃMUX¼Ä´æÆ÷,Ñ¡ÔñͨµÀ0+¡¢Í¨µÀ1-²î·Ö
  SpiTxRxByte(0x00);//ÅäÖÃACR,ÔöÒæÑ¡1µµ
 DrvSYS_Delay(100);
//test    ¼Ä´æÆ÷¶Áok
//  SpiTxRxByte(0x19);
//  SpiTxRxByte(0x00);
//  AD0_VALUE[0] = SpiTxRxByte(0);
//test  
  SpiTxRxByte(0x58);
  SpiTxRxByte(0x01);
  SpiTxRxByte(0x80);//ÅäÖòÉÑùƵÂʼĴæÆ÷0x780
  SpiTxRxByte(0x07);
DrvSYS_Delay(100);
  SpiTxRxByte(0x57);//ÅäÖÃIOȫΪÊä³ö
  SpiTxRxByte(0x00);
  SpiTxRxByte(0x00);
DrvSYS_Delay(100);

  SpiTxRxByte(0x5D);//ÅäÖÃÂú¿Ì¶È¼Ä´æÆ÷
  SpiTxRxByte(0x02);
  SpiTxRxByte(0xFF);
  SpiTxRxByte(0xFF);
  SpiTxRxByte(0xFF);
DrvSYS_Delay(100);

  SpiTxRxByte(0x59);
  SpiTxRxByte(0x00);
  SpiTxRxByte(0x37);//Ñ¡ÔñÂ˲¨Ä£Ê½,SINC3£¬Ë«¼«ÐÔ£¿
DrvSYS_Delay(100);

  SpiTxRxByte(0x56);
  SpiTxRxByte(0x00);
  SpiTxRxByte(0x08);//08hΪͨµÀ0(0aH,0cH,0eH)
DrvSYS_Delay(1000);

SpiTxRxByte(0xfc);

DrvSYS_Delay(500);
wait:    SpiTxRxByte(0x19);//¶ÁM/DEC1,È¡/DRDY
SpiTxRxByte(0x00);
  temp=SpiTxRxByte(0);
  temp=temp&0x80;
if(temp)goto wait;//µÈ´ýÊý¾Ý×¼±¸ºÃ


  SpiTxRxByte(0x01);
  DrvSYS_Delay(100);
SpiTxRx3Byte(0);
  SPI_CSN_SET;
}

你应该需要跟 DRDY 同步.

wait:    SpiTxRxByte(0x19);//读DRDY标志,低为准备好
SpiTxRxByte(0x00);
  temp=SpiTxRxByte(0);
  temp=temp&0x80;
if(temp)goto wait;//

发了DSYNC命令后,DRDY标志应该为高,直到把3个字节的数据读出或者覆盖掉AD数据后转为低。

我是这样理解的。请大侠指点。

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

网站地图

Top