Arduino IDE中ESP32S3配置选项意义

ESP32的配置项决定了芯片的程序下载方式、存储、内核的使用、分区等,理解了这些配置项的含义,可以正确的使用芯片和充分的发挥芯片性能。

    ESP32的配置项决定了芯片的程序下载方式、存储、内核的使用、分区等,当我们想要ESP32S3开发板能够运行到最佳状态,那就需要理解配置项的含义,充分发挥芯片的性能。

    接下来,就来研究一下这个配置选项,如下图:

Arduino IDE中ESP32S3配置选项意义

    这个配置是在“工具”下,选择了ESP32-S3开发板后,会出现的。

Arduino IDE中ESP32S3配置选项意义

如何在IDE中选择ESP32S3开发板

1、USB CDC On Boot(USB Communications Device Class On Boot)

ESP32S3芯片内置USB接口,支持USB CDC,说明可以跳过USB转串口芯片对模组进行下载。有两个选项:Enable:这种选项是要在没有串口芯片的情况下选择;Disable:有串口芯片,选择Disable。

注意:当USB CDC On Boot选择为Enable,但是板子又有串口芯片,这时候串口是不能使用的,也就是无法收发串口信息。Enable选项通常是在省成本的板子,没有USB转串口芯片上使用这个配置,否则板载有串口芯片都选择使用Disable即可。

科普:Enable情况下,如何下载程序:

首先手动进入下载模式:首先按住BOOT按钮,然后再按住RESET按钮,再放开RESET按钮,最后再放开BOOT按钮;

需要配置USB CDC On Boot -> Enabled,Upload Mode -> UART0/Hardware CDC,USB Mode -> USB-OTG(TinyUSB);

Arduino IDE中编译、上传代码到开发板中,然后需要手动Reset开发板重启;

2、CPU Frequency

该选项顾名思义就是让你设置CPU的时钟频率,有6个频率可供选择。

Arduino IDE中ESP32S3配置选项意义

想让CPU性能拉满,肯定是全速的240MHz,这时候耗能也就越多,所以假如想降低功耗,那得降低CPU主频,这里选择的依据就要看你的使用场景。学习时,不考虑耗能,直接选择240MHz即可,在最佳性能下运行。

注意:

① 240MHz(WiFi)、160MHz(WiFi)、80MHz(WiFi)三个选项是可以保证ESP32 S3的WIFI/BT功能正常运行的CPU频率

② 40MHz、20MHz、10MHz频率有点低,无法使WIFI/BT功能正常运行,只能保证CPU运行基本功能         

3、Core Debug Level

该选项是用于选择要打印到串口的Arduino内核调试日志等级,有6个选择可供选择。

Arduino IDE中ESP32S3配置选项意义

None:不打印输出任何内核调试日志

Error:仅打印内核调试中错误级别的日志

Warn:仅打印内核调试中警告级别及其以上等级的日志

Info:仅打印内核调试中信息级别及其以上等级的日志

Debug:仅打印内核调试中调试级别机器人以上等级的日志

Verbose:打印内核调试中所有的日志

这里的区别,可以去观看一下“孤立二进制“UP主的日志视频,网址如下:

网页链接;vd_source=25989f02cab22f31785cd801f0edd0f8

我们一般情况无需关注内核中日志信息,除非是自己开发一些底层代码时,与内核中相关功能有关,才需要打开内核调试日志,一般情况下建议直接选择None即可

4、USB DFU On Boot(The USB Device Firmware Upgrade On Boot)

该选项是配置是否在ESP32 S3启动时,通过USB接口来升级固件。

如果需要就选择Enable,否则就Disable。一般情况不需要升级固件,平时选择Disable即可。

当需要这个功能来升级固件的时候,步骤如下:

① 手动进入下载模式:首先按住BOOT按钮不松开,然后按住RESET按钮,然后再放开RESET按钮,最后松开BOOT按钮

② 配置USB DFU:在Arduino IDE中配置USB Mode -> USB-OTG(TinyUSB),USB DFU On Boot -> Enable

③ 在Arduino IDE中upload固件到开发板中,在上传完成后,需要手动Reset开发板

这种方式无法将调试信息输出到串口,如果需要输出信息到串口,还是建议前面介绍的USB CDC功能,如果单单只想实现上传升级固件,这个未尝不是一个好办法。

5、Erase All Flash Before Sketch Upload

该选项是决定在Arduino IDE中上传代码时,是否需要把整个FLASH空间擦除。

