微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1118无法读数,无法确定是芯片坏了还是模拟的SPI程序有问题,求高招?模拟SPI程序如下。

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

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

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;
}

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

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

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

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

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

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

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

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

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

网站地图

Top