关于I2C读取数据的代码问题
void setup(){
Serial.begin(9600);
Wire.begin();
}
void loop()
{
Wire.beginTransmission(address);
Wire.write(0x80);
Wire.write(Register_VOLT1);
Wire.endTransmission();
Wire.beginTransmission(BQ78PL116_address);//转换为7位地址
Wire.write(0x81);
Wire.endTransmission();
Wire.requestFrom(0x81,2);
if(Wire.available()<=2);
{
VOLT1_L = Wire.read();
VOLT1_H = Wire.read();
VOLT1 = VOLT1_H<<8 | VOLT1_L;
}
Serial.print(VOLT1);
Serial.println("mV");
delay(1000);
}
依照时序图写了这个测试程序,但是一直输出65535,不输出实际数据,不知道是哪里出问题,请大神看看哦。 没有人可以添写几句吗?:) void loop()
{
Wire.beginTransmission(address);//开始发送数据到对应地址的从机
//Wire.write(0x80);
Wire.write(Register_VOLT1);//发送数据寄存器地址命令
Wire.endTransmission();//停止发送
//Wire.requestFrom(0x81,2);
//Wire.requestFrom(address,2);//通知从机上传2个字节的数据
if(Wire.available()>0);//主机接收到数据时
{
VOLT1_L = Wire.read();
VOLT1_H = Wire.read();
VOLT1 = VOLT1_H<<8 | VOLT1_L;
}
Serial.print(VOLT1);
Serial.println("mV");
delay(1000);
}
将程序弄成这样,还是串口输出65535,不是实际数据。
页:
[1]