8051单片机的I2C接口并行扩展
3.2 方式控制字
8051向控制寄存器CI0写控制字,实现对I2C接口的编程控制。CI0的控制字格式如下所示:
A2,A1,A0位:对与8051相连的I2C器件组的片选(器件地址)。对应不同值时选择不同的器件通信。
R/W:用来控制8051对I2C器件的读写操作。1表示8051对I2C器件读数据;0表示8051对I2C器件写数据。
M1M0:当S=1时的4种工作方式:
①I2C总线未连接,要进行写操作。
②I2C总线未连接,要进行读操作。
③I2C总线已连接,换一个I2C器件或换新地址,要进行写操作。
④I2C总线已连接,换一个I2C器件或换新地址,要进行读操作。
S:工作控制位。当S=0时,关闭I2C总线,其他情况S=1。
DZS:指明8051对I2C器件读写的地址数。具体为:
0:8051对I2C器件内单字节地址读写。
1:8051对I2C器件内双字节地址读写。
3.3 I2C模块对I2C传输协议的实现
根据I2C数据传输协议,时钟为高电平时,数据线由高电平向低电平跳变,启动I2C数据传输。然后每到来一个时钟脉冲,传送一位串行数据,第8个脉冲到来后,已完成一个字节的传输,第9个脉冲时,发送应答信号。写数据时,I2C器件收到数据,发送应答信号;读数据时,8051收到数据,发送应答信号。数据传送过程中,时钟为高电平期间,数据线上的内容保持不变。数据传送完毕,应答结束后,需要用停止信号停止数据传输,时钟高电平时,数据线由低电平向高电 55平跳变来实现此停止信号。
I2C模块实现I2C数据传输协议。start信号为1时,启动数据传输;write信号为1时,向I2C器件写数据,read信号为1时,向I2C器件读数据。
读写过程中,输出标志位flag、计数器dcnt,控制en的两位矢量,从而控制并串转换寄存器和串并转换寄存器的并入、移位、保持、清零操作。停止信号为1时,结束数据传输。
3.4 接口芯片的工作原理与控制过程
8051向控制寄存器CI0写控制字,实现对I2C接口的编程控制;向数据寄存器CI1写数据,实现对I2C接口的数据传输。
当bz=1时,8051才对数据寄存器读写,而每次读写后接口电路自动将bz置0,在接口电路完成有关操作等待8051的读写时将bz置1。
(1)I2C总线未连接,要进行写操作。8051的操作:
①写控制字W1;②当bz=1时写器件内地址第1字节;③当bz=1时写器件内地址第2字节…;④当bz=1时写第1字节…。
I2C的操作:
当接收到该控制字W1后操作为:①置bz=1,启动I2C总线;②根据控制字中的器件地址发出第1个字节(器件选择、写);③发送器件内地址,置bz=1;④发送数据内容,置bz=1…。
评论