51单片机I2C协议设计案例

1 I2C协议介绍
1.1 I2C总线的物理拓扑结构
在这里插入图片描述
I2C总线物理上有SDA和SCL以及上拉电阻组成,这两条线分别叫做串行数据线和串行时钟线。通过对两条线的时序控制完成I2C协议信号的传递。在空闲状态,两根线被上拉电阻拉高。I2C协议为半双工通信,仅有一根数据线。
1.2 I2C总线特征
I2C总线上的每一个设备都可以作为主设备或者从设备(一般把CPU带I2C总线接口的模块作为主设备,其他设备作为从设备)。总线上的每一个设备都对应唯一的地址,I2C总线上挂接的设备总数量受最大点燃400pF和设备地址的限制。
I2C总线数据传输速率:标准模式下100kbit/s,快速模式下400kbit/s,高速模式下3.4Mbit/s,可通过I2C总线接口可编程时钟调整速率,同时也跟上拉电阻有关。I2C总线上的主从设备以字节为单位进行数据传递。
1.3 I2C总线协议
总线上的数据传输必须是以一个起始信号为开始,一个结束信号作为终止条件,起始信号和终止信号由主设备产生,然后等到从设备的通信。
起始信号:总线空闲时候,SCL和SDA都为高电平,SCL保持高电平,SDA由高到低,产生一个起始信号,之后总线处于忙状态,其他设备无法访问总线;SCL为高电平,SDA由低到高,产生一个终止信号。
产生起始信号之后,开始数据传递,在SCL的每个时钟周期在SDA上传输一个数据位
当一个字节的数据位从高到底的顺序传输完之后,从设备拉低SDA线,回传给主设备一个应答位。此时一个字节才真正的被传输完成(当从设备不能再接收主设备发送的数据时,从设备将回传一个否 定应答位)。数据传输的过程如下:
在这里插入图片描述
I2C总线上的每一个设备都对应一个唯一的地址,主从设备之间的数据传输是建立在地址的基础上,也就是说,主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据。向指定设备发送数据的格式如图所示:(每一最小包数据由9bit组成,8bit内容+1bit ACK, 如果是地址数据,则8bit包含1bit方向)。
在这里插入图片描述
1.4 I2C总线操作
I2C总线的操作模式大致可以分为以下几类:
(1)主设备往从设备写数据
在这里插入图片描述
(2)主设备从从设备读数据
在这里插入图片描述
(3)主设备往从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;或者是主设备从从设备中读数据,然后重启起始条件,紧接着主设备往从设备中写数据。数据传输格式如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值