微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1246输出不正常

ADS1246输出不正常

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

输入0mv差分信号,输出值 3个字节为(00~FF跳动、00~FF跳动、00不变),输入4mv信号输出依旧不变,量过波形都正常也是下降沿采集数据,DRDY输出为1秒2000次,已经配置进去,基准2.048V,使用内部振荡器,求解问题所在,以下是配置程序

void InitADS1248(void)
{
cs_CS1242_1();//片选拉低
delay_us(10000);
nowp_ad1_eeprom();//START引脚至高
delay_us(10000);
reset_CS1242_1(); //复位
delay_us(10000);
noreset_CS1242_1();
delay_us(10000);
SPI_ADS1248_SendByte(ADS1248_CMD_RESET);//复位指令
delay_us(10000);
ADS1248WREG(0x00,0x01);//
delay_us(10000);
ADS1248WREG(0x01,0x00);//
delay_us(10000);
ADS1248WREG(0x02,0x00);//
delay_us(10000);
ADS1248WREG(0x03,0x7f);//
delay_us(10000);
}

void Ads1248(void)//读采集值
{
D=0;
//发送单次读数据命令
SPI_ADS1248_SendByte(ADS1248_CMD_RDATAC);
//读取ADC转换完成的数据
results1=SPI_ADS1248_SendByte(0xFF);
results2=SPI_ADS1248_SendByte(0xFF);
results3=SPI_ADS1248_SendByte(0xFF);
D|=results1<<16|results2<<8|results3;
//发送空操作指令,强迫D_OUT变高
SPI_ADS1248_SendByte(ADS1248_CMD_NOP);

}

void ADS1248WREG(unsigned char regaddr,unsigned char databyte)
{
//向寄存器写入数据地址
SPI_ADS1248_SendByte(ADS1248_CMD_WREG+(regaddr & 0xF));
//写入数据的个数n-1
SPI_ADS1248_SendByte(0);
//向regaddr地址指向的寄存器写入数据databyte
SPI_ADS1248_SendByte(databyte);
}

void ADS1248WREG(unsigned char regaddr,unsigned char databyte)
{
//向寄存器写入数据地址
SPI_ADS1248_SendByte(ADS1248_CMD_WREG+(regaddr & 0xF));
//写入数据的个数n-1
SPI_ADS1248_SendByte(0);
//向regaddr地址指向的寄存器写入数据databyte
SPI_ADS1248_SendByte(databyte);
}

Hi Zhenlei,

由于程序中包含了太多的子函数,不容易找出问题所在,

能否上传一下你的原理图, 以及通信过程中用示波器或逻辑分析仪测试的CS, SCLK, DIN, DOUT这几个引脚的时序图?

这样会更方便找出问题! 谢谢。。。

 

Br

Martin

原理图

读转换数据 SCLK和DIN引脚波形

读转换数据SCLK和DOUT引脚波形

写错了 下面是SCLK和DIN波形   上面是SCLK河DOUT波形

您好,

从ADS1246的接口时序上看,在 START 引脚发送一个高电平脉冲后,需要等待到DRDY引脚变成低电平后再开始读取数据(如数据手册figure 67所示),程序中并没有等待到DRDY就直接读取数据了,这是造成读取数据混乱的主要原因。

ADS1246寄存器的配置需要依据数据手册figure 81所示,在地址前加入0100,在寄存器值之前加入0000,请检查是否正确;

时序截图最好能 将SRART, CLK, DOUT, DRDY 这几个引脚在4通道的示波器上同时截取出来,截取从START 的上升沿开始到所读取的最后一位输出;另外最好能上传一个放大后仅仅包含8个时钟周期的图,这样的话就能很明确地了解到时序是否有问题。

硬件连接中,PIN6 REFN 需要连接至AGND, DGND 跟AGND 需要分开布线,参考电压输入,模拟电压输入均需要良好的去耦,并非所有的数据线都要上拉电阻的,具体请参考EVM的连接:http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=sbau149&fileType=pdf

Br

Martin

 

刚才是不小心把DRDY和dout引脚短路了,正确的波形是下面

配置寄存器地址前加了x040和0x00,并且已经确定能够配置成数据更新率2000次

START引脚从上电开始就一直是高电平

上图是DRDY波形,下图是DOUT波形

Hi Zhenlei,

通信接口时序看起来没什么问题!

请依照我的上一个回帖修改硬件连接,特别是参考电压输入部分!能否将参考电压源的连接图发上来看一下?

另外,请问片内PGA你是怎么设置的?

Br

Martin

是不是与PCB布线有关呢?有没有把模拟地和数字地分开布线?可能会收到干扰。

ADS1246在 START 引脚发送一个高电平脉冲后,需要等待到DRDY引脚变成低电平后再开始读取数据,程序中并没有等待到DRDY就直接读取数据了,这是造成读取数据混乱的主要原因。时序截图最好能 将SRART, CLK, DOUT, DRDY 这几个引脚在4通道的示波器上同时截取出来,截取从START 的上升沿开始到所读取的最后一位输出;另外最好能上传一个放大后仅仅包含8个时钟周期的图,这样的话就能很明确地了解到时序是否有问题。

楼主布线有没有问题哦。可能与PCB布线有关,有没有把模拟地和数字地分开布线?这个EMI干扰很厉害的。。

zhenlei hu1

刚才是不小心把DRDY和dout引脚短路了,正确的波形是下面

配置寄存器地址前加了x040和0x00,并且已经确定能够配置成数据更新率2000次

START引脚从上电开始就一直是高电平

这个波形看起来应该是没有问题的,话说你是不是把蓝色的那个通道向上平移了?如果是向上平移了,那应该是正常的。

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

网站地图

Top