news 2026/3/5 6:29:14

I2C从入门到精通之四:I2C从设备的地址address

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
I2C从入门到精通之四:I2C从设备的地址address

0,引言

在上一篇文章我们讲解了《I2C从入门到精通之三:I2C信号的特性和操作》,今天我们继续接着介绍I2C从设备的地址address。Master主设备没有地址,只有从设备才有地址address,地址address是区分不同从设备的唯一标识。

所有I2C主题的文章都会收录在《深入浅出聊I2C》https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzU3NDY3OTA2Nw==&action=getalbum&album_id=4272525982776868870#wechat_redirect合集里,欢迎评阅。通过这个专集的阅读,你将成为I2C专家。

百度网盘分享的文件

上如是I2C学习资料和标准(pdf格式),需要下载的朋友,请关注本微信公众号“硬件工程师宝典”,在对话框内回复“I2C”,将获取标准下载链接。其中“I2C_Spec_Rev7_2021_UM10204.pdf”这份文件是最新的I2C specification, 希望大家重点阅读。

一、I2C从设备为什么需要地址(怎么区别不同的I2C设备)

I2C(Inter-Integrated Circuit)从设备需要地址,主要原因是为了实现多主多从的总线通信机制,并确保数据能够准确地发送到目标设备。

多设备共享总线:I2C总线设计为允许多个主设备和多个从设备共享同一对通信线(SDA和SCL)。如果没有地址,主设备将无法知道它正在与哪个从设备通信,从设备也无法知道主设备发送的数据是给自己的。

选择目标设备:地址是主设备用来“点名”特定从设备的唯一标识。当主设备想要与某个从设备通信时,它会首先广播该从设备的地址。只有地址匹配的从设备才会响应并参与后续的数据交换。

避免冲突:在一个总线上有多个从设备时,地址机制可以防止数据冲突和混淆。每个从设备只响应自己的地址,从而确保通信的有序性。

协议要求:I2C协议本身就规定了在每次通信开始时,主设备必须发送从设备的地址,这是协议的基本组成部分。

二、I2C从设备的地址有哪些类型

I2C(Inter-Integrated Circuit)设备的地址设置主要有以下几种类型,这些设置决定了主设备如何识别和选择总线上的从设备。

1. 7位地址 (7-bit Addressing)

这是I2C总线上最常见的地址类型。

构成:一个7位的地址,加上一个读/写 (R/W) 位(第8位),共同构成一个字节(8位)。R/W位为0表示写操作,为1表示读操作。如图1所示。

因此,I2C地址要左移动一位给读写位。

1. I2C从设备地址格式

地址范围:理论上可以寻址128个设备(2^7),但其中有一些保留地址用于特殊功能(如通用呼叫地址、CBUS地址等),所以实际可用地址数量会少一些。

1) 设置方式:

固定地址(Fixed Address):

许多不同类型的I2C设备(例如,温度传感器、EEPROM、实时时钟芯片等)由制造商分配了不同的默认7位I2C地址。

举例: 一个温度传感器的地址可能是0x48,而大多数EEPROM(如AT24C02)可能有一个固定的基础地址,例如0x50(二进制1010000)。由于它们的地址不同,主设备可以通过发送不同的地址来选择与哪个设备通信。

硬件可配置地址(Hardware Configurable Address):

芯片上会提供一个或多个地址引脚(通常标记为A0, A1, A2等),用户可以通过将这些引脚连接到VCC(高电平)或GND(低电平)来设置地址的低位。这允许在同一I2C总线上连接多个相同型号的设备。

例子:

AT24C02 EEPROM: 常见的地址范围是0x50到0x57。它通常有3个地址引脚A0、A1、A2,如图2所示。

图2. AT24C02 EEPROM的地址pin脚

通过将这些引脚连接到高电平或低电平,可以设置地址的最后三位。例如,如果A0=GND, A1=GND, A2=GND,地址就是0x50;如果A0=VCC, A1=GND, A2=GND,地址就是0x51。以此类推,可以得到0x50到0x57共8个不同的地址,如图3所示。

