采用微小的模拟开关解决I²C总线的地址冲突\r\n
Abstract
利用一个小型SPDT开关解决2线寻址冲突问题,本文给出的电路说明了如何通过一个简单开关为两个具有相同地址的元件提供适当的地址。
为避免地址冲突,I²C总线上的每个外设器件都必须具有唯一的地址,然而有时可以为多个外围器件分配相同的地址。图1所示电路通过使I²C总线在两个具有相同地址的外设器件之间进行选择,从而解决了地址冲突问题。
图1. 采用一个双路模拟开关(IC1,MAX4733)及一根控制线(SELECT)实现I²C总线对具有相同地址的两个外设器件的选择。
通常的I²C总线是一个集电极开路的两线串行接口,它包括一条时钟线和一条双向传输的数据线。I²C总线允许一个控制器(主机)在数据线上先发送一个串行地址选择一个特定的器件(从机),然后再发送相应的命令或数据。通过拉低时钟线,主机和从机可以在串行数据线上双向发送数据。从机将时钟线拉低产生等待状态。然而,由于集电极开路结构使总线开关复杂化,不能由CMOS输出的与门或如74HC157这样的数据选择器实现。
图1中所示的外设器件是Philips®公司的I²C接口实时时钟芯片(PCF-8583)及大容量I²C接口EEPROM (Microchip®公司的M-24LC16)。这两个外设均具有16进制内部从地址A0 (这是由于该EEPROM占用了全部地址,地址A0被它占用亦不可避免)。图中的模拟开关用来选择二者之一。由于I²C总线的开始条件为:数据线(SDA)电平变低,然后时钟信号再变低,所以器件选择只与SDA有关。为了实现对二者的选择,主机通过一个端口引脚控制该双路SPST模拟开关的状态。
MAX4733是一个双路单刀/单掷(SPST)、CMOS模拟开关,很适合完成上述控制功能。由于它同时具有常开、常闭开关,因而不再需要另外的反相器或控制线便可完成二选一的功能。该开关具有极低的导通电阻和静态电源电流(1µA,最大值),因而特别适用于工作电压低至2V的场合。器件采用三种封装类型:8引脚µMAX®、8引脚TDFN-EP和9焊球晶片级封装(UCSP™)。