ESP32引脚入门指南(七):从理论到实践(IIC)

引言

IIC(Inter-Integrated Circuit),又称为I²C,是一种简单而高效的多主控器串行通信协议,常用于微控制器和各种外围设备之间的通信。在ESP32系列芯片中,IIC协议被广泛应用于连接各种传感器、存储器和其他支持IIC接口的电子元件。本文将深入探讨ESP32的IIC总线特性,以及如何在实际项目中利用它来与外部设备进行通信。

ESP32的IIC特性

1. 主机与从机模式

ESP32的IIC控制器支持主机从机两种工作模式。作为主机,ESP32可以发起通信并控制总线时序;作为从机,它可以响应其他设备的通信请求。

2. 多功能引脚

ESP32的IIC接口通常使用SCL(Serial Clock)和SDA(Serial Data)两根线来实现通信。在ESP32C3上,只有一个IIC控制器,但可以通过软件配置选择不同的GPIO引脚来模拟IIC总线,提供灵活性以适应不同的硬件布局。这意味着任何GPIO引脚都可以配置为I2C SDA(数据线)和SCL(时钟线),但是除了像D34和D35这种只能做输入的引脚。然而,GPIO21 (SDA)和GPIO22 (SCL)通常用作默认的I2C引脚,使人们更容易使用现有的Arduino代码,库和草图。
在这里插入图片描述

3. 通信速率

ESP32支持多种IIC通信速率,包括标准速(100kHz)、快速模式(400kHz)以及高速模式(最高3.4MHz,但并非所有设备都支持此速度)。

4. 从机寻址

IIC通信中,主机需要通过7位从机地址来指定目标设备。在ESP32中,地址的高位可以设置为0或1,以确定写入或读取操作的方向。

IIC通信流程

  1. 起始信号:主机发送一个低电平到高电平的边沿,表示开始传输。
  2. 从机地址:主机发送7位从机地址,加上1位读/写位(0表示写,1表示读)。
  3. 应答位:如果从机识别其地址,它会在SDA线上拉低电平以应答;否则,线路保持高电平,主机检测到无应答后结束传输。
  4. 数据交换:主机和从机之间进行数据传输,每次传输一个字节,每个字节后跟随一个应答位。
  5. 停止信号:传输结束后,主机发送一个高电平到低电平的边沿,释放总线。

当然,在Arduino应用中,我们并不关注以上实现结节。

应用示例:连接SSD1306 OLED屏幕

连接一个SSD1306 OLED屏幕到ESP32的IIC总线,可以实现文本和图像的显示。以下是一段简单的示例代码片段(使用Arduino IDE和Adafruit_SSD1306库):

#include <Wire.h>
#include <Adafruit_SSD1306.h>#define SCREEN_WIDTH 128 // OLED屏幕宽度
#define SCREEN_HEIGHT 64 // OLED屏幕高度
#define OLED_RESET -1    // 若有硬件复位引脚,则指定,否则设为-1Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);void setup() {Serial.begin(115200);// 初始化I2C总线Wire.begin(21, 18); // ESP32的SCL和SDA引脚,默认值通常是22(SCL)和21(SDA),这里根据实际情况调整// 初始化OLED显示屏if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 地址0x3C是SSD1306的常见I2C地址Serial.println(F("SSD1306 allocation failed"));for(;;); // 如果初始化失败,则进入死循环}delay(2000); // 稍作延迟,让屏幕初始化稳定// 清除屏幕display.clearDisplay();display.display();// 设置文本参数display.setTextSize(1);display.setTextColor(SSD1306_WHITE);display.setCursor(0, 0);// 显示文本display.println("Hello, ESP32!");display.display();
}void loop() {// 在这里可以添加更多动态显示的代码delay(2000); // 为了演示,每2秒循环一次
}

