在Arduino IDE中合理配置ESP32-S3运行参数

0x00 概述

按照上篇教程搭建好ESP32的arduino开发环境后,虽然我们可以给开发板下载程序,查看到程序运行效果了。但其实并没有完全使开发板运行在最完美的状态下,这是因为市面上目前基于ESP32 S3这颗SOC做出的开发板型号非常多,基于这颗SOC还可以额外增加Flash和PSRAM空间,为了可以在编程和程序运行时正确识别这些外设,我们就需要正确配置这些参数。同时我们有时为了实际场景需要,减小ESP32 S3的电量消耗,就会人为的将CPU频率降低,达到减小功耗目的,此时也就需要来配置合适的CPU运行频率了。

所以要想完美的使自己的ESP32开发板运行在最合适的状态下,那就需要合理配置其运行参数,然后再进行编程时才能发挥好这颗SOC的潜力。我这里将ESP32 S3 N16R8配置的开发板作为参考,来详细介绍下我们如何在Arduino IDE中配置其运行参数。

在Arduino IDE中合理配置ESP32-S3运行参数 - 第1张
迷你ESP32 S3开发板

0x01 Arduino IDE中选择正确开发板

打开Arduino IDE后,我们首先需要选择正确的ESP32 S3开发板。如果你购买的是其他公司生产的特定型号的开发板那根据名称选择对应的有特定名称的开发板即可(例如TTGO T7 V1.4 Mini32开发板),如果是一般的ESP32 S3开发板,那可以根据下图选择“ESP32S3 Dev Module”即可:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第2张
选择开发板-ESP32S3 Dev Module

我们选择完开发板型号后,接下来就需要重点来看对应的参数如何设置了。上图中可以看出ESP32 S3可以配置的参数比较多,如果你选择的是其他型号的开发板,那可以配置的参数可能不同,那就需要参考对应开发板的使用手册来配置,这里我们只关心“ESP32S3 Dev Module”可以配置的参数。

0x02 ESP32 S3 N16R8介绍

在介绍Arduino IDE中可以配置的参数前,我们需要先弄清楚ESP32 S3 N16R8开发板中已知的各参数。如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第3张
CPU和片上存储配置
在Arduino IDE中合理配置ESP32-S3运行参数 - 第4张
ESP32S3 N16R8模组集成的元件
  • ESP32S3是双核32位的SOC,支持的最高CPU时钟频率为240MHz,但是集成的晶振只有40MHz,那要想CPU时钟频率为240MHz,那就得倍频了;
  • 384 KB ROM(Read Only Memory):只读存储器,用于程序启动和内核功能调用,可以想象成电脑固态硬盘空间;
  • 512 KB SRAM(Static RAM):静态随机存取存储器,用于数据和CPU指令存储,可以想象成电脑内存空间;
  • 最大8 MB PSRAM(Pseudo Static RAM):伪静态随机存储器,扩展的额外存储器,对SRAM的容量补充;
  • 如果ROM不够用,还可以外挂Flash来增加容量,Flash就可以想象成机械硬盘空间;
  • 乐鑫提供的ESP32S3模组,现在最高支持到16MB Quad SPI Flash,但是如果自己DIY一个模组的话,也可以到32MB的Flash;

综上所述可以看出,ESP32 S3性能还是很强大的,如果没有一个直观感受到话,那可以拿Arduino UNO R3的ATmega328P来对比一下看看:

  • ATmega328P为单核8位的SOC,时钟频率16MHz;
  • Nand Flash:跟ESP32 S3的ROM差不多,但空间容量只有32KB;
  • SRAM:仅仅只有2KB空间;

比较两者参数的话,我认为一颗ESP32 S3的性能至少要比Atmega328P高10倍。那接下来我们来看下ESP32-S3 N16R8的N16R8是指什么:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第5张
ESP32-S3-N16R8参数

这里我们就可以明白N16代表16MB的Flash,ESP32 S3芯片使用Quad SPI总线与Flash连接。R8代表8MB的PSRAM空间,使用Octal SPI总线与其连接。那这里需要来简单介绍下Quad SPI和Octal SPI区别。

