请教:24c02芯片的地址不是0xa0吗?
可在linux下iic访问24c02的地址会变为0x50?
------解决思路----------------------
是啊,这样说的话又说不过去了,希望高手指点啊
------解决思路----------------------
有没有这样的
slave_addr=0x50<<1
------解决思路----------------------
R_OR_W;
地址不对怎么访问24C02呢,你再仔细看哈。。。
------解决思路----------------------
24C02正如楼主所说,它的地址是可配置的,一般来说一个I2C器件的I2C地址由7bit的地址+读写位(R-1 or W-0),
假设数你将24c02的A2 A1 A0脚都接地的话,那么这个I2C器件的地址就固定为A0(写地址),读地址为A1
如果你要读取这个器件offset为0的值的话
S+A0 +ACK(From 24c02) +0x00 +ACK(24c02) + SR + A1+ ACK(24c02)+ Data(from 24c02) + ACK(Master)+ P
为可在linux下iic访问24c02的地址会变为0x50?
因为我们在编写I2C驱动的时候,我们是不会将A0的最后位算在内,驱动关心的只是7位的地址即A0>>1,在需要的时候,驱动会添加上读写位。
------解决思路----------------------
一般I2C的地址不都是以7bit来表示的么,不会超出0x7f,你说的0xa0肯定是补齐最后一位读写位了
到底是需要传入7bit还是补齐的8bit,需要看你的i2c驱动是怎么写的了
------解决思路----------------------
有些底层的东西就是这样搞的,没有理由,只是习惯而已。就像支持I2C通信的芯片,有些需要向左移1位,有些则不需要