阅读Arduino的PCA 9554(i2c)

时间:2012-12-03 13:35:49

标签: c arduino i2c

我正在尝试从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总线上的其他设备读取。

1 个答案:

答案 0 :(得分: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));