在介绍Quad SPI和Octal SPI前,我们需要先认识SPI(Serial Peripheral Interface),是一种用于芯片间通信的同步串行通信接口规范,主要应用于单片机系统中,类似IIC协议,这种SPI接口于20世纪80年代由摩托罗拉公司开发,后发展为行业规范。SPI设备之间使用全双工模式通信,在同一条总线三只能有一个主机,可以有一个或多个从机,数据传输都是由主机发起。标准的SPI总线规定了4个逻辑信号接口:

  • SCLK(Serial Clock):串行时钟信号,由主机发出;
  • MOSI(Master Output,,Slave Input):主机输出,从机输入信号,数据由主机发出;
  • MISO(Master Input,Slave Output):主机输入,从机输出信号,数据由从机发出;
  • CS/SS(Chip Select/Slave Select):片选信号,由主机发出,一般是低电平有效;
在Arduino IDE中合理配置ESP32-S3运行参数 - 第6张
SPI总线主从机通信图
在Arduino IDE中合理配置ESP32-S3运行参数 - 第7张
Quad SPI接口简介
在Arduino IDE中合理配置ESP32-S3运行参数 - 第8张
Quad SPI特点
在Arduino IDE中合理配置ESP32-S3运行参数 - 第9张
Quad SPI功能框图
在Arduino IDE中合理配置ESP32-S3运行参数 - 第10张
读命令时序图
在Arduino IDE中合理配置ESP32-S3运行参数 - 第11张
Quad-SPI工作时序图

Octal SPI是八线SPI,收发共用8根数据线,通讯方式为半双工。而Quad SPI为四线SPI,收发共用4根数据线,所以说Octal SPI算是Quad SPI的升级版本。

0x03 Arduino IDE中ESP32 S3可配置参数介绍

首先来看下在Arduino IDE中可以配置的ESP32 S3参数有哪些呢?在选择好”ESP32S3 Dev Module“开发板后,我们就可以看到如下的可配置参数:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第12张
ESP32 S3可配置参数

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

ESP32 S3芯片支持USB CDC通信方式,可以用于类似RS232串口的通信方式,当你的ESP32 S3开发板没有其他串口设备的时候,就可以利用CDC来下载程序到ESP32 S3 SOC中。该配置选项可以配置为”Disabled"或者“Enabled",当设置为Enabled时,那ESP32 S3开发板在刚加电启动时,就可以在电脑上看到新出现的串口,接下来就可以使用该串口来下载程序,当USB Mode配置为“USB-OTG(TinyUSB)”时,首先确保USB线连接到开发板方式为USB口,不是UART口,我们可以通过系统识别的设备来区别连接到是哪种方式:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第13张
连接到ESP32 S3内置USB接口上

如果出现了下图所示的usb设备,那就说明Type-C接口接USB线方向错了,接到了USB转串口芯片上,只需要将Type-C接口线反一下方向就可以了,因为我们ESP32 S3开发板使用一个Type-C接口,通过正反插实现不同的接口连接到ESP32 S3芯片上:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第14张
连接到ESP32S3的内置串口

接下来具体操作步骤如下:

  • 首先手动进入下载模式:首先按住BOOT按钮,然后再按住RESET按钮,再放开RESET按钮,最后再放开BOOT按钮。(我们当前这款ESP32 S3开发板没有BOOT按钮,因为我感觉这样下载程序有点麻烦,但是好处是可以省去一个USB转串口芯片);
  • 需要配置USB CDC On Boot -> Enabled,Upload Mode -> UART0/Hardware CDC,USB Mode -> USB-OTG(TinyUSB);
  • Arduino IDE中编译、上传代码到开发板中,然后需要手动Reset开发板重启;
  • 可以使用Serial0.print()来打印输出一些调试信息;

如果使用我们迷你ESP32 S3开发板的话,这个选项可以直接设置为“Disabled",因为我们开发板上使用了沁恒CH343P USB转高速串口芯片,所以我们就可以使用真正的UART0上传代码了,不需要Hardware CDC方式。

