第六章 新建Arduino工程
本章我们将讲解新建ESP32S3的Arduino工程的详细步骤,同时介绍一下对正点原子ESP32-S3开发板Arduino工程的设置。 本章将分为如下几个小节: 6.1 使用Arduino IDE2新建工程 6.2 ESP32-S3 Arduino工程设置 6.3 运行ESP32-S3 Arduino第一个工程
6.1 使用Arduino IDE2新建工程1、打开Arduino IDE2软件,通过点击“文件à新建项目”,具体操作如下: file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps1.jpg 图6.1.1 新建Arduino项目 通过以上操作后,我们得到一个干净的Arduino初始项目,界面如下: file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps2.jpg 图6.1.2 Arduino初始项目界面 2、通过“文件àSave”操作或直接通过“Ctrl+S”快捷键,将工程保存到某个文件夹下,然后再选择存放路径并对工程进行重命名,具体操作如下: file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps3.jpg 图6.1.3 保存工程操作 file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps4.jpg 图6.1.4 保存到文件夹下 当我们设置好存放路径以及工程的命名时,按下保存,这时候软件进行刷新,这样子工程已经算是在你的电脑上存档好了。 注意:保存的工程命名,其实是有两重含义,第一重就是项目文件夹的命名,即在Arduino_Project文件夹下可看到有一个文件夹命名为hello_world;第二重就是hello_world文件夹里面的ino文件的命名也是hello_world,这两个名字一定要一致才可以。而ino文件是Arduino IDE产生的工程文件。 6.2 ESP32-S3 Arduino工程设置按照6.1小节的操作,我们已经新建好Arduino工程,但是还不是ESP32-S3工程,需要针对正点原子ESP32-S3开发板用的ESP32-S3模组进行设置。 在前面第四章中提及到ESP32S3模组因PSRAM和FLASH容量的差别,有好几个种类,而正点原子ESP32-S3开发板采用的模组型号为ESP32-S3-WROOM-1-N16R8。 首先我们得选择该项目工程的开发板,这个操作在前面5.2.4也有介绍到,就是通过“工具à开发板àesp32àESP32S3 Dev Module”,如下图所示: file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps5.jpg 图6.2.1 选择ESP32S3 Dev Module 选择好ESP32-S3模组后,在“工具”界面下,出现开发板的一些配置项,如下图所示: file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps6.jpg 图6.2.2 ESP32S3模组参数 在这里,我们一一做一个科普。 1、USB CDC On Boot(USB Communications Device Class On Boot) ESP32S3芯片内置USB接口,支持USB CDC,说明可以跳过USB转串口芯片对模组进行下载。有两个选项,Enable:这种选项是要在没有串口芯片的情况下选择;Disable:有串口芯片的情况下选择。我们的ESP32-S3开发板直接是通过带有串口芯片的电路进行下载程序的,所以这里直接选择Disable即可。 2、CPU Frequency 该选项顾名思义就是让你设置CPU的时钟频率,有6个频率可供选择:240MHz(WiFi)、160MHz(WiFi)、80MHz(WiFi)、40MHz、20MHz、10MHz。 想让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个选择可供选择:None、Error、Warn、Info、Debug、Verbose。 None:不打印输出任何内核调试日志 Error:仅打印内核调试中错误级别的日志 Warn:仅打印内核调试中警告级别及其以上等级的日志 Info:仅打印内核调试中信息级别及其以上等级的日志 Debug:仅打印内核调试中调试级别机器人以上等级的日志 Verbose:打印内核调试中所有的日志 我们一般情况无需关注内核中日志信息,除非是自己开发一些底层代码时,与内核中相关功能有关,才需要打开内核调试日志,一般情况下建议直接选择None即可。 4、USB DFU On Boot(The USB Device Firmware Upgrade On Boot) 该选项是配置是否在ESP32-S3启动时,通过USB接口来升级固件。如果需要就选择Enable,否则就Disable。一般情况不需要升级固件,平时选择Disable即可。 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,所以我们就可以将涉及到中断相关的事件处理代码放到单独的内核上运行,这样就可以防止正常业务代码运行,不用再被打断,这样程序运行时效率更高,可以做到实时处理外部中断事件。 这个选项跟后面的Event Run On选项就决定了双核的运行情况 7、Flash Mode 该选项是配置ESP32-S3芯片与Flash通信的模式,不同的Flash芯片,这里可以配置不同的通信模式和速度,这里有四种选择:QIO 80MHz、QIO 120MHz、DIO 80MHz和OPI 80MHz。 QIO(Quad I/O Fast Read):使用四根SPI逻辑线用于Flash的读取和写入; DIO(Dual I/O Fast Read):使用两根SPI逻辑线用于Flash的读取和写入; OPI(Octal I/O):使用八根SPI逻辑线用于Flash的读取和写入 这里选择的依据,就是我们用的模组,其内部FLASH是通过什么接口跟ESP32-S3芯片进行通信的。我们采用的模组ESP32-S3-WROOM-1-N16R8,模组内部通过QSPI接口跟芯片进行通信的,当然,选择普通SPI也可以。只不过为了提高速度,配置选择为QIO 120MHz。 8、Flash Size 该选项是选择当前ESP32-S3上挂载的Flash容量大小,要根据实际的大小来选择,可以配置的参数有4MB(32Mb)、8MB(64Mb)和16MB(128Mb)。我们采用的模组FLASH容量为16MB,所以选择为16MB(128b)。 9、JTAG Adapter 该选项是用来配置JTAG Adapter的,使用JTAG调试程序会更加的精细,我们可以设置短点、单步调试、查看变量等来调试程序,能够帮助我们迅速的定位问题,可以配置的参数有Disabled、Integrated USB JTAG、FTDI Adapter、ESP USB Bridge。前面也有提及到Arduino IDE 不支持ESP32S3调试的,所以这里直接选择Disabled即可,在程序用比较见效的“printf大法”调试程序。 10、Arduino Run On 该选项是为了配置Arduino Core任务代码所运行的ESP32-S3内核,这里的配置可以跟前面Events Run On所配置的内核不同,那么就可以在ESP32-S3两个内核上同时运行中断处理函数和Arduino Core任务代码。当然也可以选择成一样的内核,那么这样就可以节约一个内核的电量消耗,可以一定程度上降低功耗。 11、USB Firmware MSC On Boot 该选项是配置当使用USB连接到ESP32-S3开发板后,电脑上会弹出一个类似U盘的存储盘,这样我们就可以很方便的拉一个新的固件到这个存储盘里,这就是更新固件的一种新方法。有玩过STM32的小伙伴应该不陌生,就是读卡器实验,简单来说,就是在FLASH中移植了文件系统了。当你用USB线连接开发板的USB口,你的电脑就会出现SPI FLASH模拟的磁盘。 还是新手的话,建议直接Disable即可,后面用到文件系统的时候,再开就行了。 12、Partition Scheme 该选项配置磁盘分区的方案,就是将FLASH空间合理规划。在Arduino IDE中为我们设定好了几个预设好的方案,我们根据实际情况选择对应的方案即可,这里我们选择的是16MB(3MB APP/9.9MB FATFS)。 当然也可以自行创建自己的分区表方案,这部分内容大家自行去学习就好了。基于现有例程,16MB(3MB APP/9.9MB FATFS)的分区表方案已经够用了。 13、PSRAM 该选项为了配置外接的PSRAM的SPI连接方式。有些ESP32-S3芯片只有内部512KB SRAM,没有外挂PSRAM对内存扩容,那这里直接选择Disabled即可。如果是外挂了PSRAM,那就要根据PSRAM的容量大小来选择对应的SPI通信方式,我们模组的PSRAM是通过OPI接口跟芯片通信,所以这里选择为OPI PSRAM。 14、Upload Mode 该选项就是为了配置使用哪种接口来上传Arduino代码到ESP32-S3开发板中,具体配置参数为UART0/Handware CDC、USB-OTG CDC(TinyUSB)。 在这里我们选择的是UART0/Handware CDC,结合前面USB CDC On Boot设置为Disable的情况,所以在这里就确定了要使用UART0去上传代码到开发板中,在后面我们就需要用USB线连接电脑USB口和开发板的串口进行下载程序。 15、Upload Speed 该选项是配置上传代码到开发板时的通信速率,可以选择配置的参数有:921600、115200、25600、230400、512000。我们串口电路用到的CH340G支持通信波特率为50bps~2Mbps,所以为了提高速度,我们直接选择921600。 16、USB Mode 该选项是为了配置,当使用ESP32-S3开发板的USB接口时配置的模式,如果我们一直使用的是ESP32 S3的串口上传代码模式,配置USB CDC On Boot为Disabled,那么这里的USB Mode其实是用不到的。 最后推荐设置为如下图配置: file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps7.jpg 图6.2.3 正点原子ESP32S3 Arduino工程配置参数 注意:当我们把ESP32S3 Arduino工程参数配置好之后,会自动保存下来。当你选择的开发板为ESP32S3 Dev Module时,会自动配置好。只不过当我们把工程移动到别的地方,这时候工程就需要重新进行开发板选择以及端口选择。 6.3 运行ESP32-S3 Arduino第一个工程 经过6.1和6.2小节操作,我们接下来就是见证奇迹的时候了,向我们Arduino说个hello。 首先,用串口线连接电脑以及开发板的UART口,并且注意查看跳线帽有没有接对,如下图所示。 file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps8.jpg 图6.3.1 开发板连接电脑图 连接好开发板后,我们需要查看一下用到的是哪个端口,这时候可以通过Arduino IDE软件“工具à端口”进行查看,如下图所示。 file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps9.jpg 图6.3.2 查看开发板的串口 可以看到开发板连接到的是电脑的COM3,我们点击一下COM3即可。然后,可以看到软件的主界面右下角会显示“ESP32S3 Dev Module在COM3上”,同时我们再简单写几句代码,大家现在看不懂没有关系,后面会一一讲解到,这时候主界面如下图所示。 file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps10.jpg 图6.3.3 Arduino IDE2主界面 接下来,我们就要按一下编译按钮,编译一下代码,通过信息显示窗口可以看到编译的过程,编译完成后,会显示项目占用的内存大小,如下图所示。 file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps11.jpg 图6.3.4 对代码进行编译 代码编译成功后,我们按下上传按钮,把程序烧录进开发板,这时候会从信息显示窗口看到具体的烧录过程,如下图所示。 file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps12.jpg 图6.3.4 对代码进行上传 当我们程序下载成功后,如下图所示。 file:///C:/Users/ALIENTEK/AppData/Local/Temp/ksohtml18660/wps13.jpg 图6.3.5 程序下载成功
|