IIC通信----基本原理

STM32F103标准库开发—目录


一、IIC 简介

IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。IIC是半双工通信方式。
IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源,但在任何时间点上只能有一个主控。

在这里插入图片描述
IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

IIC支持的传输速率如下:

模式速率
标准模式(Standard Mode)100kb/s
快速模式(Fast Mode)400kb/s
增强快速模式(Fast Mode Plus1Mb/s
高速模式(High Speed Mode)3.4Mb/s
极速模式(Ultra-FastMode)5Mb/s

二、IIC 总线协议

1. 时序图

IIC通讯主要包括:起始位数据传输8位(先高后低)、应答位终止位

具体如下:
在这里插入图片描述
通过时序图可知,IIC传输数据是先发高位,后发低位

2. 空闲状态----双高

一般情况下,数据线SDA和时钟线SCL都是处于上拉电阻状态
因为在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平
请添加图片描述

3. 起始位

当时钟线SCL 为高电平时,数据线SDA 由高电平向低电平跳变。
启动信号是一种电平跳变时序信号,而不是一个电平信号。

具体时序图如下图所示:
在这里插入图片描述

4. 数据传输位

IIC总线进行数据传送时,时钟线(SCL)上的信号为高电平期间,数据线(SDA)上的数据必须保持稳定
只有在时钟线(SCL)上的信号为低电平期间,数据线(SCL)上的高电平或低电平状态才允许变化

在这里插入图片描述
输出到数据线(SDA)上的每个字节必须是8位
数据传送时,先传送最高位(MSB)后传送最低位(LSB)
每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

5. 应答位

发送器每发送一个字节(8个bit),就在时钟脉冲 9 期间释放数据线,由接收器反馈一个应答信号。 主机SCL拉高,读取从机SDA的电平

对于反馈有效应答位ACK的要求是:
接收器在第9个时钟脉冲之前的低电平期间将数据线SDA拉低,
并且确保在该时钟的高电平期间为稳定的低电平。

具体时序图如下:
在这里插入图片描述

(1)应答信号

数据线(SDA)为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节。

在这里插入图片描述

(2)非应答信号

数据线(SDA)为高电平时,规定为非应答位(NACK),表示接收器没有成功接收该字节。

在这里插入图片描述

如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放数据线SDA,以便主控接收器发送一个终止信号P。

6. 终止位

当时钟线SCL 为高电平时,数据线SDA 由低电平向高电平跳变。
终止信号是一种电平跳变时序信号,而不是一个电平信号。

具体时序图如下图所示:
在这里插入图片描述


STM32F103标准库开发----IIC主控实验----普通I/O口模拟----底层驱动程序
STM32F103标准库开发----IIC主控实验----普通I/O口模拟----读写AT24Cxx系列EEPROM实验

AT24Cxx系列芯片中文数据手册----资源链接 点击下载
AT24C256读写操作----程序源码 点击下载

  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
IIC(Inter-Integrated Circuit)是一种双向串行通信协议,也叫做TWI(Two-Wire Interface),它由Philips公司开发,现在已经被广泛应用于各种嵌入式系统中。IIC通信协议基于主从架构,通过两根线进行通信,其中包括一个数据线(SDA)和一个时钟线(SCL)。 IIC通信协议的基本原理如下: 1. 通信起始 通信起始是指主机向从机发送起始信号,表示通信即将开始。通信起始的时序如下: 主机在SCL线上发送一个低电平,然后在SDA线上发送一个高电平,这个时候SDA线上的电平高电平,SCL线上的电平为低电平,表示起始信号已经发送。 2. 从机地址 从机地址是指主机向从机发送地址信息,以确定通信对象。从机地址的时序如下: 主机首先向SDA线上发送从机地址,从机地址是一个7位二进制数,最高位为0表示写操作,为1表示读操作,后6位为从机的地址。 从机接收到地址信息后,会发送一个应答信号,表示从机已经准备好接收数据。应答信号是由从机在SCL线上拉低SDA线来实现的。 3. 数据传输 数据传输是指主机向从机发送数据或从从机接收数据。数据传输的时序如下: 主机首先向SDA线上发送一个8位二进制数据,然后从机接收到数据后会发送一个应答信号,表示数据已经接收。 如果是主机向从机发送多个数据,则在发送完一个数据后,主机会继续发送下一个数据,直到所有数据传输完成。 4. 通信结束 通信结束是指主机向从机发送结束信号,表示通信已经结束。通信结束的时序如下: 主机在SCL线上发送一个高电平,然后在SDA线上发送一个低电平,这个时候SDA线上的电平为低电平,SCL线上的电平为高电平,表示结束信号已经发送。 总之,IIC通信协议是一种简单、可靠的通信协议,具有通信速率快、线路简单、可靠性高等优点,广泛应用于各种嵌入式系统中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

根号五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值