-
Notifications
You must be signed in to change notification settings - Fork 6
第1章 基础篇 基础不牢,地动山摇
本章内容将带领大家认识在准备开发ESP32-C3之前,需要了解哪些内容,如不同开发环境和方式的区别、软件开发套件的选择和下载的方式、遇到问题应该查阅哪些资料或从哪里获取得到有效的技术支持,从而避免一些不必要的时间消耗。
ESP32-C3,是乐鑫于2020年11月27日公布的一款低成本高性能且注重安全的WiFi4 & BLE 5.0 SoC;同时,其也是乐鑫ESP32家族C系列第一款采用RISC-V内核的芯片;然而,其在2021年4~5月份才开始真正推向市场。所以,目前官方和第三方关于ESP32-C3的资料都非常的匮乏,这也很容易导致新人在入手这颗芯片时,由于多如牛毛的ESP32系列资料的干扰;一方面,打击了新手的自信心;另一方面,会因资料与芯片不匹配而浪费大量的时间。因此,小编在本章节内容将带领新人如何快速认识并使用ESP32-C3。
妨碍新人玩转ESP32-C3的最大拦路虎就是开发环境的搭建,主要的问题点如下所示:
- 问题最多的就是Windows环境,因为用于开发ESP32-C3的很多工具都是Linux系统天生自带的,同样的工具想要在Windows系统上运行,或多或少会存在兼容性和水土不服的情况;
- 其次,就是苹果的Mac系统,但是得益于Mac OS是基于Unix内核开发的界面操作系统,与Linux系统的兼容性会比Windows系统好很多,自然在Mac系统开发ESP32-C3就会顺畅很多,毕竟Linux和Unix之间有血缘关系;
- 最后,开发ESP32-C3体验最好的就是Linux系统了;
综上所述,如果大家平时主力使用的系统就是Linux或者Mac,那么小编强烈推荐使用Linux和Mac开发ESP32-C3。当然,如果是使用Windows系统开发ESP32-C3,相较于以前现在问题也不是很大,只是稍微有点曲折。这里,小编推荐1.2 基于VSCode的ESP32-C3开发环境的搭建和1.3 基于JTAG对ESP32-C3的调试及下载,相较于官网的教程这两篇教程会更加符合新人,尤其是用习惯了IAR和KEIL的新人,其基本融合了IAR和KEIL大部分同样的功能;当然,如果还是觉得官网推出的教程更适合,则请单击跳转。
开发方式也是困扰新人的另一个绊脚石,有纯命令行
,Eclipse+插件
,VScode+插件
,Microsoft VS+插件
以及第三方的一些工具
;可谓是五花八门让新人迷失了方向,导致不知道选择哪个才是最稳定可靠、好用以及有乐鑫官方维护的。这里,小编强烈推荐使用VScode+插件方式进行ESP32-C3的代码开发,因为VScode是一个跨平台的文本编辑器,配合各式各样的插件可以大大地提高工作效率;至于,如何使用它们请参考上述开发环境搭建中推荐的两篇文章,而上述其他的方式请读者们自行查找。
同样,这也是一个让新人一脸懵逼地选择,目前有ESP-IDF,ARDUINO-ESP32,Micro-Python,Lua,Javascript等等这几种软件开发方式;对于这么多类型的软件开发,小编推荐的意见如下:
- 【推荐★★★★★】,如果是想要使用ESP32-C3开发产品,则老老实实使用ESP-IDF,功能最全且更新最快;
- 【推荐★★★】,如果是想要搞搞DIY,则使用ARDUINO-ESP32,但有可能遇到想要的功能没有对应的接口;
- 【推荐★】,熟悉Python的又只是想搞DIY的,可以使用Micro-Python,但是是由第三方进行维护,维护的工程师与官方的没法相提并论;
- 【不推荐】,对于从互联网转过来的工程师,则可以选择Lua和Javascript,非主流的开发方式;
这也是很多新人吐槽最多的一个点,由于很多工具和软件的镜像并没有放在国内的服务器,导致用户下载的时候少则几十分钟,多则几个小时,如下:
-
镜像已经同步至国内的服务器,下载速度非常快,但是有些周折,甚至有时会有莫名其妙的问题;
-
如果条件允许,强烈推荐从Github的仓库下载对应的软件开发套件和工具;因为它永远是最新,最早修复bug的仓库;
对于日常的ESP32-C3开发,所使用到的必备资料如下:
以上资料已经涵盖了日常所使用的大部分场景,无特殊情况无须额外的资料。
在开发ESP32-C3的时候,难免会遇到一些技术的难题,可以通过以下渠道获取得到技术支持:
-
有乐鑫官方专人解答,响应速度以及回复质量是最高的;
-
有乐鑫官方专人解答,但是响应速度和回答率并没有Github的Issues高,尤其是中文发的贴子,基本上没有人理会;
-
【推荐★★★★】,乐鑫官方的技术支持邮件[email protected]
对于不擅长英文的工程师,可以采用这种方式,但是由于FAE的能力水平参差不齐,有时解决一个问题会花费很长一段时间,平均的响应速度不是太快,但总体略好于乐鑫官方的ESP32论坛;
-
红旭无线有专人解答,由于人手有限,所以仅限于HX-DK-商开发板所涉及的无线相关问题;
-
ESP32-C3相关问题,可以在此QQ群与各位网友一起自由讨论;
本章的内容,讲解了基于Visual Studio Code来搭建ESP32-C3的开发环境,包括SDK和工具包的下载和更新、Espressif IDF插件的下载和配置、固件的烧录、编译以及程序的编辑,都可以在这里找到答案,这也是开启ESP32-C3软件开发的一小步。
目前,ESP32-C3是乐鑫新推出的一款 WiFI&BLE 5.0 SoC芯片,要想实现ESP32-C3的代码编辑
、程序编译
、固件烧写
以及软件的功能调试仿真
。我们需要提前下载下述的工具:
-
主要用于代码地编辑和编译,以及固件地烧录和调试仿真
-
Espressif IDF插件
在VS Code的插件市场中输入
Espressif IDF
,便可以直接下载;其出自于乐鑫官方之手,大大方便了工程师基于乐鑫芯片的开发;小编在写这篇文章时,该插件的版本为v0.6.1,如果后续有新的版本则使用最新的版本 -
用于下载乐鑫的SDK以及对应的工具,同时它也是一个很好版本管理以及协同合作的工具,安装最新版本的即可;
-
Microsoft Visual C++ Build Tools
如果安装相关软件时,出现下述错误:
error: Microsoft Visual C++ 14.0 is required.
这个时候就需要安装这个软件,否则不需要;
-
步骤1,在任何你想要存放SDK的位置,单击鼠标右键并选中Git Bash Here(前提是已经安装了Git工具),
-
步骤2,然后根据自己的实际情况,键入下述的任何一条命令:
-
下载最新版本
git clone --recursive https://github.com/espressif/esp-idf.git
-
下载指定的稳定版本
git clone -b v4.2 --recursive https://github.com/espressif/esp-idf.git
这里小编是仅以v4.2版本为例
-
-
步骤3,子模块更新
下载完SDK之后,还需要对子模块进行更新;那么如何判断是否有子模块呢?我们可以在SDK目录查看是否有
.gitmodules
文件;如果有,则还需要键入以下命令:git submodule update --init --recursive --progress
当将SDK下载下来之后,我们还需要下载对应的工具才能实现编译
、下载
以及调试仿真
;由于是以ESP32-C3为主题来讲解,所以这里其他ESP32型号对应的工具就不用下载了,具体的步骤如下:
-
步骤1,在系统环境变里中增加工具包的存放路径,如下:
变量名:IDF_TOOLS_PATH 变量值:F:\Tools\Espressif\IDF_Tools\ .espressif
其中变量名不可改变,但是对应的路径可以根据自己的情况不同而不同
-
步骤2,设置工具包在国内服务器的下载路径,否则下载速度会很慢
变量名:IDF_GITHUB_ASSETS 变量值:dl.espressif.com/github_assets
-
步骤3,在通过Git下载下来的SDK根目录下,打开Powershell.exe以便路径可以切换到SDK的根目录
-
步骤4,然后在步骤3中打开的powershell窗口,键入如下命令:
.\install.ps1 esp32c3
-
步骤5,在步骤4之后,先不要关闭powershell窗口,继续键入如下命令:
.\export.ps1
紧接着就会输出不同工具的路径,此时仍然先不要关闭powershell窗口,下述章节会用到这些内容,如下图所示:
如果上述的操作正确,那么ESP32-C3的相关工具包,就会很快被安装下载到你指定的目录下:
在VSCode中进行开发ESP32-C3之前,需要对Espressif IDF插件进行配置,主要需要修改的地方如下:
-
idf.adapterTargetName
该参数主要配置目标设备,如
esp32
、esp32s2
、esp32c3
、esp32s3
;选择esp32c3即可,如下图所示: -
idf.customExtraPaths
该参数主要是在VSCode中,提前将上述安装的各个配置工具包的路径添加到系统环境变量PATH,当然你可以直接将各个配置工具包的路径,分别添加到你电脑的系统环境变量PATH上,只不过Espressif IDF插件在执行相关的操作时,是优先调用
idf.customExtraPaths
中的内容;那么,应该如何填充这些内容呢?也就是上面步骤5提及的内容;那么,知道了有哪些工具之后,我们就将这些工具的路径填充到idf.customExtraPaths
,以下是小编配置工具包的路径内容 (请勿直接复制下述内容,其仅表示当前小编的工具包路径,后续应随着工具的升级而做出相应的修改):F:\BLE_WIFI\Espressif\SDK\esp-idf\components\esptool_py\esptool;F:\BLE_WIFI\Espressif\SDK\esp-idf\components\app_update;F:\BLE_WIFI\Espressif\SDK\esp-idf\components\espcoredump;F:\BLE_WIFI\Espressif\SDK\esp-idf\components\partition_table;F:\Tools\Espressif\IDF_Tools\.espressif\tools\riscv32-esp-elf-gdb\11.2_20220823\riscv32-esp-elf-gdb\bin;F:\Tools\Espressif\IDF_Tools\.espressif\tools\riscv32-esp-elf\esp-2022r1-11.2.0\riscv32-esp-elf\bin;F:\Tools\Espressif\IDF_Tools\.espressif\tools\cmake\3.24.0\bin;F:\Tools\Espressif\IDF_Tools\.espressif\tools\openocd-esp32\v0.11.0-esp32-20220706\openocd-esp32\bin;F:\Tools\Espressif\IDF_Tools\.espressif\tools\ninja\1.10.2\;F:\Tools\Espressif\IDF_Tools\.espressif\tools\idf-exe\1.0.3\;F:\Tools\Espressif\IDF_Tools\.espressif\tools\ccache\4.6.2\ccache-4.6.2-windows-x86_64;F:\Tools\Espressif\IDF_Tools\.espressif\python_env\idf5.1_py3.9_env\Scripts;F:\BLE_WIFI\Espressif\SDK\esp-idf\tools;
当填充完成之后,再打开全局的
Setting
,看看格式符不符合JSON格式:"idf.customExtraPaths": "F:\\BLE_WIFI\\Espressif\\SDK\\esp-idf\\components\\esptool_py\\esptool;F:\\BLE_WIFI\\Espressif\\SDK\\esp-idf\\components\\app_update;F:\\BLE_WIFI\\Espressif\\SDK\\esp-idf\\components\\espcoredump;F:\\BLE_WIFI\\Espressif\\SDK\\esp-idf\\components\\partition_table;F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\tools\\riscv32-esp-elf-gdb\\11.2_20220823\\riscv32-esp-elf-gdb\\bin;F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\tools\\riscv32-esp-elf\\esp-2022r1-11.2.0\\riscv32-esp-elf\\bin;F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\tools\\cmake\\3.24.0\\bin;F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\tools\\openocd-esp32\\v0.11.0-esp32-20220706\\openocd-esp32\\bin;F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\tools\\ninja\\1.10.2\\;F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\tools\\idf-exe\\1.0.3\\;F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\tools\\ccache\\4.6.2\\ccache-4.6.2-windows-x86_64;F:\\Tools\\Espressif\\IDF_Tools\\.espressif\\python_env\\idf5.1_py3.9_env\\Scripts;F:\\BLE_WIFI\\Espressif\\SDK\\esp-idf\\tools;",
-
idf.customExtraVars
该参数主要是配置工具包中所需要的一些自定义环境变量值,同样的你可以将自定义环境变量值添加到你电脑的系统环境中,只不过Espressif IDF插件在执行相关的操作时,是优先调用
idf.customExtraVars
中的内容,如下是小编的内容 (请勿直接复制下述内容,其仅表示当前小编的路径,后续应随着工具的升级而做出相应的修改):{"OPENOCD_SCRIPTS":"F:/Tools/Espressif/IDF_Tools/.espressif/tools/openocd-esp32/v0.10.0-esp32-20210902/openocd-esp32/share/openocd/scripts","IDF_CCACHE_ENABLE":"1"}
同理,当填充完成之后,再打开全局的
Setting
,看看格式符不符合JSON格式:"idf.customExtraVars": "{\"OPENOCD_SCRIPTS\":\"F:/Tools/Espressif/IDF_Tools/.espressif/tools/openocd-esp32/v0.10.0-esp32-20210902/openocd-esp32/share/openocd/scripts\",\"IDF_CCACHE_ENABLE\":\"1\"}",
-
idf.espIdfPath
这里填充ESP-IDF的路径,但是该参数只针对Linux和Mac OS;所以,如果不是这两个系统之一,则可以不填;
-
idf.espIdfPathWin
这里填充ESP-IDF的路径,但是该参数只针对Windows系统,以下是小编的路径:
F:\BLE_WIFI\Espressif\SDK\esp-idf-c3
-
idf.flashType
该参数是配置下载固件时,是选择
UART
还是JTAG
接口; 注意:ESP32-C3芯片只支持JTAG接口,不支持SWD接口;以下是小编的配置: -
idf.openOcdConfigs
该参数主要是配置OpenOcd,用于下载以及调试ESP32-C3,我们需要在代码工程中的
settings.json
配置相关的参数,有两种方式:-
外置的JTAG,如
ESP-Prog
"idf.openOcdConfigs": [ "board/esp32c3-ftdi.cfg" ]
上述是使用外部的ESP-Prog调试仿真器的配置;
-
ESP32-C3内嵌的USB-JTAG
"idf.openOcdConfigs": [ "board/esp32c3-builtin.cfg" ]
ESP32-C3内嵌有JTAG调试仿真器,无须额外的调试仿真器也可实现调试仿真;
-
-
idf.port
该参数用于选择连接ESP32-C3的串口号,仅对Linux和Mac OS有效;
-
idf.portWin
该参数用于选择连接ESP32-C3的串口号,仅对Windows OS有效;如果是采用JTAG下载则不需要填充该参数;
-
idf.pythonBinPath
该参数用于配置工具包中Python工具的路径,仅对Linux和Mac OS有效;
-
idf.pythonBinPathWin
该参数用于配置工具包中Python工具的路径,仅对Windows OS有效;以下是小编的路径:
F:\Tools\Espressif\IDF_Tools.espressif\python_env\idf5.1_py3.9_env\Scripts\python.exe
-
idf.toolsPath
该参数用于配置工具包的路径,仅对Linux和Mac OS有效;
-
idf.toolsPathWin
该参数用于配置工具包的路径,仅对Windows OS有效;步骤1已经将路径添加到电脑的系统环境中了,以下是小编电脑中新添的IDF_TOOLS_PATH系统环境变量
所以,该参数的填充如下:
${env:IDF_TOOLS_PATH}
除了上述提及的参数,其他的参数暂时保持默认;如有必要,再根据具体的应用做出相对应的更改。
当一些软件上的bug修复以及相应工具的升级,官方都会第一时间推送至Github上,所以我们应该时不时地更新一下自己本地的软件和相应的工具,以避免不必要的问题,具体的方式如下:
-
SDK更新
该命令仅对从master分支下载的SDK有效,在当前SDK的路径下依次键入下述的命令:
git checkout master
git pull
git submodule update --init --recursive -
工具包更新
操作的方法如上述的步骤4
通过上述的1.2.2 开发环境搭建之后,如果没有配置错误,那么这个时候基本上是可以在VSCode中使用Espressif IDF插件的所有功能;以下小编给大家显示常见的几个功能:
为了新建一个,我们首先打开VSCode
,然后按下F1
->ESP-IDF:Show Examples Projects
,然后选择一个你想要创建的工程,这里小编以Blink这个工程为例:
有了工程之后,我们就可以在VSCode中利用Espressif IDF插件编译、下载以及打印Log信息,这里小编还是以Blink这个工程为例:
如果我们没有进行对应的配置的话,打开一个工程会看到很多的波浪线以及当点击函数名时,不会发生跳转;这个时候就需要我们在代码工程中的c_cpp_properties.json
进行配置,以下是小编的配置:
{
"configurations": [
{
"name": "ESP-IDF",
"compilerPath": "${default}",
"cStandard": "c11",
"cppStandard": "c++17",
"compileCommands": "${workspaceFolder}/build/compile_commands.json",
"includePath": [
"${config:idf.espIdfPath}/components/**",
"${config:idf.espIdfPathWin}/components/**",
"${workspaceFolder}/**"
],
"browse": {
"path": [
"${config:idf.espIdfPath}/components",
"${config:idf.espIdfPathWin}/components",
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": false
}
}
],
"version": 4
}
其中,上述提及到的compileCommands
,其对应的值只有编译工程之后,才会生成对应的compile_commands.json
文件;经过上述的配置之后,此时代码补码以及函数跳转就可以正常工作了,以下是小编的操作:
至此,所有开发必备的功能 (包括选择串口号、GUI配置工具、单独编译及下载等功能) 均可以直接在VSCode中完美地运行;至于如何使用JTAG对ESP32-C3下载以及调试,我们在下一篇章中介绍讲解。
继上一章节《1.2 基于VSCode的ESP32-C3开发环境的搭建》之后,小编相信大部分读者,应该可以轻松地搞定ESP32-C3的开发环境搭建,并完成一些基础的开发;接下来,让我们继续趁热打铁,继续讲讲如何利用JTAG接口对ESP32-C3进行下载和调试仿真。
为了更好地阐述并实现对ESP32-C3进行下载以及调试仿真,这里小编以HX-DK-商为蓝本,进行一系列的配置和讲解。
目前,ESP32-C3支持两种JTAG连接方式:
-
内嵌的JTAG调试仿真器
ESP32-C3内嵌了一个USB-JTAG控制器,可用于对ESP32-C3进行下载或者调试仿真,如HX-DK-商中的标号9,只要插上Type-C线,即可实现下载和调试仿真的功能。
-
外置的JTAG调试仿真器
如果想要使用外部的调试仿真器,则只要使用
标准的10-PIN连接线
与HX-DK-商中的标号8相连接,即可实现对ESP32-C3的下载和调试仿真。
ESP32-C3不但内置了USB-JTAG
,还内置了USB-SERIAL
,这给开发者提供了大大的便利,仅需要一根Type-C线即可实现下载和调试仿真,然而它始终属于ESP32-C3中的一个外设,一旦设备进入休眠又或者死机了又或者重启了,那么这个外设的功能也随之 "失效" 了,假设如果没有这些问题的话,那还是很不错的,这也是目前内置USB-SERIAL-JTAG的局限性所在。所以,HX-DK-商仍然保留了外置的USB-SERIAL和调试仿真器。
在使用内置的USB-SERIAL-JTAG功能之前,用户还需要安装相应的驱动,即在任意地方以管理员权限打开Powershell,然后键入以下命令:
Invoke-WebRequest 'https://dl.espressif.com/dl/idf-env/idf-env.exe' -OutFile .\idf-env.exe; .\idf-env.exe driver install --espressif
如果驱动安装成功,当HX-DK-商中的标号9只要插上Type-C线,在设备管理器中就可以发现一个虚拟的串口
和一个USB-JTAG的接口
,如下所示:
此时,用户就可以利用内置的USB-SERIAL-JTAG对ESP32-C3进行下载和调试。
ESP32-C3的固件下载有两种方式:
因为内置有USB-SERIAL,且驱动也已经安装成功,那么用户只需要在VSCode上进行简单地配置,即可下载:
-
在VSCode状态栏左下方,选择内置USB-SERIAL的虚拟串口
-
在ESP-IDF插件设置中,选择串口方式下载固件
-
在VSCode状态栏左下方,选择芯片的型号
当上述的配置设置完成之后,即实现内置的USB-SERIAL对ESP32-C3进行下载,如下所示:
同理,用户只需要在VSCode上进行简单地配置即可:
-
在ESP-IDF插件设置中,选择JTAG方式下载固件
-
在VSCode状态栏左下方,选择芯片的型号
当上述的配置设置完成之后,即实现内置的USB-JTAG对ESP32-C3进行下载,如下所示:
想要使用内置的USB-JTAG对ESP32-C3进行调试仿真,需要如下2个步骤:
-
同样的,在VSCode状态栏左下方,选择芯片的型号,即:
-
配置当前代码工程的
launch.json
文件为下述的内容:
{
"version": "0.2.0",
"configurations": [
{
"type": "espidf",
"name": "Launch-name",
"request": "launch",
"mode": "auto",
"skipVerifyAppBinBeforeDebug": true
}
]
}
当上述的配置设置完成之后,为了保证调试仿真的鲁棒性,请先用上述的JTAG下载
的方法先下载固件 (如果固件没有更新,一次即可;如果有更新,则务必再下载一次),然后再按下F5
键,即可实现内置的USB-JTAG对ESP32-C3进行调试仿真,如下图所示:
如果突然间出现无法调试仿真的情况,先用上述的
JTAG下载
的方法先下载固件,紧接着硬件复位一下ESP32-C3,然后再按下F5
键进行调试仿真。
注意:按照上述的步骤之后,但是仍然出现ModuleNotFoundError: No module named 'win32api'
,此时就应该调用下述的命令查看是否有安装pywin32,命令如下所示:
f:\Tools\Espressif\IDF_Tools\.espressif\python_env\idf5.1_py3.9_env\Scripts\python.exe -m pip list -l
Package Version
--------------------- ---------
bitstring 3.1.9
Brotli 1.0.9
certifi 2021.10.8
cffi 1.15.0
charset-normalizer 2.0.7
click 8.0.3
colorama 0.4.4
construct 2.10.67
contextlib2 21.6.0
cryptography 36.0.1
ecdsa 0.17.0
esp-windows-curses 0.1
Flask 0.12.5
Flask-Compress 1.10.1
Flask-SocketIO 2.9.6
future 0.18.2
gdbgui 0.13.2.0
gevent 1.5.0
greenlet 1.1.2
idf-component-manager 1.0.1
idna 3.3
itsdangerous 2.0.1
Jinja2 3.0.2
kconfiglib 14.1.0
MarkupSafe 2.0.1
pip 22.0.4
pycparser 2.20
pyelftools 0.27
pygdbmi 0.9.0.2
Pygments 2.10.0
pyparsing 3.0.7
pyserial 3.5
python-engineio 3.14.2
python-socketio 4.6.1
pywin32 303
PyYAML 6.0
reedsolo 1.5.4
requests 2.26.0
requests-toolbelt 0.9.1
schema 0.7.4
semantic-version 2.8.5
setuptools 60.5.0
six 1.16.0
tqdm 4.62.3
urllib3 1.26.7
Werkzeug 0.16.1
wheel 0.37.0
windows-curses 2.3.0
如果键入上述的命令之后,没有发现pywin32
,则要安装它,命令如下:
f:\Tools\Espressif\IDF_Tools\.espressif\python_env\idf5.1_py3.9_env\Scripts\python.exe -m pip install pywin32
如上述的内置的USB-SERIAL-JTAG内容所述,内置的USB-SERIAL-JTAG控制器仍然存在一些瑕疵,所以有的应用场景仍然需要外部的调试仿真器来下载以及调试仿真。
同理,外置的ESP-Prog在使用之前,也是需要安装驱动文件的,其方法也跟内置的USB-SERIAL-JTAG的相似,即在任意地方以管理员权限打开Powershell,然后键入以下命令:
Invoke-WebRequest 'https://dl.espressif.com/dl/idf-env/idf-env.exe' -OutFile .\idf-env.exe; .\idf-env.exe driver install --ftdi
如果驱动安装成功,ESP-Prog只要插上USB线,在设备管理器中就可以发现一个虚拟的串口
和一个USB-JTAG的接口
,如下所示:
这个时候,用户就可以利用外置的ESP-Prog对ESP32-C3进行下载和调试。还有一点需要注意的是:当ESP Prog与HX-DK-商的标号8相连接时,请将ESP Prog的JTAG_PWR_SEL
拨到5V,然后HX-DK-商开发板
什么线都不需要接。
由于ESP Prog调试仿真器也具备USB-JTAG和USB-SERIAL的功能,所以其也支持两种方式的下载:
这种方式比较简单,只需要将对应的TX和RX相互连接即可;至于ESP Prog的TX、RX引脚详情,请参考ESP Prog官方的介绍,因为这种方式大同小异,小编就不再细述。
如果使用外置ESP-Prog的JTAG接口对ESP32-C3进行下载,用户还需要对ESP32-C3内部的eFuse进行设置 (注意,该设置是永久的,不可恢复的),即需要使用espefuse.py
对eFuse的JTAG_SEL_ENABLE
位进行烧录,操作的命令如下:
F:/Tools/Espressif/IDF_Tools/.espressif/python_env/idf5.1_py3.9_env/Scripts/python.exe F:\BLE_WIFI\Espressif\SDK\esp-idf-c3\components\esptool_py\esptool\espefuse.py -p COM50 burn_efuse JTAG_SEL_ENABLE 1
上述是小编当前的Python
版本和espefuse.py
路径和COM口
,不同的用户可能对应的路径些许不同。当按照上述的命令配置之后,ESP32-C3在复位时,会根据GPIO10的电平来判断使用内置USB-JTAG还是外置的JTAG调试仿真器:
- GPIO10为低电平时,使用内置的USB-JTAG
- GPIO10为高电平时,使用外置的JTAG调试仿真器
但是!!!目前这个功能截止目前为止还有Bug,只能通过下一版的硬件升级才能解决这个问题;当前的现状就是只要烧录了JTAG_SEL_ENABLE位,ESP32-C3就永远只能支持外置的JTAG调试仿真器了
紧接着,我们就可以进行JTAG烧录了,即:
-
在ESP-IDF插件设置中,选择JTAG方式下载固件
-
在VSCode状态栏左下方,选择芯片的型号
当上述的配置设置完成之后,即实现外置的ESP Prog对ESP32-C3进行下载,如下所示:
同理,使用外置ESP Prog调试仿真器的设置,与使用内置的USB-SERIAL-JTAG是一样的;唯一不同的是:只不过当选择设备类型时,要选择ESP32-C3(ESP-PROG JTAG)
;小编这里也不再过多地描述,下图是使用外置ESP Prog调试仿真器的动图:
至此,如何基于JTAG接口对ESP32-C3进行下载及调试仿真已经讲解完成了。