有关ADS1118,有以下疑问:
1、在以前的有关该芯片的帖子中,看到说,ALN0与ALN1做输入时,只能测量1V以下的直流电压,请问是这样吗?
2、看芯片手册上说ADS1118写入数据是下降沿有效,而读数据是上升沿有效。但是看以前的帖子中有说,读写数据都是下降沿有效,请问哪种是对的。
3、我现在送入配置字是,0X858A,2.048=fs,ALN0与ALN1做输入,单次转换开启。但是读回来的数据,一直就是某个数据,不管给多少电压都是这个值,,而且一直在变化,转化后大约是0.8V左右,好像读回来一直都是这个值。但是送入的配置字不同,读回来的数据不同。读回来的寄存器的值每次也不一样。
4、关于VCC的问题,3中读回来的的数据,当芯片给3.3的电压时,和芯片给5V电压表 的数据有很大的差别。但是,不管给什么模拟输入电压,读回来的数据没有什变化。
5、在送入配置字后,延时,再判断DOUT输出低电平则说明数据准备好可以读取。但是,在程序中加入该检测语句后,程序会一直卡在这里。但是,用一个延时语句,直接延时,这样可以读OUT的值。不知道为什么Dout不会有低电平出现,一直是高电平。
6、有关ADS1118的SPI时序的读写时序如下,不知道该程序,请帮忙看一下。
1)void SPI_Write_byte(uchar data)
{
uchar i=0;
for(i=0;i<8;i++)
{
SPI_delay_us();
//SPI_delay_us();
if(data&0x80)
SPI_SIMO_HIGH;
else
SPI_SIMO_LOW;
SPI_CLK_HIGH;
SPI_delay_us();
SPI_CLK_LOW; //发送数据
data=data<<1;
}
}
2)
uchar SPI_Rec_byte() //经测试,上、下降沿都可以接收数据
{
uchar i=0;
uchar Temp=0;
for(i=0;i<8;i++)
{
Temp=Temp<<1; //向左移位,这句需放在前面
SPI_CLK_HIGH;
SPI_delay_us();
SPI_CLK_LOW; //接收数据
if(SPI_SOMI_IN) //先收高位
Temp |=BIT0; //置1
else
Temp&=~BIT0; //可省略,默认就是0
SPI_delay_us();
}
return Temp;
}
测试过该时序基本没什么问题,但是所有的问题,都似乎说明是时序问题。
