用I2C总线扩展I/O
在系统应用中,需监控不同的输入信号或控制几个输出信号,有时把这些信号线直接连接到微处理器引脚。这些监控和控制用软件来做。然而,这种技术需要很多微处理器引脚。
本文引用地址:http://www.amcfsurvey.com/article/78555.htm 为了节省微处理器引脚,另一种可采用的方法是通过胶合逻辑接口实现监控和控制线与微处理器的通信。采用这种方法,连接到微处理器引脚的连线较少。而开发这样的系统比较麻烦和费时,因为需要更多的器件、更多的连线路由或更复杂的码开发。
本文给出监控和控制几个外设信号的良好方案,为接入并行总线提供一简单经济的方法,为接口不同的电子器件提供方便的途径。此方案是基于标准PCF8574和PCF8574A器件基础上的。这些器件的I2C地址是不同的。在此把这两种器件当做扩展器。
这种扩展器具有1个2线I2C通信总线,可与双向数据传输的I2C主机接口。I2C总线由2条信号线和1条地线组成。信号线是双向串行数据(SDA)线和双向串行时钟(SCL)线(见图1)。SDA和SCL线经上拉电阻连接正电源电压。在总线闲置时,这两条信号线上拉为高态。
图1 I2C总线器件通过双向SDA和SCL线连接到I2C总线上
连接到I2C总线上的每个器件,根据其功能都具有自己的专门地址,每个器件可做为接收器或发送器。可配置扩展器具有专门的7位地址。PCF8574 7位地址的前4位是0100,而PCF8574A是0111。低3位地址由器件引脚A2、A1、A0设置。因此,器件的完整的专门地址由A2、A1和A0设置。表1示出PCF8574和PCF8574A专门地址的各种可能设置。
这种为器件设置专门地址的能力使得在同一I2C总线上可具有多达8个PCF8574和8个PCF8574A器件。因为每个器件具有8个I/O引脚,所以采用PCF8574和PCF8574A可使单个I2C总线能控制多达128个I/O。
I2C与扩展器的通信由主机进行初始化,主机发送与主机通信的从器件的地址位。地址字节的第1部分由4位地址码组成,对于PCF8574器件设置为0100、PCF8574A器件设置为0111。片选位(A2、A1、A0)跟在地址码之后。这使得在1个总线上能用多达8个PCF8574和8个PCF8574A并能确定存取那个器件。对于所响应的器件,其地址字节中的片选位必须对应相应A2、A1和A0引脚上的逻辑电平。图2所示的电路用8个PCF8574和8个PCF8574A器件控制和监视高达128个I/O。
图2 用PCF8574和PCF8574A实现I/O扩展的电路
评论