【ESP32 IDF】I2C层次结构、I2C协议

news2025/1/22 17:46:47

文章目录

  • 前言
  • 一、I2C的结构层次
    • 1.1 怎样在两个设备之间传输数据
    • 1.2 I2C如何传输数据
    • 1.3 硬件框图
    • 1.4 软件层次
  • 二、IIC协议
    • 2.1 硬件连接
    • 2.2 I2C 总线的概念
    • 2.3 传输数据类比
    • 2.3 I2C信号
    • 2.4 I2C数据的含义
  • 总结


前言

I2C(Inter-Integrated Circuit)是一种在集成电路之间进行串行通信的协议,常用于连接各种传感器、存储器和外设。在 ESP32 IDF(Espressif IoT Development Framework)中,I2C 起着至关重要的作用,为开发者提供了灵活而强大的接口,使其能够与外部设备进行可靠的通信。

本文将探讨 ESP32 IDF 中 I2C 的层次结构和基本协议,以便开发者更深入地了解如何在 ESP32 上使用 I2C 进行设备通信。


一、I2C的结构层次

1.1 怎样在两个设备之间传输数据

在两个设备之间进行数据的传输,我们有两种方式,一种是异步传输,一种是同步传输。
比如串口,他是异步传输。
比如I2C,他是同步传输。

1.2 I2C如何传输数据

在I2C中,他有两个引脚

  • SCL
    SCL为时钟信号,在时钟的同步下,我们就可以进行数据的传输
  • SDA
    SDA进行数据的传输。

I2C是半双工的,因为他只有一条数据线,只能发送完了再接收或者接收完了再发送,而我们的串口可以一边发送一边接收,串口是全双工的。

1.3 硬件框图

比如说oled的硬件框图,里面有一个ssd1306的主控芯片
在这里插入图片描述
如果我们想在屏幕上显示文字,我们只需要编写程序来初始ssd1306芯片
接下来我们把数据通过IIC总线写到ssd1306里面的显存来:
在这里插入图片描述
显存里面就保存着要显示的数据。这个芯片会周而复始的把数据刷到屏幕里面。
在以后,我们只需要初始化好ssd1306,然后把数据写到显存里面来就可以。

1.4 软件层次

在这里插入图片描述

二、IIC协议

2.1 硬件连接

I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。
在这里插入图片描述

2.2 I2C 总线的概念

I2C(Inter-Integrated Circuit,又称 IIC)总线是一种由 PHILIPS 公司开发的串行总
线,用于连接微控制器及其外围设备,它具有如下特点:
只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)。

每个连接到总线的器件都可以使用软件根据它的惟一的地址来识别。

传输数据的设备间是简单的主/从关系。

主机可以用作主机发送器或主机接收器。

它是一个真正的多主机总线,两个或多个主机同时发起数据传输时,可以通过冲
突检测和仲裁来防止数据被破坏。

串行的 8 位双向数据传输,位速率在标准模式下可达 100kbit/s,在快速模式下
可达 400kbit/s,在高速模式下可达 3.4Mbit/s。

片上的滤波器可以增加抗干扰功能,保证数据的完整。

连接到同一总线上的 IC 数量只受到总线的最大电容 400pF 的限制。

对于I2C协议,一个I2C总线可以接多个设备.

2.3 传输数据类比

先说明一些术语,如下所示。
◼ 发送器:发送数据到总线的器件
◼ 接收器:从总线接收数据的器件
◼ 主机:发起/停止数据传输、提供时钟信号的器件
◼ 从机:被主机寻址的器件
◼ 多主机:可以有多个主机试图去控制总线,但是不会破坏数据
◼ 仲裁:当多个主机试图去控制总线时,通过仲裁可以使得只有一个主机获得总线
控制权,并且它传输的信息不被破坏
◼ 同步:多个器件同步时钟信号的过程

比如说:上体育课,一个老师和多个学生:
在这里插入图片描述

发球:
老师:开始了(start)
老师:A!我要发球给你!(地址/方向)
学生A: 到!(回应)
老师把球发出去(传输)
A收到球之后,应该告诉老师一声(回应)
老师: 结束(停止)

接球:
老师:开始了(start)
老师: B!把球发给我!(地址/方向)
学生B:到!
B把球发给老师(传输)
老师收到球之后,给B说一声,表示收到球了 (回应)
老师:结束(停止)

