iic协议
好的,我们来用中文解释一下 I²C协议(通常也写作 IIC 或 I2C,中文常读作“I方C”)。
1. 核心概念
- 名称: I²C 的全称是 Inter-Integrated Circuit(内部集成电路)。顾名思义,它主要设计用于芯片之间的短距离通信,尤其是在同一块电路板上的集成电路之间。
- 本质: 它是一种串行(一位一位地传输数据)、同步(需要时钟信号同步)、半双工(同一时刻只能发送或接收,不能同时双向传输) 的主从式(Master-Slave) 通信总线协议。
- 核心特点: 只需要两根线!这使得布线简单,节省硬件资源(芯片引脚、PCB走线)。
2. 主要组成部分
- 两根通信线:
- SDA (Serial DAta Line - 串行数据线): 用于传输实际的数据位(无论是从主机到从机,还是从机到主机)。
- SCL (Serial CLock Line - 串行时钟线): 由主机(通常是微控制器)产生并控制的时钟信号线。它负责协调数据线上的数据传输节奏。数据在时钟的边沿(通常是上升沿或下降沿)被采样。
- 主设备 (Master): 负责启动和终止通信,产生时钟信号 (SCL),并寻址特定的从设备。一个总线上可以有多个主设备(多主模式),但最常见的是单个主设备(通常是微控制器或微处理器)。
- 从设备 (Slave): 响应主设备的寻址请求。每个从设备都有一个唯一的7位或10位地址(7位地址最常见)。主设备通过发送这个地址来选择要通信的从设备。总线上可以有多个从设备(典型应用)。
- 上拉电阻 (Pull-up Resistors): SDA 和 SCL 线在物理上都是开漏输出 (Open-Drain Output)。 这意味着:
- 设备只能将线路拉低到逻辑
0。 - 设备不能主动将线路拉高到逻辑
1。 - 为了让线路能回到高电平 (
1),必须在电源 (Vcc) 和 SDA/SCL 线之间连接上拉电阻。电阻值通常为几千欧姆(如 4.7KΩ)。当所有设备都不主动拉低线路时,上拉电阻将线路拉至高电平 (1)。这种设计允许多个设备共享总线而不会短路。
- 设备只能将线路拉低到逻辑
3. 工作原理(简化的通信过程)
- 空闲状态: SDA 和 SCL 线都处于高电平 (
1) (由上拉电阻维持)。 - 起始条件 (Start Condition - S): 当主设备想要开始通信时,它先在 SDA 线上产生一个从高到低的电平跳变,而此时 SCL 线仍然保持为高电平。这告诉所有从设备:总线被占用,准备接收地址。
- 寻址阶段: 主机紧接着在 SCL 时钟的同步下,依次发送 7位(或10位)从设备地址 + 1位读写控制位 (
R/W#)。R/W# = 0:表示主机接下来要写数据到从设备(主机发,从机收)。R/W# = 1:表示主机接下来要从从设备读数据(从机发,主机收)。
- 应答信号 (ACKnowledge - A): 在第9个时钟脉冲期间(地址+
R/W#总共8位后的第一个时钟),被寻址的从机必须将 SDA 线拉低(产生一个低电平)来向主机发送一个应答位 (ACK),表示“地址匹配,我收到了,请继续”。如果没有任何从机应答(SDA保持高电平),称为 NACK (Not ACKnowledge),表示地址无效或从机出错。 - 数据传输阶段:
- 写操作 (
R/W# = 0): 主机在 SCL 的同步下,每次发送 8位(1个字节) 数据到 SDA 线。每发送完一个字节,从机都必须在第9个时钟脉冲期间发送一个 ACK 信号(拉低 SDA),主机才能继续发下一个字节。 - 读操作 (
R/W# = 1): 从机在主机产生的 SCL 时钟同步下,每次发送 8位(1个字节) 数据到 SDA 线。主机每接收完一个字节,在第9个时钟脉冲期间:- 如果主机想继续读取下一个字节,就发送一个 ACK(拉低 SDA)。
- 如果主机不想再读了(这是最后一个字节),就发送一个 NACK(保持 SDA 为高)。
- 写操作 (
- 停止条件 (Stop Condition - P): 主设备完成通信后,在 SCL 线为高电平期间,在 SDA 线上产生一个从低到高的电平跳变。这标志着通信结束,总线恢复空闲状态(SDA 和 SCL 都为高电平)。
4. 关键特性
- 多主多从: 支持多个主设备和多个从设备共享同一总线(需要仲裁机制解决冲突)。
- 软件定义地址: 大多数从设备(如传感器、EEPROM、RTC、IO扩展器)的 I²C 地址由芯片制造商固定或可以通过硬件配置(如连接地址引脚到
Vcc或GND)设定有限的几种地址。 - 数据传输速率:
- 标准模式 (Standard-mode): 最高 100 kbit/s
- 快速模式 (Fast-mode): 最高 400 kbit/s
- 快速模式+ (Fast-mode Plus): 最高 1 Mbit/s
- 高速模式 (High-speed mode): 最高 3.4 Mbit/s
- 超快模式 (Ultra Fast-mode): 最高 5 Mbit/s (单向传输,主要用于 LED 驱动器)
- 仲裁 (Arbitration): 在多主系统中,如果两个或更多主设备同时尝试发送起始条件,总线上的线“与”特性(只有拉低有效)保证了最终只有一个主设备赢得总线控制权(发送
0的主设备优先)。 - 时钟拉伸 (Clock Stretching): 从机可以通过在接收到一个字节后(或在寻址后)将 SCL 线拉低来延迟主机的下一个时钟脉冲。这给低速的从设备提供了足够的处理时间(例如准备数据、执行内部写入操作),主机检测到 SCL 被拉低后会等待其释放(变高)后才继续发送时钟。这是 I²C 独有的重要特性。
5. 主要优缺点
- 优点:
- 引脚少: 仅需两根线(SDA, SCL),节省芯片引脚和 PCB 空间。
- 布线简单: 总线结构清晰,易于连接多个设备。
- 复杂性低: 协议本身相对 SPI 简单,易于软件实现。
- 内置寻址: 硬件支持设备寻址,无需额外的片选线。
- 支持多主(可选)。
- 支持时钟拉伸。
- 广泛应用: 大量传感器、存储芯片、接口芯片都支持 I²C。
- 缺点:
- 半双工: 同一时刻只能单向传输数据,速度不如全双工的 SPI。
- 速度相对较慢: 标准模式仅 100kbps,即使高速模式也比不上 SPI 的几十甚至上百 MHz。
- 总线电容限制: 总线上的电容(来自导线和设备)会限制通信速度和最大总线长度。
- 软件开销: 软件实现(Bit-banging)可能占用 CPU 资源;硬件 I²C 控制器有时有复杂的配置或已知的缺陷(bug)。
- 地址冲突: 如果多个从设备地址相同(硬件限制或配置错误),会导致通信失败。
6. 常见应用场景(例子)
- 微控制器读取传感器数据(温度、湿度、加速度、气压等)。
- 微控制器读写外部 EEPROM/Flash 存储器。
- 微控制器读取实时时钟 (RTC) 芯片的时间。
- 微控制器控制 LCD/LED 显示器 或驱动器。
- 微控制器扩展 GPIO (通用输入输出) 端口(通过 IO 扩展器芯片)。
- 微控制器设置数字电位器或数字音量控制芯片。
- 微控制器与数字信号处理器 (DSP)、音频编解码器 (CODEC) 通信。
总结
I²C 是一种极其重要且广泛应用的芯片间串行通信协议。其核心优势在于仅需两根线即可实现多设备通信,具有协议相对简单、连线方便、成本低的优点。虽然在速度上不如 SPI,但其在连接各种低速外设(如传感器、小型存储器、实时时钟、接口芯片等)方面是首选方案。理解其两根线(SDA, SCL)、主从结构、地址寻址、应答机制(ACK/NACK) 以及 起始/停止条件 是掌握 I²C 的关键。
FPGA实现IIC协议的设计
今天给大家带来的是IIC通信,IIC协议应用非常广泛,例如与MPU6050进行通信,配置OV5640摄像头、驱动OLED屏幕等等,都需要使用到
2024-03-04 10:49:32
什么是IIC协议
IIC协议最早1982年由飞利浦公司设计开发,是一种两线制(SDA + SCL)的串行通行方式,提供了主从机之间通行的一种方案,在今天也是被广泛的应用在很多的产品设备上。
2023-02-10 10:53:16
常用通信协议——IIC协议实战项目(二)(STM32+MPU6050+AT24C02)
前面讲了IIC协议的介绍和IIC协议的编程实现,接下来我们来做一个关于
资料下载
鼠爱米
2021-12-06 16:06:09
常用通信协议——IIC协议实战项目(一)(STM32+MPU6050+AT24C02)
前面讲了IIC协议的介绍和IIC协议的编程实现,接下来我们来做一个关于
资料下载
佚名
2021-12-06 15:51:08
如何使用代码实现的IIC协议
1. 综述 由上篇博客可知道IIC协议如何用代码实现,本篇博客就不涉及协议内容,只讲解如何使用。 本次的实验传感为:DS3231(时钟模块)
IIC协议的相关资料下载
关于MPU6050学习的一些总结之二IIC协议前言一、IIC总线前言在查阅并了解了MPU6050的芯片手册后,已经对MPU6050有了大致的了解
什么是IIC和SPI总线协议?
通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机