原创 使用USB2I2C-SIP8和PCF8574实现基于I2C总线扩展 IO

2010-8-24 14:02 3354 15 10 分类: 通信

范例四 使用USB2I<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2C-SIP8PCF8574实现基于I2C总线扩展 IO<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


l  硬件平台:USB2I2C-SIP8PCF8574


USB2I2C-SIP8USBIO科技发展有限公司的USBI2C接口适配器系列的一种,具有SIP8的封装方式,体积小,可以很方便在嵌入到各种设备仪表之中,USB2I2C-SIP8支持3.3V5V电压供电。


PCF8574是一款I2C串行总线转并口输出的扩展芯片,带漏极开电路的中断输出,可以兼容大部分的微控制器,完成数据的输入输出,IO口带锁存输出,并具有较大的电流驱动能力,可以直接驱动LED


l  硬件连线


如下图所示给出了PCF8574USB2I2C-SIP8的电路原理图。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


5.19 PCF8574I2C-并口的扩展电路原理图


本例令I2C器件地址引脚A0,A1,A2接地,因此PCF8574的设备地址为0x40,下面是实验搭建的电路。



5.20 PCF8574I2C-并口的扩展实验电路


5.20中,P0P1P4,P5分别接了25V直接驱动的发光二极管L1,L2的负正极,用以观察并口的输出电平。INT中断引脚接微控制器的INT端,当外部数据通过P0-P7口输入的时候,PCF8574产生一个边缘信号触发微控制器的中断,在中断服务程序中完成I2C数据的读取。本文未采用微控制器,INT中断未接,采用手动I2C读取数据。


l  范例步骤


1) 按图5.195.20所示,搭建好实物电路,启动USB-ezIO,这里选用I2C接口菜单下的I2C测试模块来完成PCF8574I2C-并口功能演示,如下所示:



5.21 I2C协议测试模块


数据输出实验


2) 首先,完成IO口的数据输出实验,即通过PCF8574I2C的串行数据通过P0-P7并行输出。下面是PCF8574的写模式下的时序图。



5.22 PCF8574I2C写模式下的时序


从时序图中可以得到第一个指令字节为0x40(写模式),第二、三字节为数据,测试表明PCF8474可以支持连续多字节的输出。这里需要注意的是时序中第一个数据字节的P51,而时序图表明P5输出一直为低电平,而事实的测试表明,P5在输出的时候和其他输出位是一样的,因此这个时序图有些问题。我们来看几个例子。例如使得L1,L2均点亮, L2L1灭,L1L2灭,设置分别如下:



a



(b)



(c)


5.23 (a)(b)(c)I2C协议测试模块的IO输出设置


得到的实验结果分别如下所示:


        


a1               (b1)                        (c1)


5.24 (a1)(b1)(c1)PCF8574IO输出结果


数据读取实验


为了测试读取P0-P7口的电平,实验中将P0P1接高电平,P2,P3接低电平,其余的引脚悬空,来读取PCF8574P0-P7的电平值,PCF8574I2C的读时序如下所示:



5.25 PCF8574I2C读模式下的时序


从时序图可以看到,PCF8574读模式下的设备地址为0x41,因此USB-ezIO模块设置和读取的结果如下:



5.26 USB-ezIO读取的PCF8574P0-P7的输入电平


读取的结果是3,P0,P1高电平,P2,P3低电平,P4-P7低电平,这里注意,P4-P7悬空为什么是低电平,这是因为PCF8574是带锁存输出,当读取输入电平时,读取的是端口的锁存器内部的电平,而不是引脚电平,由于最后一次输出操作输出为0x02,因此,P4-P7的锁存器内的电平均为0,所以读取的结果为3

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
15
关闭 站长推荐上一条 /3 下一条