在Arduino IDE中合理配置ESP32-S3运行参数 - 第15张
板载有CH343P芯片

如果将USB Mode设置为“Hardware CDC and JTAG”,那就是最方便方式,我们就不用上述步骤中第一步手动按BOOT按钮进入到下载模式了,直接就跟串口上传代码方式一样,而且还可以使用Serial.println()得到串口输出的数据,关键这种方式还有一个最大的好处可以省掉USB转串口芯片CH343P,降低开发板硬件成本,而且上传代码方式还是一样的简单方便。这其实就是乐鑫官方在ESP32 S3内部增加了USB接口的一个很重要目的,人家也是想让我们可以节约成本,使用体验还没有降低的初衷。

(2)CPU Frequency

这个选项可以让你配置CPU的时钟频率,打开IDE中CPU Frequency得到可以配置的参数如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第16张
可配置的CPU频率

可以配置的CPU Frequency一共有6个,其中频率越高,那CPU运行速度越快,那么消耗电量也就比较多,要想节约电量,那可以适当调低CPU频率,其中注意事项:

  • 240MHz(WiFi)、160MHz(WiFi)、80MHz(WiFi)三个选项是可以保证ESP32 S3的WIFI/BT功能正常运行的CPU频率;
  • 40MHz、20MHz、10MHz频率有点低,无法使WIFI/BT功能正常运行,只能保证CPU运行基本功能;

这里建议如果不考虑到电量消耗,还是建议将CPU频率调整到最高240MHz,这样可以保证我们的ESP32 S3在最佳性能模式下运行,当然在最佳性能模式下运行,消耗的电量也比较多,经过测试发现大概最高消耗的功率约为:0.95W,如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第17张
240MHz最高功率消耗0.95W

那当将CPU频率改为80MHz时,即保证WIFI/BT模块可以正常工作时最低的CPU频率,那消耗的功率稍微小了一点,约为0.8W:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第18张
80MHz消耗功率0.8W

如果将CPU频率改为10MHz,即不使用WIFI/BT功能,只需要CPU在最低频率下运行,消耗的功率约为0.29W:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第19张
10MHz最低CPU频率消耗功率

(3)Core Debug Level

此选项用于选择要打印到串口的Arduino内核调试日志等级,具体参数如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第20张
可配置内核调试打印等级

各参数具体意义如下:

  • None:不打印输出任何内核调试日志
  • Error:仅打印内核调试中错误级别的日志
  • Warn:仅打印内核调试中警告级别及其以上等级的日志
  • Info:仅打印内核调试中信息级别及其以上等级的日志
  • Debug:仅打印内核调试中调试级别机器人以上等级的日志
  • Verbose:打印内核调试中所有的日志

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

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

该选项就是配置是否在ESP32 S3启动时,通过USB接口来升级设备固件。目前支持DFU的仅有ESP32-S2和ESP32-S3这两款SoC,后面可能也会增加其他的SoC。如果需要适应USB DFU功能来升级固件的话,可以按照如下步骤操作:

  • 手动进入下载模式:首先按住BOOT按钮不松开,然后按住RESET按钮,然后再放开RESET按钮,最后松开BOOT按钮即可。
  • 配置USB DFU:在Arduino IDE中配置USB Mode -> USB-OTG(TinyUSB),USB DFU On Boot -> Enable。
  • 在Arduino IDE中upload固件到开发板中,在上传完成后,需要手动Reset开发板;

关于USB DFU功能,无法将一些调试信息输出到串口上打印,如果需要调试输出一些信息到串口,需要使用USB CDC功能。如果你仅仅是想要使用手动模式上传升级固件,那么使用USB DFU功能是没有问题,如果是用于开发,那还是建议使用USB CDC功能。一般不需要升级固件,所以平时该功能都是Disabled。

(5)Erase All Flash Before Sketch Upload