Enable就是需要全面擦除FLASH;Disable就是不需要。这两者最直观的感觉就是下载时间,flash需要全面的话,慢了一倍多,最深层的原因就是FLASH的擦写次数是有限的,建议是选择Disable。

6、Events Run On

该选项是配置Arduino中断事件在ESP32 S3的哪一个内核上运行,由于ESP32 S3有两个内核,分别为Core 0和Core 1,所以我们就可以将涉及到中断相关的事件处理代码放到单独的内核上运行,这样就可以防止正常业务代码到运行,不用再被打断,这样程序运行时效率更高,可以做到实时处理外部中断事件。

这个选项跟后面的Arduino Run On选项就决定了双核的运行情况。

7、Flash Mode

该选项是配置ESP32 S3芯片与Flash通信的模式,不同的Flash芯片,这里可以配置不同的通信模式和速度。

Arduino IDE中ESP32S3配置选项意义

QIO(Quad I/O Fast Read):使用四根SPI逻辑线用于Flash的读取和写入;

DIO(Dual I/O Fast Read):使用两根SPI逻辑线用于Flash的读取和写入;

OPI(Octal I/O):使用八根SPI逻辑线用于Flash的读取和写入

这里就要看模组的情况,自己对号入座即可,如下图:

Arduino IDE中ESP32S3配置选项意义

我开发板的模组是N8R8,所以FLASH使用的是QSPI接口,当然选择SPI接口也可以,这里的QIO和DIO都可以选择,只不过QIO会比DIO快一点,所以选择QIO 120MHz就可以了。至于什么时候选择OPI,这就要看FLASH的容量了,假如容量大于16MB的话,这时候可以考虑使用OPI接口。

8、Flash Size

该选项是选择当前ESP32 S3上挂载的Flash容量大小,要根据实际的大小来选择,可以配置的参数如下:

Arduino IDE中ESP32S3配置选项意义

我开发板的模组是N8R8,所以FLASH容量是8MB。注意:这里的MB指的是字节,而Mb指的是位。

9、JTAG Adapter

该选项是用来配置JTAG Adapter的,使用JTAG调试程序会更加的精细,我们可以设置短点、单步调试、查看变量等来调试程序,能够帮助我们迅速的定位问题,可以配置的参数如下:

Arduino IDE中ESP32S3配置选项意义

还没有在Arduino IDE中使用过调试功能,目前官方支持调试的板子并没有ESP32S3,需要自行去魔改实现,并且听说存在BUG,所以这里我就用比较愚笨,但是比较见效的“printf大法”,这里直接设置Disable即可。后面在VSCode开发,我再来介绍如何debug调试ESP32S3。

10、Arduino Run On

该选项是为了配置Arduino Core任务代码所运行的ESP32 S3内核,这里的配置可以跟前面Events Run On所配置的内核不同,那么就可以在ESP32 S3两个内核上同时运行中断处理函数和Arduino Core任务代码。当然也可以选择成一样的内核,那么这样就可以节约一个内核的电量消耗,可以一定程度上降低功耗。

11、USB Firmware MSC On Boot(USB Firmware Mass Storage Class On Boot)

该选项是配置当使用USB连接到ESP32 S3开发板后,电脑上会弹出一个类似U盘的存储盘,这样我们就可以很方便的拉一个新的固件到这个存储盘里,这就是更新固件的一种新方法。有玩过STM32的小伙伴应该不陌生,就是读卡器实验,简单来说,就是在FLASH中移植了文件系统了。当你用USB线连接开发板的USB口,你的电脑就会出现SPI FLASH模拟的磁盘,如下图:

Arduino IDE中ESP32S3配置选项意义

还是新手的话,建议直接Disable即可,后面用到文件系统的时候,再开就行了。

12、Partition Scheme

该选项配置磁盘分区的方案,就是将FLASH空间合理规划。在Arduino IDE中为我们设定好了几个预设好的方案,我们根据实际情况选择对应的方案即可,具体配置如下图所示:

Arduino IDE中ESP32S3配置选项意义

我使用的是8M with spiffs(3MB APP/1.5MB SPIFFS),这里会有1.5MB 文件系统自身用到的,然后3MB空间是文件系统支配使用的,你可以随意将小于这个容量的文件塞进去。

当然也是支持自行创建自己的分区方案,这里就是创建一个.csv(comma-separeted values)文件,具体我也没有研究,研究后也会写帖子进行分享,大家可以先看官方教程,网址如下:

https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-reference/storage/nvs_partition_gen.html?highlight=csv

13、PSRAM

