单片机 C51 实现 I2C 虚拟总线
The simulating application of I2C-BUS by 80C51
摘要:本文介绍了 I2C 总线的基本结构、工作原
理,并使用单片机 C51 编程实现 I2C 总线的功能,
即 I2C 总线的虚拟技术。
关键字:C51; I2C; 总线;
分类号:TN911
文献标识码:
A
Abstract: The basic structure and operation
criterion of I2C-BUS were introduced in this
paper, and the functions of I2C-BUS were
realized by 80C51, this is the simulated
technology of I2C-BUS.
Keywords: C51; I2C; bus;
1.前言
I2C(Inter-Integrated Circuit)总线是由
Philips 公司推出的一种二线制串行总线,用于连
接微控制器及其外围设备。它允许若干兼容器件
(如存储器、A/D 和 D/A 转换器,以及 LED、LCD
驱动器等)共享总线。它是同步通信的一种特殊形
式,具有接口线路少,控制方式简便,器件封装
体积小,通信速率较高等优点。近年来 I2C 在微
电子通信控制等领域得到广泛的应用。
2.I2C 总线概述
I2C 总线通过串行数据线(SDA)和串行时钟线
(SCL)与连到总线上的 IC器件之间进行数据传输。
SDA 和 SCL 都是双向 I/O 线路,通过上拉电阻连接
正电源,连接总线的器件的输出级必须是集电极
开路或漏电极开路,这样才能够实现“线与”功
能。在标准模式下,I2C 总线的传输速率可达
100Kbps。
I2C 总线是一种多主机的总线,即可以连接多
个能控制总线的器件,但同一时刻只能有一个器
件控制总线而成为主机。
3.位传输
I2C 总线空闲时,SDA 和 SCL 都保持高电平。
数据传输时,每传输一个数据位必须产生一个时
钟脉冲,时钟脉冲一般由主机产生。SDA 线上的数
据必须在 SCL 高电平周期保持稳定,SDA 线的高低
电平状态只能在 SCL 线是低电平时才能改变(如图
一)。在标准模式下,SCL 线高低电平宽度必须大
于 4.7us。
图一 位传输
4.开始信号和结束信号
开始信号(S)和结束信号(P)由主机产生。总
线在开始信号以后被认为处于忙的状态,在结束
信号以后被认为再次处于空闲状态。在传输过程
中,由于传输错误等原因,可以再次产生一个开
始信号,即重复开始信号。
●开始信号(重复开始信号):SCL 为高电平时,
SDA 由高电平向低电平跳变,开始传送数据。
●结束信号:SCL 为低电平时,SDA 由低电平向
高电平跳变,结束传送数据。(如图二)。
图二 开始和结束信号
5.数据传输
开始信号后,就可以进行数据的传输。主机
发送到SDA线上的每个字节必须为8位,首先传输
的是数据的最高位(MSB)。每次传输可以发送的字
节数量不受限制。主机或从机每接收一个字节后
必须返回一个响应位(ACK)。(如图三)。
图三 数据传输
评论0