该选项是配置是否在Arduino IDE中上传代码时,先将整个Flash空间擦除,设置为Disabled那就是不擦除,Eabled就是在上传代码前,先将整个Flash空间擦除一遍后再上传。我建议是这里设置为Disabled,不需要每次上传代码前都将整个Flash空间擦除一遍,因为Flash存储器是有擦写次数限制的,就有点像电脑的机械硬盘一样。Flash的擦写次数一般都在10万次以上,虽然听起来很多,但是毕竟不是无限次使用的,所以如果不是实际需要,不建议每次上传程序都将整个Flash空间擦除一遍。

(6)Events Run On :"Core 0 or Core 1"

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

这里建议大家还是配置Events Run On为"Core 0",这样可以保证代码运行的实时性,但是造成的一点问题是,如果双核都运行的话,电量消耗也稍微多了一点,如果是为了减小功耗,不考虑代码运行实时性,可以配置中断事件代码和业务代码都在同一个核上。

(7)Flash Mode

这个选项是配置ESP32 S3芯片与Flash通信的模式,不同的Flash芯片,这里可以配置不同的通信模式和速度。可配置参数如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第21张
可配置的Flash Mode参数
  • QIO(Quad I/O Fast Read):使用四根SPI逻辑线用于Flash的读取和写入;
  • DIO(Dual I/O Fast Read):使用两根SPI逻辑线用于Flash的读取和写入;
  • OPI(Octal I/O):使用八根SPI逻辑线用于Flash的读取和写入;

这里的Flash Mode不能随便选择,选择错误的话,程序是不能正常运行的。这些选项其实就是决定了ESP32 S3的哪些IO引脚与SPI Flash芯片进行通信,对于我们的ESP32 S3开发板来说,由于使用的是乐鑫官方ESP32-S3-WROOM-1-N16R8的模组,所以来说QIO和DIO都可以选择,只不过QIO的速度比DIO要快一些,所以我们就选择QIO了。那OPI是什么时候选择呢?这个选项是为了更大容量的Flash准备的,例如有其他厂家做出大于16MB Flash的ESP32 S3模组的话,例如32MB的Flash,那就需要适应OPI这种模式了,对于我们ESP32 S3 N16R8的模组来说,选择QIO 120MHz是速度最快的。

(8)Flash Size

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

在Arduino IDE中合理配置ESP32-S3运行参数 - 第22张
可配置的Flash容量参数

常用的ESP32 S3模组,一共就有三种容量的Flash,分别是4MB、8MB、16MB的,由于我们的ESP32 S3开发板现在使用的是N16R8,所以是16MB的Flash容量,这里需要注意16MB(Mega Byte) = 128Mb(Mega bit),1 Byte = 8 bit。

(9)JTAG Adapter

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

在Arduino IDE中合理配置ESP32-S3运行参数 - 第23张
JTAG Adapter可配置参数

现在我调试代码很少用到JTAG,所以这里参数我都给设置为Disabled,在一般调试代码时,我们可以手动的添加一些Serial.println()调试代码来进行调试也比较方便。在后面教程中如果需要调试一些复杂的程序时,再详细介绍这个JTAG调试功能如何使用。

(10)Arduino Run On(Core 0 or Core 1)

该选项是为了配置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盘的存储盘,这样我们就可以很方便的拉一个新的固件到这个存储盘里,这就是更新固件的一种新方法。具体配置参数如下图:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第24张
可配置的参数

这里需要注意,当配置USB Firmware MSC On Boot为Enabled时,需要同时设置USB Mode为USB-OTG(TinyUSB)。接下来就可以上传代码了,当上传完代码后,就可以将ESP32 S3开发板的连接线从UART串口模式,更换为USB接口模式,对于我们的ESP32 S3开发板来说,就是将Type-C连接口换一个方向重新插,这样就可以换为USB接口模式,当板子加电后,就会弹出一个新的磁盘,有点像新插入U盘那样有提醒,如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第25张
可以更换固件文件

(12)Partition Scheme

该选项是配置磁盘分区的方案,在Arduino IDE中为我们设定好了几个预设好的方案,这样我们就可以方便的来选择对应的方案即可,具体配置如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第26张
Flash分区方案