① 老师说开始了,表示开始信号(start)
② 老师提醒某个学生要发球,表示发送地址和方向(address/read/write),发送的第一个字节前7位表示发送的地址,最后一位表示是写还是读,0位读,1为写。
③ 老师发球/接球,表示数据的传输
④ 到球要回应:回应信号(ACK),传输完一位后,主机会拉高SDA,如果找到了从机,从机会把SDA拉低,表示有这个设备
⑤ 老师说结束,表示 IIC 传输结束§

2.3 I2C信号

在SCL为高电平的期间,SDA数据要保持稳定(对方就是在SCL为高电平期间来读取SDA数据的),如果你想修改下一位数据,你需要把SCL拉低,保持SCL为低电平,在SCL为低电平期间,SDA切换数据,如下图所示:
在这里插入图片描述
如果说,主机传输完了开始信号,但是数据并没有准备好,那么我们的SCL拉低,等待我们的数据到来,他可以由主机拉低也可以由从机拉低,表示现在没有数据要等一下

2.4 I2C数据的含义

在I2C中,有下面的数据传输:
在这里插入图片描述
第一个8位表示地址和读写标识,但是后面的并未规定他有什么含义

如果说,你要去访问一个存储芯片,你确定地址之后,你就可以发送数据
如果你想写,你肯定先要确定写地址,后面的就是存储数据

如果是读操作:
在这里插入图片描述
在上一次你把存储地址发给设备了,在第二次你发起一个读操作,他就把那个地址上的数据返回给你。
这些数据的含义完全由芯片决定!


总结

在 ESP32 IDF 中,I2C 提供了一种高效的方式,使开发者能够轻松地与外部设备进行通信。通过了解 I2C 的层次结构和协议,开发者可以更好地利用 ESP32 的硬件特性,实现与传感器、外设等设备的稳健连接。在实际开发中,熟悉 ESP32 IDF 提供的 I2C 接口,将有助于构建更复杂和功能丰富的嵌入式系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可访问性使命:Facebook构建无障碍社交空间

在当今数字化时代,社交媒体已成为人们日常生活的重要组成部分,而Facebook作为全球最大的社交平台之一,其使命不仅在于连接世界,还在于构建一个无障碍的社交空间,让每个人都能参与其中。本文将深入探讨Facebook在可访问…

Flask入门三(Flask-session的使用、数据库链接池、wtforms、Flask定制命令、Flask-Cache)

文章目录 一、Flask-session使用1.使用方式一2.使用方式二3.读RedisSessionInterface源码4.flask-session补充 二、数据库连接池1.flask中使用mysql2.上述问题解决 使用数据库连接池1.第三方数据库连接池2.操作数据库不带池版3.池版和非池版压测 三、wtforms四、Flask定制命令1…

2024作品集流行封面设计技巧

本期不是关于如何安排作品集,而是关于目前国内市场上流行的作品集封面风格有哪些?如何实现?今天给大家带来了 5 种作品集设计风格,毛玻璃、弥散光、3D、插画、其他,一起往下看吧! 毛玻璃 目前许多设计师都…

map和set(一)——关联式容器的常用接口使用及区别

一、关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面 、存储的是元素本身。 那什么…

基于ACM32 MCU的两轮车充电桩方案,打造高效安全的电池管理

随着城市化进程的加快、人们生活水平的提高和节能环保理念的普及,越来越多的人选择了电动车作为代步工具,而两轮电动车的出行半径较短,需要频繁充电,因此在城市中设置两轮车充电桩就非常有必要了。城市中的充电桩不仅能解决两轮车…

NFTScan :什么是 ERC-404?深入解读 NFT 协议的未来

上月初,ERC-404 成为最首要热门的话题,ERC-404 是由 Pandora 团队在 2 月初为创作者和开发者等开源的实验性代币标准,其混合 ERC-20 / ERC-721 实现,具有原生流动性和碎片化等特点。伴随着早期的发展,越来越多参与者开…

Java基于微信小程序的旅游出行必备小程序,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

钡铼技术R40工业路由器连接智慧交通助力城市智慧化建设

随着信息技术与交通行业的深度融合,智慧交通作为智慧城市的重要组成部分,正在全球范围内加速推进。在此进程中,钡铼技术推出的R40工业路由器以其独特的4G WiFi一体化设计,成为连接智慧交通各环节,助力城市智慧化建设的…

