微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 请教 ADS1211 采样数据乱跳问题

请教 ADS1211 采样数据乱跳问题

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

原理图如上用的是内部参考   10M的晶振  短接AIN1N  AIN1P  读取的数据在乱跳不是一直为0,波动还挺大,麻烦各位帮我分析一下,是什么原因引起的,寄存器,x写进去,读出来都是对的,谢谢。

void ADS1211A_init(void){

ADC_CS1_OFF;
ADC_write_One_Byte(0x64); //写入INSR命令,01100100,写CMR命令 连续4字节 命令寄存器开始
asm("nop");asm("nop");
ADC_write_One_Byte(0x72);
ADC_write_One_Byte(0xa4); 

ADC_write_One_Byte(0x5E);
ADC_write_One_Byte(0x83); 
ADC_CS1_ON;

}

void ADCA_Output(void)
{
volatile unsigned long ADC_Out;//,ADC_Sum;
static unsigned char ADC_S_Data[3]; // ADC数据缓冲区
unsigned char i;
static unsigned char w_Temp;

ADC_CS1_OFF;
ADC_write_One_Byte(0x84); //读取寄存器判断数据是否正确
w_Temp = ADC_Read_One_Byte();
ADC_CS1_ON;

if((w_Temp&0x01) == 0x00)
{

ADC_CS1_OFF;
asm("nop");
//---------------------------------------------
// 注意:ADC数据采用Offset Binary格式
// +Full-Scale FFFFFFH
// Zero 800000H
// –Full-Scal 000000
//---------------------------------------------
ADC_write_One_Byte(0xC0);

for(i=0;i<3;i++)
{
ADC_S_Data[i] = ADC_Read_One_Byte();
}
ADC_CS1_ON;
ADC_Out = ADC_S_Data[0];
ADC_Out = ADC_Out<<8;
ADC_Out |= ADC_S_Data[1];
ADC_Out = ADC_Out<<8;
ADC_Out |= ADC_S_Data[2];
ADC_Out &= 0x007fffff;

g_ADCABuf[0][0]=ADC_Out;

}
}

请问   Offset Cal Register Byte和Full-Scale Cal Register Byte    寄存器 需要设置吗

我读取到的Full-Scale Cal Register Byte  值是0X71BDA1         Offset Cal Register Byte寄存器的值是 0Xffee00     不知道对不对

我每次读Full-Scale Cal Register Byte    值一直也在跳,有人能帮我解决吗

发现

如果把CS 一直拉低 读出寄存器的值一直是 0Xffffff   ,如果读写的时候CS 参与控制就可以读到数据,难道数据手册有误?  TI的高手,求解答

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

网站地图

Top