*******求助********* 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;
}
控制下速度试试,可能是采样率太高了 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-28 14:14 static/image/common/back.gif
控制下速度试试,可能是采样率太高了
十分感谢,已解决 xzmoji 发表于 2014-8-29 11:06 static/image/common/back.gif
你先用这个函数测试一下 能不能读出寄存器的值 , Wire.endTransmission(false); 看看是不是这句代码的问题 ...
十分感谢,已解决
页:
[1]