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