分区表作用就是合理的将Flash空间进行规划一下,不同类型的数据将存储在不同的分区上。就有点像Windows系统中进行磁盘分区一样,C盘用来安装系统,D盘安装非系统软件,E盘存储文件等,Flash空间也是需要进行类似的操作。当然除了可以在Arduino IDE中选择提供好的Flash分区方案,我们也可以自己DIY一个分区方案,其实分区表就是创建了一个.csv(comma-separeted values)文件,各字段如下:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第27张
分区表文件中字段值

对于ESP32 S3 N16R8模组的开发板,我们就可以选择“16M Flash (3MB App/9.9MB FATFS)”分区方案,那对应的csv分区表是什么样的呢?如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第28张
App3M_Fat9M_16MB的csv分区表

下面我们来分析一下上面的分区表,首先来看为什么上面分区表是一个外挂有16MB Flash的ESP32 S3开发板呢?我们可以从第7行可以得知,那怎么来计算呢?

coredump, data, coredump, 0xFF0000, 0x10000,

0xFF0000为最后一个分区的起始地址,那占用的Size为0x10000,那所以最后这个分区最终地址是多少呢?其实就是将起始地址+Size大小就可以了:

0xFF0000 + 0x10000 = 0x1000000

在Arduino IDE中合理配置ESP32-S3运行参数 - 第29张
计算最后分区结束地址

可以得知十进制的最终地址为16777216,注意每个地址存储的是1Byte,就是一个字节,那16777216个字节是多少呢?除以1024就可以得到KB了:

16777216 / 1024 = 16384KB

在Arduino IDE中合理配置ESP32-S3运行参数 - 第30张
一共16384KB的磁盘空间

那为什么是16384KB的磁盘空间呢?首先我们要清楚,ESP32-S3除了外挂的Flash,还有自带的ROM空间,我们在文章开始介绍过ESP32 S3的一些基础信息,由于ESP32-S3自带ROM空间正好是384KB,那正好剩下的就是外挂的Flash空间了:

16384 - 384 = 16000KB

那剩下的16000KB就是16MB的Flash空间啦,这里只所以用16000KB代表16MB的Flash空间,那是因为对于硬件生产厂家计算磁盘空间为了简化,都是按照1000来进行计算的,不是我们常用的1024来算的。就跟我们买的硬盘一样,虽然是512GB固态硬盘,但是实际使用时发现只有476.83GB一样,不是厂家骗人,而且大家的计算方式不一样造成的。

(13)PSRAM

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

在Arduino IDE中合理配置ESP32-S3运行参数 - 第31张
PSRAM通信方式选择
  • QSPI PSRAM:外挂的Flash模块,使用Quad SPI方式与其进行通信;
  • OPI PSRAM:外挂的Flash模块,使用Octal SPI方式与其进行通信;

对于我们的ESP32 S3 N16R8模组来说,外挂的Flash模块为8MB,使用的是Octal SPI通信,那就需要选择OPI PSRAM这个选项了,如果你的开发板的PSRAM是2MB的,那就需要选择QSPI PSRAM了,如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第32张
根据PSRAM来配置

(14)Upload Mode

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

在Arduino IDE中合理配置ESP32-S3运行参数 - 第33张
可配置Upload Mode参数

这里可以配置的参数有两个分别如下:

  • 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中合理配置ESP32-S3运行参数 - 第34张
识别到的开发板

(15)Upload Speed

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

在Arduino IDE中合理配置ESP32-S3运行参数 - 第35张
可配置的Upload Speed参数

我们开发板使用CH343P,它可以支持到921600波特率,具体介绍如下图所示:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第36张
CH343支持的通信波特率

如果你发现你自己的其他型号ESP32 S3开发板上传经常出错的话,可以尝试将Upload Speed波特率降低,也许可以解决上传出错的问题。

(16)USB Mode

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

