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

ADS1118无法读数,无法确定是芯片坏了还是模拟的SPI程序有问题,求高招?模拟SPI程序如下。

void WriteSPI(uint config)
{
char i;
unsigned int temp;
CS_H;
SCLK_L;
CS_L;
_NOP();
for(i = 0;i <16;i++)
{ temp = config&0x8000;
if(temp)
DIN_H;
else
DIN_L;
SCLK_L;
_NOP();
config <<= 1;
SCLK_H;
}
SCLK_L;
CS_H;
}

void Config_ADS1118(uchar channel,uchar mode)
{
unsigned int config;
if(mode)
{
switch (channel)
{
case 0: config = 0xC5EB; break; //FS = 2.048V,SingleShot,860SPS 上拉电阻
case 1: config = 0xD5EB; break;
case 2: config = 0xE5EB; break;
case 3: config = 0xF5EB; break;
}
}
else {
switch (channel)
{
case 0: config = 0x44EB; break; //FS = 2.048V,Continue,860SPS 上拉电阻
case 1: config = 0x54EB; break;
case 2: config = 0x64EB; break;
case 3: config = 0x74EB; break; }
}
WriteSPI(config);
WriteSPI(config);
delay_SPI();
delay_SPI();
}

void Read_ADS1118(void)
{
char i;
CS_H;
SCLK_H;
CS_L;
for(i = 0;i<16;i++)
{ SCLK_H;
_NOP(); if(DOUT_val)
value |= 1;
value <<= 1;
SCLK_L;
_NOP();
}
SCLK_L;
CS_H;
}

程序读出来的只有一个不正确的值,不管改变哪个通道采样或改变输入电压值采样值都一样,那位朋友遇到类似的问题?

Decapton Wang:

手册23页和24页有32bit数据传输图和16bit数据传输图,你用的是哪一种传输方式?另外,输入是多少,预期的读出值是多少,实际的读出值是多少?

kai liu1:

回复 Decapton Wang:

我用的是16位的连续采样方式,FS为2.048V,后面16位没读,不管是输入0V还是输入2V,输出的数值都是32768

HaiTao Li:

回复 kai liu1:

        0x7FFF?呃,如果你的电路是按照手册上做的的话,那这个信号代表输入0或者信号断线。你要查一下输入了……而且,有了0x7FFF基本上可以认定你的ADS1118是没有问题的。

Decapton Wang:

回复 kai liu1:

上传一下你的硬件电路图,会不会是硬件出错了。

kai liu1:

回复 Decapton Wang:

原理图应该没错,可能是焊接时导致电路出问题,我再仔细检测下。

xiaowen chu:

回复 HaiTao Li:

哈罗~Li~我最近在用ADS1118的时候碰到了这样一个问题,使用的是MSP430F149单片机的SPI通信,但程序写好后与ADS1118进行通信时,发现无论我的模拟量输入(我用直流0~+3.3V做输入)如何变化,输出的数字量总是0x0c,不知道怎么回事,如果可以的话,能不能私下详谈?QQ:382909235 不胜感激……

zhang meng1:

楼主的问题解决没   写了很久都没弄出来    如果可以给发一份吧1181096912@qq.com

赞(0)
未经允许不得转载:TI中文支持网 » ADS1118无法读数,无法确定是芯片坏了还是模拟的SPI程序有问题,求高招?模拟SPI程序如下。
分享到: 更多 (0)