IIC通信基础

一、IIC 简介

IIC(全称Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线它是由数据线 SDA 和时钟线SCL构成的串行总线

#注意:IIC通信有软件方式和硬件方式之分,软件IIC是一种通过软件模拟IIC通信协议的技术,它不依赖于硬件IIC外设,而是使用GPIO引脚来实现IIC通信的时序和信号,需要通过编程来模拟IIC信号,也就是说软件IIC需要用两个GPIO引脚来分别模拟SCL线和SDA线的时序和信号。硬件IIC则是指微控制器或处理器内部已集成IIC通信模块,它由专用的硬件电路组成,可以自动处理IIC通信的时序和信号,二者主要区别在于实现方式。

IIC总线的特点

①总线由数据线 SDA和时钟线 SCL构成,SDA用来传输数据,SCL用来同步数据收发。

②总线上每一个器件都有一个唯一的地址识别,只需要知道器件的地址,根据时序就可以实现微控制器与器件之间的通信。

③数据线 SDA 和时钟线 SCL 都是双向线路,都通过一个电流源或上拉电阻连接到正的电 压,所以当总线空闲的时候,这两条线路都是高电平。

④总线上数据的传输速率在标准模式下可达 100kbit/s 在快速模式下可达 400kbit/s,在高速 模式下可达 3.4Mbit/s

⑤总线支持设备连接。在使用 IIC 通信总线时,可以有多个具备 IIC通信能力的设备挂载在上面,同时支持多个主机和多个从机,连接到总线的接口数量只由总线电容400pF 的限制决定。IIC总线挂载多个器件的示意图如下所示:

二、IIC 总线协议

IIC总线时序图如下所示:

① 起始信号:SCL 为高电平期间SDA 由高到低的跳变

起始信号是一种电平跳变时序信号,而不是一个电平信号。该信号由主机发出,在起始信号产生后,总线就处于被占用状态,准备数据传输。

② 停止信号:SCL 为高电平期间SDA 由低到高的跳变

停止信号也是一种电平跳变时序信号,而不是一个电平信号。该信号由主机发出,在停止信号发出后,总线就处于空闲状态。

③ 应答信号:发送器每发送一个字节,就在时钟脉冲 9 期间释放数据线,由接收器反馈一个应答信号。

应答信号低电平时,规定为有效应答位(ACK 简称应答位),表示接收器已经成功地接收了 该字节;应答信号为高电平时,规定为非应答位(NACK,一般表示接收器接收该字节没有成功。观察上图标号③就可以发现,有效应答的要求从机在第 9 个时钟脉冲之前的低电平期间将 SDA 线拉低并且确保在该时钟的高电平期间为稳定的低电平。如果接收器是主机,则在它收到最后一个字节后,发送一个NACK 信号,以通知被控发送器结束数据发送,并释放 SDA 线,以便主机接收器发送一个停止信号。

④数据有效性:

IIC 总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化数据在 SCL 的上升沿到来之前就需准备好。并在下降沿到来之前必须稳定

⑤ 数据传输:

I2C 总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在 SCL 串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。

⑥ 空闲状态:

IIC 总线的 SDA SCL 两条信号线同时处于高电平时规定为总线的空闲状态

三、IIC 通讯过程

1、主机写数据到从机

(数据传输方向为由主机到从机,即主机写入数据)

①主机发送起始信号

②主机发送从机地址+0(写操作)组成的8位数据;

③所有从机验证是否是自己的设备地址,假如是自己的设备地址,从机发送应答信号

④主机开始发送待传输数据,主机每发送一位,从机发出应答信号,依次循环;

⑤最后一位数据发送完成后,主机等待从机的应答信号,收到从机发出的应答信号后,主机发送停止信号

主机写操作通讯过程如下图所示:

2、主机读数据由从机

(数据传输方向为由从机到主机,即主机读出数据)

①主机发送起始信号

②主机发送从机地址+1(写操作)组成的8位数据;

③所有从机验证是否是自己的设备地址,假如是自己的设备地址,从机发送应答信号

④从机继续发出步骤②的8位数据,发送完之后,从机等待主机的应答信号;

⑤主机收到数据,发送应答信号,从机开始发送待传输数据,从机每发送一位数据,主机发出应答信号,依次循环,直到主机接收到所需数量的字节;

⑥主机完成数据接收后,主机发送非应答信号,停止接收数据。

主机读操作通讯过程如下图所示:

①主机发送起始信号

②主机发送从机地址+0(写操作)组成的8位数据;

③所有从机验证是否是自己的设备地址,假如是自己的设备地址,从机发送应答信号

④从机继续发出步骤②的8位数据,发送完之后,从机等待主机的应答信号;

⑤主机收到数据,发送应答信号,从机开始发送待传输数据,从机每发送一位数据,主机发出应答信号,依次循环,直到主机接收到所需数量的字节;

⑥主机完成数据接收后,主机发送非应答信号,停止接收数据。

主机读操作通讯过程如下图所示,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值