0

我正在尝试从 arduino 中的 PCA9554 读取数据。硬件设置很简单:PCA9554的3个地址线都连接到高电平(+5 v),所以这个设备的地址是0x27。我用来读取值的代码如下:

 uint8_t i2cr8(uint8_t dev, uint8_t addr)
 {
      uint8_t val=-1;
      Wire.requestFrom(dev,(uint8_t)1);
      if(Wire.available()) {
          val = Wire.read();
       }
       return val;
  }

但它始终为 0。

这段代码有什么问题?

我认为硬件没有错误,因为我可以从 I2C 总线上的其他设备读取。

4

1 回答 1

0

这种方法有效:

//exact address depends on IC model and <A0:A2> wiring
#define dip_addr       0x38 
...

byte rdata = 0xFF;

Wire.beginTransmission(dip_addr);
Wire.send((uint8_t)0);  
Wire.endTransmission();

Wire.requestFrom(dip_addr,1);

if (Wire.available()) rdata = Wire.receive();

Serial.println ("DIP: " + String(rdata, DEC));
于 2014-09-28T13:12:20.370 回答