注意事项

  • 上述代码中,Wire.begin(21, 18)指定了ESP32的SCL和SDA引脚分别为GPIO21和GPIO18,这是一组常用的I2C引脚配置,但具体引脚需根据你的硬件接线和设计进行调整。
  • 0x3C是SSD1306 OLED屏幕的默认I2C地址,但某些模块可能使用其他地址,比如通过跳线设置,务必确认你的屏幕的实际地址。
  • 请确保你的硬件连接正确,包括电源和I2C线的连接,以及OLED屏幕的复位(如果需要)。

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

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

相关文章

揭秘APP广告变现:自建平台收益真的有那么高吗?

在移动应用&#xff08;APP&#xff09;的世界里&#xff0c;广告变现是一种常见的盈利模式。开发者或企业通过向用户展示第三方广告来获取收益&#xff0c;这一过程中涉及到的关键角色包括广告主、广告平台以及开发者自己。在众多变现手段中&#xff0c;自建平台进行APP广告变…

Navicat安装配置(注册码)连接MySQL

下载资源 博主给你打包好了安装包&#xff0c;在网盘里&#xff0c;防止你下载到钓鱼软件 快说谢谢博主&#xff08;然后心甘情愿的点个赞~&#x1f60a;&#xff09; navicatformysql.zip_免费高速下载|百度网盘-分享无限制 (baidu.com) 安装流程 ①下载好压缩包后并解压 ② …

【2024亚马逊云科技峰会】Amazon Bedrock + Llama3 生成式AI实践

在 4 月 18 日&#xff0c;Meta在官网上公布了旗下最新大模型Llama 3。目前&#xff0c;Llama 3已经开放了80亿&#xff08;8B&#xff09;和700亿&#xff08;70B&#xff09;两个小参数版本&#xff0c;上下文窗口为8k&#xff0c;据称&#xff0c;通过使用更高质量的训练数据…

激光雷达在工厂散料体积测量中的经济效益分析

随着市场竞争的加剧&#xff0c;企业对于成本控制和效率提升的需求越来越迫切。激光雷达作为一种高效、准确的测量工具&#xff0c;在工厂散料体积测量中发挥着重要作用。本文将对激光雷达在工厂散料体积测量中的经济效益进行分析。 一、减少人工成本 传统的散料体积测量方法…

【DDR 终端稳压器】Sink and Source DDR Termination Regulator [C] S0 S1 S2 S3 S4 S5 6状态

TPS51200A-Q1 器件通过 EN 功能提供 S3 支持。EN引脚可以连接到终端应用中的SLP_S3信号。当EN 高电平&#xff08;S0 状态&#xff09;时&#xff0c;REFOUT 和 VO 引脚均导通。当EN 低电平&#xff08;S3状态&#xff09;时&#xff0c;VO引脚关断并通过内部放电MOSFET放电时…

趣味软件-吃什么(Eat What)?

&#x1f354;&#x1f35c;&#x1f355; 你是否也有这样的日常烦恼&#xff1f; 每天的“世纪难题”——今天吃什么&#xff1f; &#x1f570;️ 饭点到了&#xff0c;脑袋空空&#xff0c;选择困难症大爆发&#xff01; &#x1f46b; 和女朋友约会&#xff0c;却不知道她的…

求职网络安全:这个领域的就业机会正在增长

随着大安全时代的到来&#xff0c;网络安全已经从虚拟空间延伸到现实空间。当今网络战愈演愈烈&#xff0c;网络军备赛即将来临。网络空间领域的战争归根到底还是人才的竞争。面对新形势,建立高效的网络安全人才培养体系对中国信息安全产业发展和保证国家安全来讲都至关重要! 目…

PMP证书好考吗?

PMP新考纲还颠覆了自己旧有的五大知识领域&#xff0c;将原来的五大过程组整合成新领域中过程的一部分&#xff0c;提出了新的商业环境、过程、人员三大知识领域。 最关键的是&#xff0c;在新考纲中明确写到&#xff1a; 重要注意事项。通过工作任务分析开展的研究证实&…

科技查新中化工领域查新点如何确立与提炼?案例讲解!

我国化工科技查新工作始于1985年&#xff0c;至今经历了30多年的发展。化工类课题包含化工、炼油、 冶金、能源、轻工、石化、环境、医药、环保和军工等&#xff0c; 具有物质种类繁多、制备工艺复杂等特点。因此&#xff0c;本文结合化工查新项目实例&#xff0c;总结提高化工…