图3. AT24C02 EEPROM的地址decode

A2 A1 A0 = GND GND GND -> 地址 0x50

A2 A1 A0 = GND GND VCC -> 地址 0x51

...

A2 A1 A0 = VCC VCC VCC -> 地址 0x57

这样,你就可以在同一I2C总线上连接多达8个AT24C02 EEPROM,每个都有唯一的地址。

主设备在通信时,会根据需要选择发送0x50、0x51等地址来与特定的EEPROM进行数据交换。

PCF8574 I/O扩展器:常见地址范围是0x20到0x27。它也有3个地址引脚A0、A1、A2,通过同样的方式配置。

MPU6050 (陀螺仪/加速度计):通常有一个AD0引脚。如果AD0接地,地址可能是0x68;如果AD0接VCC,地址可能是0x69。

2. 10位地址 (10-bit Addressing)

10位地址是为了扩展I2C总线的寻址能力而引入的,允许寻址更多的从设备(理论上可达1024个)。

构成:10位地址需要两个字节来传输。

第一个字节:包含一个特殊的起始码(11110),接着是10位地址的高2位,以及读/写 (R/W) 位。

第二个字节:包含10位地址的低8位。

地址范围:理论上可以寻址1024个设备(2^10)。

设置方式:通常由制造商在芯片设计时确定,或者通过硬件引脚进行有限的配置。

例子: 某些特定的存储器或高性能传感器可能会使用10位地址。例如,某些高级的EEPROM或ADC(模拟数字转换器)设备可能会支持10位地址。

3. 总结

大多数常见的I2C设备都使用7位地址,并且通过硬件引脚(A0, A1, A2等)来配置地址的低位,以允许在同一总线上连接多个相同型号的设备。了解设备的地址设置方式是进行I2C通信编程的关键一步。

三、 哪些I2C地址被保留不能给从设备使用

在I2C(Inter-Integrated Circuit)通信协议中,为了实现特殊功能和协议的兼容性,有特定的地址被保留,不能分配给普通的从设备使用。这些保留地址确保了总线的正常运行和未来扩展性。

根据I2C规范,主要有两组地址范围被保留,它们是7位地址空间中的 0000 XXX 和 1111 XXX(其中X表示可以是0或1)。这意味着这些地址不能作为普通从设备的唯一地址。如图4所示。

图4 被保留的I2C地址

以下是具体的保留地址及其用途:

1) 0000 000 (0x00) - 通用呼叫地址 (General Call Address):

当主设备向此地址发送数据时,所有支持通用呼叫功能的从设备都会响应并接收数据。

通用呼叫地址的第二个字节通常包含进一步的指令,例如复位或写入可编程地址的部分。

如果R/W位为0,则表示通用呼叫写入。

2) 0000 000 (0x00) - START 字节 (START byte):

当R/W位为1时,此地址用于START字节。

它主要用于那些通过软件轮询SDA和SCL线的设备,允许它们在检测到总线活动时从低功耗模式唤醒并切换到更高的采样率。

3) 0000 001 (0x01) - CBUS 地址 (CBUS Address):

保留用于CBUS兼容性。CBUS是一种不再使用的总线格式。

I2C设备通常会忽略此地址。

4)0000 010 (0x02) - 保留用于不同总线格式 (Reserved for different bus formats):

此地址允许在I2C总线上混合使用I2C和其他协议。

只有那些能够处理这些不同格式和协议的I2C兼容设备才被允许响应此地址。

5) 0000 011 (0x03) - 保留用于未来用途 (Reserved for future purposes):

此地址被保留,以备I2C协议未来可能的扩展和新功能。

6) 0000 1XX (0x04 - 0x07) - 高速模式主设备代码 (High-Speed Master Code):

这些地址用于高速模式(Hs-mode)控制器代码,而不是作为从设备地址。

它们用于通知总线上的设备,即将进入高速模式,并“劝退”不兼容高速模式的设备。

