尕老汉 发表于 2014-8-28 13:52:43

*******求助********* IIC转换芯片ADS1100不能读出数据

本帖最后由 尕老汉 于 2014-8-31 00:12 编辑

想外接一个AD ,已经按照芯片手册写了个测试程序,但是不能读取数据,手里的芯片是ads1100 A0。

#include <Wire.h>
#define ADS1100 (0x90 >> 1)// ADS1100A0
void setup()
{
Serial.begin(9600);
Wire.begin();
}

void loop()
{
int x,y,z;
Wire.beginTransmission(ADS1100);
    Wire.write(0x90);//写控制
    Wire.write(0x8c);//
    Wire.write(0x91);   //读控制
x=Wire.read();
y=Wire.read();
   Wire.endTransmission();//结束传输
   Serial.print(x);
   Serial.print(y);
   Serial.println(z);
}



参考了一下BH1750的程序,修改代码后成功读取数据,

#include <Wire.h>
#include <math.h>

int DAC1100address(0x90 >> 1); //DAC1100A0 I2C地址
int DAC1100read(0x91 >> 1);   //DAC1100A0 I2C地址
byte buff;

void setup()
{
Wire.begin();
Serial.begin(9600);
}

void loop()
{
    Serial.println( DAC1100() );
}

unsigned intDAC1100()
{
int i=0;
unsigned intval=0;

Wire.beginTransmission(DAC1100address);
Wire.write(0x8c);
Wire.endTransmission();
delay(200);
Wire.beginTransmission(DAC1100read);
Wire.requestFrom(DAC1100read, 2);    //只需读取高八位和低八位数据,第三节配置数据不需要读取
while(Wire.available())
{
    buff = Wire.read();
    i++;
}
Wire.endTransmission();
val=buff*255+buff;
return val;
}

么么哒,逗逼 发表于 2014-8-28 14:14:09

控制下速度试试,可能是采样率太高了

xzmoji 发表于 2014-8-29 11:06:22

byte readRegister(byte addressToRead)
{
Wire.beginTransmission(ADS1100);
Wire.write(addressToRead);
Wire.endTransmission(false); //endTransmission but keep the connection active

Wire.requestFrom(ADS1100, 1); //Ask for 1 byte, once done, bus is released by default

while(!Wire.available()) ; //Wait for the data to come back
return Wire.read(); //Return this one byte
}你先用这个函数测试一下 能不能读出寄存器的值 , Wire.endTransmission(false); 看看是不是这句代码的问题,希望能帮到你

尕老汉 发表于 2014-8-31 00:04:03

么么哒,逗逼 发表于 2014-8-28 14:14 static/image/common/back.gif
控制下速度试试,可能是采样率太高了

十分感谢,已解决

尕老汉 发表于 2014-8-31 00:04:33

xzmoji 发表于 2014-8-29 11:06 static/image/common/back.gif
你先用这个函数测试一下 能不能读出寄存器的值 , Wire.endTransmission(false); 看看是不是这句代码的问题 ...

十分感谢,已解决
页: [1]
查看完整版本: *******求助********* IIC转换芯片ADS1100不能读出数据