一文看懂 | 机器视觉前景

机器视觉概述:机器视觉是人工智能发展中的一个重要分支,其主要目标是用机器替代人眼进行测量和判断。 机器视觉系统通过图像摄取装置将目标转换成图像信号,然后传送给专用的图像处理系统,最终得到目标的形态信息。 全球机器视觉…

『python爬虫』ip代理池使用 协采云 账密模式(保姆级图文)

目录 实现效果实现思路代码示例总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 实现效果 在官网原版demo基础上小改了一下,修正了接口错误(把2023改成2024就可以了),原版demo只能测试单个ip,我这里批量测试所有…

项目管理软件大比拼:2024年推荐的9款软件一览

能够有效利用团队的力量并将其转化为切实解决方案的公司更有可能保持领先地位。项目管理软件是可以帮助组织实现这一目标的强大工具。本文将探讨项目管理软件的功能,并为大家介绍9款项目管理软件,为您的企业选择正确的软件时需要考虑的因素。 项目管理软…

java工程师面试宝典,springcloud微服务架构图

前言 昨天,有个女孩子问我提高数据库查询性能有什么立竿见影的好方法? 这简直是一道送分题,我自豪且略带鄙夷的说,当然是加「索引」了。 她又不紧不慢的问,索引为什么就能提高查询性能。 这还用问,索引…

企业计算机服务器中了faust勒索病毒怎么解密,faust勒索病毒解密流程

网络在为企业提供便利的同时,也为企业的数据安全问题带来严重威胁,网络安全是众多企业关系的主要话题,近期,云天数据恢复中心接到一大波企业的求助,企业的计算机服务器都被faust后缀勒索病毒攻击,导致企业计…

近屿智能A轮融资顺利收官,全新推出工程师与产品经理技能进阶路径

在2024年1月,上海近屿智能科技有限公司(简称近屿智能)顺利完成了其A轮融资,其中智望资本担任了主要的领投角色,金沙江创投也进行了追加投资。这次融资的成功,充分展现了近屿智能在AIGC行业中的技术领先地位…

老大语录二 谈规划

老大语录二 谈规划 我们经常要去规划一个产品在某阶段应该要做哪些功能以及舍弃哪些功能。这是一个特别复杂也特别专业的事情。很多时候在判断时往往经验主义会主导我们的决策,也常常会发生我们陷入局部某个功能的讨论来评价该功能的利弊去留。决策误判也就是在这些场景下被引…

kibana配置 dashbord,做可视化展示

一、环境介绍 这里我使用的kibana版本为7.17版本。 语言选择为中文。 需要已经有es,已经有kibana,并且都能正常访问。 二、背景介绍 kibana的可视化界面,可以配置很多监控统计界面。非常方便,做数据的可视化展示。 这篇文章&…

计算机网络 网络原理之Http

目录 1 前言2 什么是http的一次交互?3 理解“协议”二字4 认识URL4.1 简介4.2 URL的编码和解码(urlencode和urldecode) 5 抓包工具 fiddler6 http和https的区别7 http 头8 HTTP 状态码9 常见的 Http 服务器 1 前言 为什么要了解Http原理呢?因为http原理…

鸿蒙NEXT开发实战:【网络管理-数据请求】

概述 本示例仿postman输入API接口地址,获取相应数据,介绍数据请求接口的用法。 样例展示 基础信息 Http 介绍 本示例通过[ohos.net.http]等接口,实现了根据URL地址和相关配置项发起http请求的功能。 效果预览 首页结果页 使用说明 1.…

每日一练 | 华为认证真题练习Day193

1、关于永久组播地址的描述,错误的是: A. 网段内所有主机和路由器都侦听224. 0. 0.1。 B. 所有路由器都侦听224 .0 .0.2 C. 所有运行OSPF协议的路由器都侦听224.0.0.5 D. 所有运行RIP V2协议的路由器都侦听224.0.0.100 2、ISIS协议所支持的网络类型除P2P以外还有…

搭建Zabbix监控系统

概述 Zabbix是一个基于Web界面的企业级开源监控套件,提供分布式系统监控与网络监视功能。具 备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表、图表的绘制等 功能。监测的对象可以是Linux或 …