7) 1111 0XX (0x78 - 0x7B) - 10位从设备寻址 (10-bit Slave Addressing):

此地址范围用作10位地址模式的第一个字节的起始码。

它不是一个从设备地址本身,而是指示接下来的字节将包含一个10位从设备地址。

8) 1111 1XX (0x7C - 0x7F) - 保留用于未来用途 (Reserved for future purposes):

此地址范围也被保留用于未来用途。

其中 1111 111 (0x7F) 有时也用于设备ID。

由于这些保留地址的存在,7位I2C地址空间中可用于普通从设备的地址数量从理论上的128个减少到112个。

四, 抛砖引玉

在接下来的文章中,我们将深入介绍I2C通信协议Protocol。掌握I2C通信协议Protocol就可以看懂I2C波形的含义,可以decode出数据流的读写操作的内涵。

敬请关注下一篇:I2C从入门到精通之五:I2C通信协议Protocol-写操作》

五,参考文献:

需要以下参考文献(I2C标准)的朋友,请关注本微信公众号“硬件工程师宝典”,在对话框内回复“I2C”,将获取标准下载连接。其中“I2C_Spec_Rev7_2021_UM10204.pdf”这份文件是最新的I2C specification, 希望大家重点阅读。

百度网盘分享的文件

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 5:48:17

MATLAB实现神经网络的模式识别

一、实验目的 理解 BP 神经网络的结构和原理,掌握反向传播算法对神经元的训练过程,了解反向传播公式。通过构建 BP 网络模式识别实例,熟悉 BP 网络的原理及结构。 二、实验原理 1. BP 神经网络概述 BP (Back Propagation) 神经网络是一种按…

作者头像 李华
网站建设 2026/3/2 23:38:11

17、在 Linux 系统中运行 Windows 程序及优化工作流

在 Linux 系统中运行 Windows 程序及优化工作流 1. 使用 Wine 在 Linux 中运行 Windows 程序 Wine 是一款可直接在 Linux 系统中运行 Windows 软件的工具,无需启动 Windows 系统。通过 Wine 安装的 Windows 程序会成为 Linux 系统中的常规程序。不过,并非所有 Windows 程序…

作者头像 李华
网站建设 2026/2/27 18:51:51

Kotaemon索引构建优化:FAISS vs HNSW性能对比

Kotaemon索引构建优化:FAISS vs HNSW性能对比 在当前大语言模型(LLM)广泛应用于智能问答、虚拟助手等场景的背景下,如何让生成内容既准确又可追溯,成为工程落地的关键挑战。尽管LLM具备强大的语言表达能力,…

作者头像 李华
网站建设 2026/3/4 22:40:13

Kotaemon在低资源环境下的轻量化改造方案

Kotaemon在低资源环境下的轻量化改造方案 在边缘计算和嵌入式AI应用日益普及的今天,越来越多企业希望将智能对话系统部署到低成本、低配置的硬件上——比如一台仅2GB内存的小型云服务器,甚至是一台树莓派。然而,现实却充满挑战:大…

作者头像 李华
网站建设 2026/3/4 14:49:55

16、企业 Linux 桌面迁移与后台基础设施搭建指南

企业 Linux 桌面迁移与后台基础设施搭建指南 在当今的 IT 环境中,企业从 Windows 系统迁移到 Linux 系统是一项具有战略意义的决策。这不仅涉及到操作系统的更换,还包括数据迁移、应用程序迁移以及后台基础设施的调整。本文将深入探讨企业 Linux 桌面迁移的相关问题,并分析…

作者头像 李华
网站建设 2026/3/3 17:56:34

19、数据迁移与备份:从 Windows 到 Linux 的全面指南

数据迁移与备份:从 Windows 到 Linux 的全面指南 在当今数字化的时代,将数据从一个平台迁移到另一个平台是许多企业和个人可能会面临的任务。无论是从 Windows 桌面迁移到 Linux 桌面,还是在不同的 Windows PC 之间移动数据,这都不是一件轻松的事情。本文将为你详细介绍从…

作者头像 李华