ESP32-IDF
文章平均质量分 88
ESP32-IDF学习笔记
宁子希
github地址https://github.com/1589326497?tab=repositories
展开
-
封装 ESP-IDF 组件并上传到 ESP 组件注册表
在 ESP-IDF 中,组件(Component)是用于组织代码的基本单元,类似于库。每个组件都是一个独立的模块,包含特定的功能,可以与其他组件一起构建项目。通过这种模块化设计,你的项目可以由多个组件组成,易于管理和复用。此外,ESP-IDF 提供了组件注册表,开发者可以在其中分享组件,也可以轻松使用其他人发布的组件。原创 2024-10-14 10:35:36 · 518 阅读 · 0 评论 -
在 ESP-IDF 中使用 Arduino 框架和Arduino的第三方库
通过将 Arduino 框架 API 与 ESP-IDF 相结合,你可以简化开发工作,轻松使用 Arduino 的库和函数,同时享受 ESP-IDF 提供的强大功能。通过将 Arduino 的第三方库引入 ESP-IDF 项目,你还可以扩展项目的功能,快速实现复杂的硬件控制与数据处理。无论你是想要简单的 Arduino 风格开发,还是需要 ESP-IDF 的底层控制和优化,这种结合都可以为你的 ESP32 项目带来更多灵活性与效率。原创 2024-09-13 23:13:46 · 1961 阅读 · 0 评论 -
32-ESP32-S3-WIFI篇-03 Event Loop (事件循环)
在ESP32-S3的WiFi驱动程序中,事件循环是一个非常重要的概念。事件循环是一个无限循环,用于处理和分发系统中发生的各种事件。在WiFi驱动程序中,我们使用事件循环来处理和分发WiFi相关的事件。原创 2024-05-31 23:54:09 · 942 阅读 · 0 评论 -
31-ESP32-S3-WIFI篇-02 Event Group (事件标记组)
在ESP32-S3的WiFi驱动程序中,事件标记组(Event Group)是一个非常重要的概念。它是FreeRTOS中的一种同步机制,用于在任务之间传递和同步事件。在WiFi驱动程序中,我们使用事件标记组来通知不同的任务有关WiFi状态的变化。原创 2024-05-31 21:57:34 · 442 阅读 · 0 评论 -
30-ESP32-S3-WIFI篇-01 FreeRTOS
在ESP32中,WIFI的操作与FreeRTOS的多任务紧密相连,并且彼此之间存在相互依赖的关系。实际上,FreeRTOS作为一种用于实时操作系统的开源软件,它提供了任务调度和管理的功能。而ESP32作为一款集成了WIFI功能的芯片,充分利用了FreeRTOS的多任务处理机制来实现同时处理多个WIFI连接和数据传输的能力。因此,了解和熟悉FreeRTOS的多任务编程模型对于有效地操作和管理ESP32的WIFI功能至关重要。原创 2024-05-31 17:36:08 · 1392 阅读 · 0 评论 -
29-ESP32-S3-WIFI篇-00 STA模式扫描全部 AP
ESP32-S3的Wi-Fi库提供了配置和监控ESP32-S3 Wi-Fi网络功能的支持。Station模式(也称为STA模式或Wi-Fi客户端模式):ESP32-S3连接到一个接入点。AP模式(也称为Soft-AP模式或接入点模式):站点连接到ESP32-S3。Station/AP共存模式(ESP32-S3同时作为一个接入点和一个连接到另一个接入点的站点)。原创 2024-05-29 18:22:19 · 1028 阅读 · 0 评论 -
28-ESP32-S3 lwIP 轻量级 TCP/IP 协议栈
ESP32-S3 是一款集成了Wi-Fi 和蓝牙功能的微控制器。它的设计初衷是为了方便嵌入式系统的开发。不过你可能会好奇,ESP32-S3 怎么实现与外部网络的通信呢?这里就要提到一个开源的 TCP/IP 协议栈,它叫做lwIP(轻量级 IP)。通过使用 lwIP 库,ESP32-S3 可以轻松实现与外部网络的交互。它能发送和接收数据包,并处理网络连接等操作。因此,可以说ESP32-S3 是借助lwIP来实现网络功能的利器。原创 2024-05-28 16:30:23 · 1491 阅读 · 0 评论 -
27- ESP32-S3 USB虚拟串口(USB-OTG 外设介绍)
USB虚拟串口是一种可以让微控制器(如ESP32-S3)通过USB接口与电脑进行串口通信的技术。它的工作原理是在微控制器和电脑之间建立一个虚拟的串口通道,使得电脑可以像操作串口设备一样操作USB设备。同时无需 USB 至 UART 桥,便可直接烧录设备。除了模拟串口,USB-OTG 外设还有许多其他功能。例如,它可以支持连接 USB 存储设备,让用户轻松扩展设备的存储容量。此外,它还能作为 USB 音频设备,让用户连接耳机或扬声器,享受高质量音乐。原创 2024-05-16 00:22:11 · 5001 阅读 · 2 评论 -
26-ESP32-S3 的 FLASH分区表以及 SPIFFS 文件系统 和spiffsgen.py工具
前面铺垫了这么多,存储有了,哪怎么使用这些空间呢,这就需要文件管理系统了,在我们的windows电脑里有NTFS文件系统,在安卓手机里有F2FS 文件系统,而对于ESP32有SPIFFS文件系统。SPIFFS(Serial Peripheral Interface Flash File System)是 ESP32-S3 的内存管理系统。更具体地说,它是一种在你的 ESP32 关机后不会擦除的内存存储。你可以使用它进行数据记录,保存访问代码,存储文件,以及记住用户输入的设置。SPIFFS有以下特性和用处。原创 2024-05-11 16:06:53 · 3295 阅读 · 1 评论 -
25-ESP32-S3 内置的真随机数发生器(RNG)
在许多应用中,随机数发生器(RNG)是必不可少的。无论是在密码学🔒、游戏🎮、模拟🧪或其他领域,随机数都有着广泛的用途。ESP32-S3,作为一款高级集成的Wi-Fi和蓝牙双模系统级芯片(SoC),内置了一个真随机数发生器(RNG)。本文将详细介绍ESP32-S3的RNG及其应用。原创 2024-05-07 21:13:28 · 973 阅读 · 0 评论 -
24- ESP32S3 内部温度传感器
ESP32S3 的内部温度传感器是一个模拟电路,它可以测量芯片的内部温度。这个传感器的输出是一个模拟电压,这个电压与芯片的温度成正比。我们可以通过读取这个模拟电压来获取芯片的温度。温度传感器的输出值需要使用转换公式转换成实际的温度值 (°C)。原创 2024-05-04 11:23:06 · 1297 阅读 · 0 评论 -
23- ESP32 红外遥控 (RMT)
红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点。它被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机和手机系统中。红外遥控系统由发射和接收两大部分组成,应用编码/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。红外遥控器通常使用特定的编解码协议来发送和接收数据。PWM(脉冲宽度调制)的NEC协议和(脉冲位置调制)的RC-5协议的。原创 2024-05-03 21:34:38 · 2647 阅读 · 0 评论 -
22-ESP32-S3模数转换器(ADC)
模数转换器(ADC)是一种将模拟信号(如电压)转换为数字信号的设备。在ESP32-S3中,ADC用于将模拟电压转换为数字值,以便微控制器可以处理。原创 2024-05-02 20:49:33 · 1913 阅读 · 2 评论 -
21-ESP32-S3实时时钟(RTC)
ESP32-S3的RTC模块具有以下主要功能:- **时间和日期**:RTC模块可以提供实时的时间和日期信息。- **闹钟**:可以设置RTC模块在特定的时间和日期发出信号。- **定时器**:RTC模块可以作为一个定时器,用于在特定的时间间隔后发出信号。- **低功耗模式**:当ESP32-S3的其他部分关闭时,RTC模块可以继续运行,以节省电能。原创 2024-05-02 15:29:24 · 3239 阅读 · 1 评论 -
20- ESP32-S3 SPI 外设,主设备编程方法
ESP32-S3 芯片集成了四个SPI 控制器,分别为和SPI3。SPI0 和SPI1 控器主要供内部使用以访问外部 FLASH 和 PSRAM,所以只能使用SPI2 和 SPI3。SPI2 又称为HSPI,SPI3 又称为VSPI,这两个属于GP-SPI。特性描述支持模式主机模式和从机模式支持通信方式半双工通信和全双工通信支持的数据模式。原创 2024-04-27 16:16:33 · 3609 阅读 · 0 评论 -
19-ESP32-S3外设IIC
IIC是一种串行、同步、多设备、半双工通信协议,允许同一总线上存在多个主设备和从设备。IIC使用两个双向开漏线:串行数据线(SDA)和串行时钟线(SCL),由电阻上拉。ESP32-S3有2个IIC控制器(也称为端口),负责处理I2C总线上的通信。每个控制器都可以设置为主机或从机。IIC 总线有如下特点总线由数据线 SDA 和时钟线 SCL 构成的串行总线,数据线用来传输数据,时钟线用来同步数据收发。总线上每一个器件都有一个唯一的地址识别,所以我们只需要知道器件的地址,根据时。原创 2024-04-25 16:27:18 · 2803 阅读 · 1 评论 -
18-HW_PWM(硬件改变 PWM 占空比)
硬件脉冲宽度调制(HW_PWM)是ESP32-S3的一个重要特性,它可以用于控制LED的亮度、电机的速度等。硬件脉冲宽度调制与软件改变 PWM 占空比实验的驱动一致。原创 2024-04-24 11:54:59 · 519 阅读 · 0 评论 -
17-软件脉冲宽度调制(SW_PWM)
脉冲宽度调制(PWM)是一种在数字系统中模拟模拟信号的方法。通过改变脉冲的宽度,我们可以控制电源的输出,从而控制例如LED的亮度或电机的速度。原创 2024-04-22 16:02:08 · 705 阅读 · 0 评论 -
16-NVS Iterators (迭代器)
ESP32-S3的NVS库提供了迭代器,允许你根据指定的分区名称、命名空间和数据类型轮询NVS中存储的键值对。使用方法类似于c++里的迭代器(iterator)用于遍历容器,而NVS的迭代器同样用来遍历nvs。原创 2024-04-20 14:47:34 · 344 阅读 · 1 评论 -
15-partition table (分区表)
如果在 menuconfig 中选择“自定义分区表 CSV”,我们一般选用这个👇CSV文件作为我们的自定义分区表,复制将这个文件粘贴到项目的根目录下。✨我们来详细看一下当前分区表中的内容都有什么分区名称类型子类型偏移量大小描述nvsdatanvs留空(具体地址值未指定)0x6000非易失性存储区,用于保存设备重启后仍需保留的配置数据,如Wi-Fi凭据等phy_initdataphy留空(具体地址值未指定)0x1000。原创 2024-04-20 12:48:32 · 1472 阅读 · 0 评论 -
14-Error Handling (错误处理)
大多数ESP-IDF专用函数都使用 返回值返回错误代码。返回值是有符号整数类型。函数功能执行成功(无错误)时 返回值用代码表示为ESP_OK各种 ESP-IDF 头文件使用预处理器定义定义可能的错误代码。通常,这些定义以前缀开头。文件中定义了一般故障(内存不足、超时、参数无效等)的常见错误代码。ESP-IDF 中的各种组件可能会针对特定情况定义额外的错误代码。更加详细内容,在乐鑫官方文档👇😉。原创 2024-04-19 16:52:57 · 485 阅读 · 0 评论 -
13-ESP32 NVS BLOB类型存储
BLOB是一种用于存储二进制数据的数据类型。与其他数据类型(如整数和字符串)不同,BLOB可以存储💾可变长度的数据,这使得它非常适合存储诸如图像、音频或任何其他类型的大型数据。🎵🖼️在ESP32-S3的NVS库中,BLOB值的上限为508,000字节或分区大小的97.6%减去4000字节,以较小的值为准。虽然NVS最适合存储许多小值,但是如果需要存储大的BLOB或字符串,可以考虑使用基于磨损均衡库的FAT文件系统。这篇博客讲解了很多关于ESP32-S3的NVS和BLOB的知识。原创 2024-04-19 14:56:08 · 823 阅读 · 0 评论 -
12-ESP32-S3 的 NVS(Non-Volatile Storage)
ESP32-S3 是一款集成了 Wi-Fi 和蓝牙功能的系统级芯片,适用于各种物联网应用。其中,NVS(Non-Volatile Storage,非易失性存储)是 ESP32-S3 的一个重要特性,它允许我们在芯片的闪存中存储和读取数据,即使在断电后,这些数据也不会丢失。原创 2024-04-19 13:15:58 · 1268 阅读 · 0 评论 -
11-ESP32 自定义Menuconfig
menuconfig 是ESP32-IDFk框架下一个非常强大的配置工具,可以让我们自定义项目的配置参数。那这个菜单是否可以添加我们自己的内容呢,答案是可以的😉。我们可以把代码里的一些功能添加到菜单中,用一种别样的方法来配置代码中的一些参数(代码中的宏)🤞。原创 2024-04-19 00:49:54 · 1274 阅读 · 0 评论 -
10-WATCH_DOG(看门狗)
ESP32-S3的看门狗功能是一个重要的系统保护机制,它可以确保在程序发生异常(如进入死循环或跑飞)时,系统能够自动重启,以保障系统的稳定运行。中断看门狗负责确保 ISR(中断服务例程)不会长时间被阻塞。TWDT 负责检测长时间不屈服而运行的任务实例。可以使用menuconfig来配置看门狗的参数。原创 2024-04-18 17:51:45 · 1018 阅读 · 0 评论 -
08-GPtimer
通用定时器可用于准确设定时间间隔、在一定间隔后触发(周期或非周期的)中断或充当硬件时钟。如下图所示,**ESP32-S3** 包含两个定时器组,即定时器组 0 和定时器组 1。每个定时器组有两个通用定时器(T0,T1)和一个主系统看门狗定时器(WDT)。所有通用定时器均基于 16 位预分频器和 54 位可自动重新加载向上/向下计数器。原创 2024-04-18 15:18:21 · 1354 阅读 · 0 评论 -
09-ESP32-IDF中的日志系统
在ESP32-IDF中,日志系统是一个重要的组成部分,它可以帮助开发者调试代码和理解系统的运行状态。原创 2024-04-18 14:03:49 · 814 阅读 · 0 评论 -
07-ESP timer
ESP Timer是ESP32-S3的一个强大功能,它允许创建软件定时器并在超时时调用它们的回调函数。这对于需要执行延迟或周期性操作的用户软件非常有用,例如延迟设备启动/停止或周期性采样传感器数据。对于需要较好实时性能(如生成波形)或可配置定时器分辨率的应用场景,建议改用GPTimer。此外,GPTimer 还具有 ESP Timer 中没有的功能,例如事件捕获。原创 2024-04-16 16:15:28 · 1370 阅读 · 0 评论 -
06-esp32-idf开发调试方法(内置JTAG,OpenOCD调试)
使用VS Code和ESP-IDF进行ESP32开发和调试在我们搭建 **IDF** 框架后,**OpenOCD** 已经自动下载好了, 我们通过 **JTAG** 接口连接使用 **OpenOCD** 进行调试。而**ESP32**芯片中内置 了**JTAG** 电路,无需额外芯片即可调试,更加方便,所以这里我们讲解使用模块自带的usb-jtag接口进行调试。原创 2024-04-15 17:50:09 · 3264 阅读 · 6 评论 -
05-ESP32-S3-IDF USART
ESP32-S3有两个全功能的USART通道,USART0和USART1,USART2,支持异步通信(RS232 和 RS485)和 IrDA,通信速率可达到 5 Mbps。原创 2024-03-13 13:46:40 · 2741 阅读 · 0 评论 -
03-在ESP-IDF中使用C++面向对象编程
ESP-IDF同样提供了关于C++使用的例程,可以在你电脑中的ESP-IDF安装路径下找到关于ESP-IDF C++的更多内容可以阅读下下方的官方文档ESP-IDF C++支持。原创 2024-03-12 14:46:28 · 1825 阅读 · 0 评论 -
04-ESP32S3-GPIO 输入/输出/EXTI
ESP32S3提供了多达45个物理GPIO管脚,这些管脚不仅可以作为通用的输入输出接口,还可以连接到内部外设信号。通过GPIO交换矩阵、IO MUX和RTC IO MUX,可以灵活地配置外设模块的输入信号来源于任何GPIO管脚,同时外设模块的输出信号也可以连接到任意GPIO管脚。原创 2024-03-10 20:51:20 · 1990 阅读 · 0 评论 -
02-在 ESP-IDF 项目中添加 .c 和 .h 文件的
ESP-IDF(Espressif IoT Development Framework)是一个用于开发基于 ESP32 和 ESP8266 微控制器的嵌入式应用程序的框架。在 ESP-IDF 项目中添加新的 .c 和 .h 文件是很常见的,但要确保这些文件能够正确地被编译和链接到项目中,需要适当地配置 CMakelists.txt 文件。原创 2024-03-10 18:42:22 · 2485 阅读 · 0 评论 -
01-ESP-IDF项目文件结构与Menuconfig
在物联网(IoT)领域,ESP32和ESP32-S系列微控制器由其强大的功能和灵活性而备受青睐。为了简化开发过程,Espressif Systems提供了ESP-IDF(Espressif IoT Development Framework),这是一个功能强大的开发框架,为开发人员提供了丰富的工具和组件来构建各种类型的物联网应用程序。我们在使用ESP-IDF开发项目时项目特指一个目录,我们要了解的文件结构及其组成,以便更好地理解如何利用ESP-IDF来开发应用程序。原创 2024-03-10 12:53:45 · 2422 阅读 · 1 评论 -
00-ESP-IDF 环境配置指南
1.首先我们在浏览器搜索esp-idf,点击第一个选项2.点击右边栏的安装3.我们选择手动安装选择需要的系统版本4.点击链接5.这里我们选择一个版本,建议不要选择最新的,安装出现问题在网上不好找到解决办法6.下载完成之后点击运行,一直选择下一步安装完成后,在我们的桌面会多出两个图标7.我们点击第一个图标,这是CMD的命令行工具,在命令行中输入idf.py出现以下信息表示安装成功了。原创 2024-03-09 21:34:56 · 2690 阅读 · 0 评论