鲁东大学毕业设计
低电平,并且在此期间保持低电平状态,以产生有效的应答信号。
[2]
2.5 数据传输格式
图5 数据传输格式
数据传输格式可介绍如下:在起始状态s之后,先发送一个字,它的前7位是从机地址,第8位是数据方向位R/W,0表示发送(写),1表示请求数据(读)。一次数据传输一般是由主机产生停止状态P而结束。但如果主机还要继续为其他器件传输数据,它可以产生另一个起始状态和寻址另一个从机,不需要先产生一个停止状态。在这种传输方式中,就可能有读写方式的组合。在I2C总线启动或应答信号后的第1~8个时钟脉冲,对应一个字节的8位数据传送。SCL高电平期间,数据串行传送;低电平期间为数据准备,允许总线上数据电平变化I2C总线启动后,传送的字节数一般没有限制,只要求每传送一个字节后,对方回应一个应答位。发送时,数据由高位开始依次发送。传送完一个字节,可以通过对时钟线SCL的控制使传送暂停。在I2C总线上,传输数据的数据格式: (1)主机发送器发送到从机接收器(数据传输的方向不变化)。
图6 主机写数据格式
(2)在第一个字节后主机立即读从机
4
鲁东大学毕业设计
图7 主机读数据格式
(3)组合格式
图8 读写组合格式
2.6 I2C总线的寻址
每个连接在I2C总线的器件,都具有一个唯一确定的地址。在任何时刻,I2C总线上只能有一个主机对总线实行控制权,分时地实现点对点的数据传送。器件(从机)的地址由7位地址位和一个方向位组成,是数据传输时起始状态S之后第1个字节。
D7A6D6A5D5A4D4A3D3A2D2A1D1A0D0R/W 图9 寻址格式
从机地址由固定位和可编程位组成。固定位是器件出厂时给定的,用户不能自行设置,它是器件的标识码。当主机发送了第1个字节后,系统中的每个从机(器件)都在起始状态S之后把高7位与本机的地址比较,如果与本机地址一样,则该从机被主机选中,是接收数据还是发送数据由 R/W 确定。当系统中使用了多个相同器件时,从机地址中的可编程位,使这些器件具有不同的地址;因此这些可编程位也规定了I2C总线上同类芯片的最大个数。
5
鲁东大学毕业设计
常见I2C器件的标识码
类别 静态RAM
型号 PCF8570/71 PCF8570C
A6~A3 1010 1011 1010 1010 1010 1010 1010 0100 0111 0111 0111 0111 1001 1010
EPROM
2
PCF8582 AT24C02 AT24C04 AT24C08 AT24C16
I/O口 PCF8574 PCF8574A
LED/LCD 驱动控制器
SAA1064 PCF8576 PCF8578/79
ADC/DAC 日历时钟
PCF8951 PCF8583
3 I2C总线应用
3.1 I2C总线扩展E2PROM
AT24CXX系列串行E2PROM是Atme1公司生产的具有I2C总线接口功能的串行E2PROM器件,有掉电保护功能,AT24C02容量为256B。AT24CXX系列的写入时间一般需要5-10ms。AT24C02的WP脚为测试端,系统根据器件地址选择A2、A1、A0的接线方式, I2C总线上可连接多达8片,总容量为8*256*8=2048*8,由于片内子地址采用8位地址指针寻址,超过256*8时要占用引脚地址。如果使用CAT24WC04,则A0作为子地址寻址位;使用CAT24WC08 ,CAT24WC16 时,A1 、A2分别作为子地址的寻址位,这时相应的外部A0、A1 、A2 无效。3节点地址AT24WC02XX 的器件地址是1010,A2、A1、A0 为引脚地址,按照图10中的连接方式引脚地址为000,因此CAT24WC02在系统中的寻址字节SLAW=A0H,SLAR=A1H[3]。
6
鲁东大学毕业设计
图10 24c02引脚接线图
AT24CXX 的数据操作格式;
在I2C总线中对CAT24WC02内部存储单元读写时,除了要寻址该器件的节点址,还须指定存读写的子地址SUBADR,按照CAT24WC02的器件手册读写,N个字节的数据操作格式如下: (1) 写N个字节的操作格式 S SLAW A SUBADR A Data1 A Data2 A … Data n A P (2) 读N个字节操作格式 S SLAW A SUBSDR A S SLAR A Data1 A Data2 A … Data n A P -3.2 I2C总线扩展I/O口
PCF8574是CMOS电路,是I2C总线中常用的I/O扩展芯片。该器件包含一个8位准双向
口和一个I2C总线接口。PCF8574电流消耗低,输出锁存具有大电流驱动能力,可直接驱动LED。它还带有一条中断接线(INT)可与MCU(Microprogrammed control unit)的中断逻辑相连。通过INT发送中断信号,远端I/O口不必经过I2C总线通信就可通知MCU是否有数据从端口传输。所以PCF8574可以作为一个单被控器[4]。
A0A1A2P0P1P2P3VSS12345678 1615VDDSDASCL 14PCF857413121110INTP7P6P5P4 9图11 PCF8574引脚
A2-A0:地址引脚;
P0-P7:8位准双向I/O口; SDA、SCL:I2C总线接口;
7
鲁东大学毕业设计
INT :中断请求输出,漏极开路输出。输入端P0-P7电平状态改变时,中断请求输出端出现低电平。PCF8574进行一次读/写操作后,撤销中断请求,复位为高电平 。 VDD:电源,+5V; VSS:地
以下示例应用PCF8574设计电路,功能为四个键盘控制对应LED,A0、A1、A2接地,所以器件地址位40H(写),41H(读)。
图12 PCF8574设计电路
3.3 I2C总线A/D及D/A转换
3.3.1 PCF8591芯片介绍[5]
PCF8591是具有I2C总线接口的8位A/D及D/A转换器。有4个A/D转换输入引脚,1个D/A模拟输出引脚。A/D 转换为逐次比较型。芯片引脚图如图15所示。电源电压典型值为5V。
图13 PCF8591芯片引脚
AIN0~AIN3:模拟信号输入端。
8