
🔥小龙报:个人主页
🎬作者简介:C++研发,嵌入式,机器人方向学习者
❄️个人专栏:《工科必装软件安装教程》《嵌入式的开端 ---- 51单片机》
✨ 永远相信美好的事情即将发生

文章目录
- 前言
- 一、IIC与UART协议
-
- [1.1 什么是IIC](#1.1 什么是IIC)
- [1.2 IC协议和UART协议的区别:](#1.2 IC协议和UART协议的区别:)
- [1.3 总结](#1.3 总结)
- 二、IIC的构成
-
- [2.1 IIC的硬件构成](#2.1 IIC的硬件构成)
- [2.2 主机与从机](#2.2 主机与从机)
- [2.3 IIC如何发送数据](#2.3 IIC如何发送数据)
- [2.4 IIC通信帧构成](#2.4 IIC通信帧构成)
- 三、IIC完整的通讯过程
-
- [3.1 主机发送一个字节到从机](#3.1 主机发送一个字节到从机)
- [3.2 主机读取从机一个字节](#3.2 主机读取从机一个字节)
- [3.3 发送读取多个字节](#3.3 发送读取多个字节)
- 总结与每日励志
前言
IIC(I2C)是嵌入式开发中核心的串行通信协议,凭借双线制、多主从、易扩展的特性,广泛应用于传感器、存储芯片等外设通信场景。本文从 IIC 与 UART 协议的核心差异切入,拆解 IIC 的硬件构成、数据传输规则、通信帧结构,再通过 "主机发 / 读单个字节""多字节传输" 等完整通信流程,通俗讲解 IIC 的工作逻辑,帮助初学者吃透协议本质,掌握 51 单片机 IIC 通信的核心原理。
一、IIC与UART协议
1.1 什么是IIC
IIC协议,又称I2C协议,是由PHILP公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。
1.2 IC协议和UART协议的区别:
UART协议: 一种异步的、点对点的串行通信协议。它通常用于两个设备之间的全双工通信。你需要 三根数据线(TX、RX、GND)来实现双向通信。

I2C: 一种同步的、多主从的串行通信协议。它使用非常少的引脚(两根线)就可以连接多个从设备。这两根线一根是时钟线,一根是数据线。

1.3 总结

二、IIC的构成
2.1 IIC的硬件构成

- IIC串行总线一般有两根信号线,
一根是时钟线SCL,另一根是数据线SDA,时钟线用于同步有效数据和控制通信速率,数据线是用来传输数据的。 - IIC总线会默认需要接上拉电阻,在没有设备发送数据时,使得IIC总线电平为高电平,
也就是如果IIC两根线的电平都为高电平时,代表总线当前为空闲状态。 - 特别注意:
一条总线上的每个从设备都有唯一的地址。
2.2 主机与从机
在上面的电路中,51单片机就是IIC通信的主机(master),就是老板,上班时间、下班时间、都是他来决定的,指令都是他来发出来的,他要找谁干啥,谁就干啥,一般主机就是我们的单片机。
2.3 IIC如何发送数据
例如:主机通过IIC发送0xF5(0b1111 0101)

从上图我们可以了解到一些信息,
IIC的有效数据,是在SCL高电平时读取的SDA电平。IIC的通信速率,是由SCL的速率决定的,SCL翻转速度越快,IIC总线速率越高,实际使用IIC的速率,需要根据从机,传感器可支持的最大速率而定。
2.4 IIC通信帧构成
一次完整的IIC通信,除了要发送数据外,还需要有其它信号一起完成,例如起始信号、一个或多个数据帧、应答位、停止信号组成

三、IIC完整的通讯过程
3.1 主机发送一个字节到从机

发送1Byte数据给从机过程 :
1.主机发送->起始信号
2.主机发送->从机地址7bit+写标志1bit
3.等待从机应答
4.主机发送->数据8bit
5.等待从机应答
6.主机发送->结束信号
3.2 主机读取从机一个字节

读取从机1Byte数据的过程 :
1.主机发送->起始信号
-
主机发送->从机地址7bit+读标志1bit
-
等待从机应答
-
主机读取->从机数据8bit
-
主机发送非应答信号(告诉从机停止发送)
-
主机发送->结束信号
3.3 发送读取多个字节

总结与每日励志
✨本文完整解析了 IIC 协议的核心知识点:从与 UART 的协议差异,到硬件构成、数据传输规则,再到主机发 / 读字节、多字节传输的完整通信流程,清晰呈现了 IIC"双线通信、主从协作、应答交互" 的核心逻辑。嵌入式通信协议的学习重在理解帧结构与交互流程,每一次对时序、应答的拆解,都是技术积累的过程。✨ 沉下心吃透每一个协议细节,你的代码终将精准驾驭各类外设通信,在嵌入式之路上稳步前行!