如何通过简单几个技巧,提升文心一言的回复质量

文心一言使用技巧 1 代入角色 例子1 我&#xff1a;500400 -2 AI&#xff1a;计算结果为&#xff1a;500400−2898增加数学老师角色&#xff0c;看一下回复的区别。 我&#xff1a;你是一个一年级的数学老师&#xff0c;请分步骤解释说明 500400-2等于多少 AI&#xff1a;…

XTuner微调LLM:1.8B、多模态和Agent

XTuner微调大语言模型&#xff0c;我们的介绍主要分为以下六个方面。 首先我们讲一下Finetune&#xff1a;分为两种Finetune范式和一条数据的一生来讲解。 为什么要微调&#xff1f;我们的大语言模型为基座模型&#xff0c;要应用到某种特定的场景&#xff0c;需要微调做相应适…

小众行业风口:Q1季度擦窗机器人行业线上市场销售数据分析

今天给大家分享一个2024年的小众行业增长风口——擦窗机器人。 作为家居自动化里的重要一员&#xff0c;擦窗机器人可以简称为擦窗神器&#xff0c;是为了解决大户型家庭的外窗清洁痛点而存在。而目前&#xff0c;擦窗机器人行业正在走向成熟&#xff0c;且市场需求量居高不下…

价格中间加横杠

<span></span>59 <span class"price">177</span>.price{ text-decoration:line-through; }

新都区新都街道沱江社区:共建“微花园”,愿景变实景!

“你看嘛&#xff0c;本来是一个很好的锻炼身体的地方&#xff0c;现在看起来乱糟糟的&#xff0c;大家都很少去运动。”这是一位来自沱江社区自建区居民的心声。 灰扑扑的运动角 杂草丛生闲置空地 …… 本应该是提升居民幸福感的“小角落” 却变成了遭人冷落的“灰色空间…

当时这样说就好了的笔记

系列文章目录 当时这样说就好了的笔记 文章目录 系列文章目录一、 不用好口才&#xff0c;怎么谈都讨喜的“说话金律”1、 掌握对方爱聊什么是交谈热络的第一步2、 装笨让对方当主角&#xff0c;和谁都能聊不停3、 “讲道理”谁都怕&#xff0c;坚持己见最伤感情4、 懂“聆听附…

【Shell编程】3.Shell字符串、Shell数组

目录 Shell字符串 代码1 test3_1.sh 运行 结果 获取字符串长度 代码2 test3_2.sh 运行 结果 Shell字符串拼接 代码3 test3_3.sh 运行 结果 Shell字符串截取 从指定位置开始截取 从字符串左边开始计数 从字符串右边开始计数 从指定字符开始截取 使用#号截取…

Qt Tab键切换焦点顺序:setTabOrder()

使用这个方法setTabOrder()&#xff0c;设置使得焦点的顺序从前到后依次是&#xff1a; ui->lineEdit》 ui->lineEdit_2》ui->lineEdit_3 》ui->lineEdit_4 焦点先在ui->lineEdit上&#xff0c;当按下Tab键时&#xff0c;焦点跑到ui->lineEdit_2上。。。按…

代码随想录day63 | 单调栈P3 | ● 84.

84.柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&a…

基于yolov8的水果检测系统,系统既支持图像检测,也支持视频和摄像实时检测(pytorch框架)【python源码+UI界面+功能源码详解】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 基于yolov8的水果检测系统&#xff0c;系统既支持图像检测&#xff0c;也支持视频和摄像实时检测_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov8的水果检测系统是在pytorch框架下实…

12.买卖股票的最佳时机 II

文章目录 题目简介题目解答解法一&#xff1a;贪心(遍历数组买入即卖)代码&#xff1a;复杂度分析&#xff1a; 解法二&#xff1a;动态规划(双数组)代码&#xff1a;复杂度分析&#xff1a; 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来的是 122. 买卖股票的最佳时…