24Cxx系列EERPOM芯片与时钟芯片PCF8563都属于I2C接口,本文讨论的是关于他们两种芯片共用一组I2C接口时的情况。如果各用一组I2C接口,就用不着下面讲的内容了。
24CXX系列的芯片包括24c01 24c02 24c04 24c08 24c16。芯片引脚图如下图所示:
A0 A1 A2接地或者接VCC,来定义EEPROM的I2C地址,但是并不是所有的24cxx都会用到这3个引脚,请看下图:
24C01和24C02的A2 A1 A0 3个管脚用来定义地址,也就是说,一个I2C总线上最多可以挂8个24C01或者24C02,不会冲突。
2404只用A2 A2管脚定义地址,P0为内部空间的页地址,也就是说,一个I2C总线上最多可以挂4个24c02,不会冲突。
24c08只用A2管脚定义地址,P0 P1为内部空间的页地址,也就是说,一个I2C总线上最多可以挂2个24c08,不会冲突。
24c16的A2 A1 A0管脚纯粹没有起作用,相当于3个NC引脚,接什么都无所谓,一个I2C总线上只能接1个24c16。
PCF8563引脚定义如下:
他的外部没有硬件地址定义引脚,只有芯片内部定义了一个固定地址:
如果现在一个板子上,24c16和pcf8563共用一个I2C接口,就会产生冲突了,不是24c16不能用,就是PCF8563不能用。因为,当你读PCF8563的某个寄存器时,实际上,也是在读24C16上001页的内容;当你写PCF8563的某个寄存器时,也是在给24C16的001页写内容。所以,一个板子上,要想同时使用24C16和PCF8563,只能是各用一个I2C口,不能共用一个I2C口。
如果现在一个板子上,24c08和PCF8563共用一个I2C接口,必须把24C08的A2引脚接地,否则就会产生冲突。
如果现在一个板子上,24C04和PCF8563共用一个I2C接口,24C04的A2和A1管脚,不能都接地,否则就会产生冲突。
如果现在一个板子上,24c02或者24C01和PCF8563共用一个I2C接口,那么A2 A1 A0管脚不可以接成 0 0 1,否则就会产生冲突。