ADS1118无法读数,无法确定是芯片坏了还是模拟的SPI程序有问题,求高招?模拟SPI程序如下。
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,Con
tinue,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;
}
程序读出来的只有一个不正确的值,不管改变哪个通道采样或改变输入电压值采样值都一样,那位朋友遇到类似的问题?
Other Parts Discussed in Thread: ADS1118,
MSP430F149void 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;
}
程序读出来的只有一个不正确的值,不管改变哪个通道采样或改变输入电压值采样值都一样,那位朋友遇到类似的问题?
我用的是16位的连续采样方式,FS为2.048V,后面16位没读,不管是输入0V还是输入2V,输出的数值都是32768
原理图应该没错,可能是焊接时导致
电路出问题,我再仔细检测下。