该选项为了配置外接的PSRAM的SPI连接方式,有些ESP32 S3开发板只有内部带的512KB SRAM的话,没有外挂PSRAM对内存扩容,那这里直接选择Disabled即可。如果是外挂了PSRAM,那就要根据PSRAM的容量大小来选择对应的SPI通信方式,具体参数如下图所示:

Arduino IDE中ESP32S3配置选项意义

N8R8模组的PSRAM是8M大小的,而且通过下图可以看到是OPI接口,所以这里直接选择OPI PSRAM

14、Upload Mode

该选项就是为了配置使用哪种接口来上传Arduino代码到ESP32 S3开发板中,具体可以配置的参数如下:

Arduino IDE中ESP32S3配置选项意义

UART0/Hardware CDC:配置USB CDC On Boot为Disabled,表示使用UART0上传代码(即板载的USB转串口芯片);当设置USB CDC On Boot为Enabled时,那就表明使用USB Hardware CDC方式来上传代码,我们在最上面介绍USB CDC On Boot参数时,介绍过如何使用这种方式怎么使用;

USB-OTG CDC(TinyUSB):这里需要先清楚TinyUSB是什么,TinyUSB 是用于嵌入式系统的开源跨平台USB主机 / 设备堆栈,旨在实现无动态分配的内存安全和延迟所有中断事件的线程安全,然后在非ISR任务功能中进行处理。目前在ESP32 S3芯片上已经成功移植了TinyUSB协议栈,其实简单来理解的话,就是使用软件模拟出一个Hardware CDC来上传程序。使用该模式时,也要修改USB Mode为USB-OTG(TinyUSB),这里要想上传代码到话,就需要手动进入下载模式了,稍微麻烦一点,但是好处就是开发板只要插上电脑,那么就不需要找到对应的USB设备挂载点了,因为通信协议是USB协议,此时系统中就会出现下图所示的设备。

Arduino IDE中ESP32S3配置选项意义

15、Upload Speed

该选项是配置上传代码到开发板时的通信速率,可以配置的参数如下图所示:

Arduino IDE中ESP32S3配置选项意义

我们开发板使用CH343P,它可以支持到921600波特率。

16、USB Mode

该选项是为了配置,当使用ESP32 S3开发板的USB接口时配置的模式,如果我们一直使用的是ESP32 S3的串口上传代码模式,配置USB CDC On Boot为Disabled,那么这里的USB Mode其实是用不到的,具体可以配置参数如下所示:

Arduino IDE中ESP32S3配置选项意义

Hardware CDC and JTAG:当使用USB连接方式与ESP32 S3开发板进行通信时,配置该参数,就表明将要使用ESP32 S3内置的硬件CDC功能或者JTAG调试模式;

USB-OTG(TinyUSB):只有当配置Upload Mode为USB-OTG CDC(TinyUSB)时,才需要同步配置USB Mode为该参数,因为需要配置USB的协议栈为TinyUSB方式;

总结

1、ESP32S3 R8N8推荐设置如下

Arduino IDE中ESP32S3配置选项意义

2、ESP32S3 R8N8下载方式,总的来说有三种:

① 通过串口进行下载程序,假如有自动下载电路,只需要点击上传程序,稍等片刻即可看到现象。这里方式的设置需要关注下图红框两处选项。

Arduino IDE中ESP32S3配置选项意义

② 通过USB口进行手动下载,下载过程需要按着BOOT引脚。这里方式的设置需要关注下图红框两处选项。

Arduino IDE中ESP32S3配置选项意义

③ 通过TinyUSB进行手动下载,下载过程需要按着BOOT引脚。这里方式的设置需要关注下图红框两处选项。

Arduino IDE中ESP32S3配置选项意义

来源:https://www.bilibili.com/opus/833077798602014787

- 本文内容来自网络,如有侵权,请联系本站处理。

2024-09   阅读(10)   评论(0)
 标签: 创客 ESP32

涨知识
摩尔斯电码

摩尔斯电码(Morse code)也被称作摩斯密码,是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。

评论:
相关文章
Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


Arduino-ESP32文件系统全解析:SPIFFS、LittleFS、SD卡操作

Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。


ESP32-P4-WIFI6开发板

ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。


ESP-Hosted 入门介绍 &使用指南

ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。


设备上云太麻烦?ESP-Hosted一站触达!

ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32 利用 SPI 连通 TFT 彩屏

本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。


在Micropython下使用ESPNow功能进行数据传输

本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。


用 ESP32-S3 打造多功能 USB Dongle

ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。


利用 ESP32-S3 和 CSI 技术打造智能家居

ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。