在Arduino IDE中合理配置ESP32-S3运行参数 - 第37张
USB Mode可配置参数
  • Hardware CDC and JTAG:当使用USB连接方式与ESP32 S3开发板进行通信时,配置该参数,就表明将要使用ESP32 S3内置的硬件CDC功能或者JTAG调试模式;
  • USB-OTG(TinyUSB):只有当配置Upload Mode为USB-OTG CDC(TinyUSB)时,才需要同步配置USB Mode为该参数,因为需要配置USB的协议栈为TinyUSB方式;

这里需要注意点是配置USB Mode的前提是,USB线与ESP32 S3开发板连接时,必须连接到ESP32 S3的内置USB接口上,不是通过usb转串口芯片连接到ESP32 S3的串口才可以。

0x04 迷你ESP32 S3 N16R8开发板参数配置

上一节我们介绍了所有的可配置参数,那对于我们的开发板来说,那最经常使用的参数该如何配置呢?我建议我们还是使用通过Type-C接口来连接到板子的CH343P芯片三与开发板通信是比较合适的方式,那开始上传代码前,需要确保USB线连接正确,如果不是下图所示,那就需要翻转一下Type-C接口重新插就可以了:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第38张
确保识别到沁恒串口芯片

使用我们ESP32 S3 N16R8开发板的话,那最常用的Arduino IDE配置参数,就可以按照下图来配置就可以了,如果你的开发板是其他型号的,那就需要根据自己开发板配置来对应修改就可以了:

在Arduino IDE中合理配置ESP32-S3运行参数 - 第39张
迷你ESP32S3 N16R8开发板
在Arduino IDE中合理配置ESP32-S3运行参数 - 第40张
迷你ESP32S3 N16R8开发板Arduino IDE配置参数

0x05 参考资料

[0]. ESP Product Selector. https://products.espressif.com/#/product-selector?names=

[1]. Arduino IDE Tools Menu. https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/guides/tools_menu.html

[2]. ESP32-S3到底有哪些功能特性. https://blog.csdn.net/ami82/article/details/121901764

[3]. ESP32 S3 WROOM-1/1U模组技术规格书. https://www.espressif.com.cn/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_cn.pdf

[4]. 理解SPI/Dual SPI/Quad SPI/QPI之间的区别. https://blog.csdn.net/tianizimark/article/details/124608851

[5].序列周边接口-维基百科介绍. https://zh.wikipedia.org/zh-cn/%E5%BA%8F%E5%88%97%E5%91%A8%E9%82%8A%E4%BB%8B%E9%9D%A2

[6]. STM32H7x3参考手册. https://www.st.com/resource/zh/reference_manual/rm0433-stm32h742-stm32h743753-and-stm32h750-value-line-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

[7]. Quad-SPI,Everything you need to know. https://embeddedinventor.com/quad-spi-everything-you-need-to-know/

[8]. Quad-SPI interface on STM32. https://www.st.com/content/ccc/resource/technical/document/application_note/group0/b0/7e/46/a8/5e/c1/48/01/DM00227538/files/DM00227538.pdf/jcr:content/translations/en.DM00227538.pdf

[9]. USB CDC and DFU Flashing. https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/tutorials/cdc_dfu_flash.html

[10]. 关于MCU内部flash存储数据的寿命及提高擦写次数的方法. https://blog.csdn.net/baodewang/article/details/111247653

[11]. How to use ESP32 Dual Core with Arduino IDE. https://randomnerdtutorials.com/esp32-dual-core-arduino-ide

[12]. esp8266,esp32中的SPI FLASH 访问模式(QIO QOUT DIO DOUT). https://blog.csdn.net/zhou_2018/article/details/117769317

[13].ESP-IDF编程指南-SPI Flash API. https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/api-reference/peripherals/spi_flash/index.html

[14]. Arduino-ESP32 Partition Table. https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/tutorials/partition_table.html

[15]. TinyUSB官网文档. https://docs.tinyusb.org/en/latest/

[16]. CH343芯片官网手册. https://www.wch.cn/downloads/CH343DS1_PDF.html

本文原创,作者:corvin_zhang,其版权均为ROS小课堂所有。
如需转载,请注明出处:https://www.corvin.cn/3258.html