chenpower 发表于 2018-10-23 11:28:00

关于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,不输出实际数据,不知道是哪里出问题,请大神看看哦。

chenpower 发表于 2018-10-23 14:33:32

没有人可以添写几句吗?:)

chenpower 发表于 2018-10-24 08:35:27

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]
查看完整版本: 关于I2C读取数据的代码问题