ESP32-C3 Vscode+ESP-IDF开发环境搭建 保姆级教程
1.背景
最近esp32的芯片很火,因为芯片自带了WIFI和BLE功能,是物联网项目开发的首选芯片,所以,我也想搞个简单的esp32芯片试试看。于是,我设计了一个简单的板子。如下
这块板子很简单,主要的电路来自于乐鑫的官方文档。
https://www.espressif.com.cn/sites/default/files/documentation/esp32-c3-wroom-02_datasheet_cn.pdf
设计完了之后,就找嘉立创免费做了板子,然后,找同事焊出来了。能不能跑,不知道,先上电,插上电脑,看看吧。
2. 板子焊完之后的现象和问题
板子焊完了之后,我就将我的桌面电源,调成12V,1.5A,接到板子上的电源插口上去了,结果,发现电流很大,但是板子上的指示电源的LED却没有亮。板子差点烧掉了,幸亏我将电流设成了1.5A。经过检查之后,发现同事焊板子时,将所有的二极管都焊反了。上电之后,直通了,还好1.5A的电流不算很大,没有将板子烧坏。然后我请同事将板子上焊反的器件都重新焊了一遍。然后上电之后,电源正常了,LED亮了。
但是,将USB接口插上电脑之后,没有看到任何反应,没有出现要装驱动,也没有在设备管理器里出现串口或者任何的USB口,看来完蛋了,这块板子要变砖了。这块板子用的esp32模块是esp32-c3-wroom-02-h4, 刚焊上去时,里面是空的啥也没有,我看到这模块本身带USB口,所以,我以为USB口插上之后,可以识别出来,可以进行程序烧写了,结果啥也没有。
我也不知道是我的电路设计错了,还是焊错了,还是芯片或者器件有问题,于是,我在网上问,网上有人说,他的模块一接上电脑就能识别出USB口,就要求他下载程序。意思我的板子有问题,在乐鑫的官方论坛问,乐鑫的回答也是我的板子可能有问题。我也不知道咋搞。
后来,我忽然想到,我的板子上不是有串口引出到排针了吗?那我用USB转TTL的转接模块不是可以通过串口给这个esp32模块烧写程序吗?于是,我就试了一下,我找了个乐鑫的flash download tool, 这个工具可以接串口。我用USB转串口后,用这个工具烧了一个空程序,居然显示程序烧录成功,还显示了一些芯片的信息,如下:
我想,既然能显示芯片信息,那么串口的通信是OK的,我又用这工具,读了一下chipinfodump.
更是读到了芯片的信息,所以,我更相信,电路是没有问题的。那么写个简单的程序,试试看吧。
3. Vscode+ESP-IDF开发环境的搭建
要写程序,自然要搭建开发环境。我是用vscode的,本来我想用platformIO, 但是一装插件,就装上了ESP-IDF的插件。我啥也没改,就按照esp-idf的缺省安装的。装这个插件比较花时间,半个多小时吧。安装的过程,很直接,就不说了, 总之,一路next就行了。
装好之后,怎么写程序犯难了。乐鑫的这个开发工具,搞得很复杂,让人无从下手。
没办法,只能从例程的blink下手了。
先就建立一个空文件夹,然后,从例程里的blink建立一个新工程,路径就选到这个新建的空文件夹。然后,下面的工具栏里按照下面这样选择
然后,点扳手,就能编译了,编译出来这样
但是,第一次编译的时候,要编译900多个文件,把我的电脑都编译得呼呼直响。编译了好长时间,就编译成功了。
点闪电,就能下载了。居然真的下载成功了。下载的时候,要将IO9接地。我的板子上是设计的跳线帽。所以,我插上跳线帽就行了。下载完成后,就拿掉跳线帽,按reset就可以执行了。
但是,烧到我的板子上没用,因为,例程里用的是LED灯带,而且是用的IO8,我的板子是自己设计的,不是乐鑫的开发板,IO口对不上。
乐鑫这里搞了一个sdkconfig,又让人觉得很烦,而且,例程里搞了一堆sdkconfig.defaults.xxx, 完全不知道咋搞,让人头大。不知道修改哪里好。
我将sdkconfig.defaults.esp32c3改成这样:
编译了,还是没用。
后来,我发现还是要改sdkconfig这个文件,改成这样:
这次发现编译之后,可以控制IO0了。
4. 编译结果的检验
我将编译的程序,下载进开发板后,用示波器,看了一下IO0管脚的波形,因为我并没有接真的LED,只能看看波形了。波形是对的,如下:
这是我的板子,接着USB转串口的。
这是波形,好像是1s钟翻转。
这是串口monitor看到的结果。
5.到这里已经就OK了,但是, 我想说一下,在vscode的terminal里配置编译环境的问题。因为,乐鑫的开发文档里都是idf.py build, idf.py menuconfig, idf.py setchips, 什么的。看他们的开发文档完全不知道在说啥,我觉得这是乐鑫的问题。
所以,这里我就说一下怎么在vscode的terminal里来配置命令行环境。
第一步,在环境变量里,路径增加idf-python的路径
第二步,要进到你的esp-idf的安装目录,执行 install.bat,我的结果是这样的
第三步,执行export.bat
看到这个就说明可以编译了。
但是,这时的编译是在cmd里面的,还不是在vscode的terminal. 那么,下面要把它搞到vscode的terminal里面。
第四步,将cmd搞到vscode的terminal里面
那么,这时要在vscode里,点左下边的settings, 也就是[Ctrl+,], 然后在里面搜索terminal, 然后点编辑settings.json, 找到"terminal.integrated.profiles.windows" , 在这里面添加如下文字即可
添加完了之后,将vscode关掉,再重新打开。
第五步,结果检验
重新打开vscode之后,点terminal,这时出来的是powershell的,然后点右边的下拉箭头,选command prompt, 就出现cmd的窗口了。 因为刚刚的配置,出现cmd窗口是这样的。
看到没有?这就是export.bat执行后的内容。就是每次点command prompt就会自动执行export.bat帮你把命令行的环境设置好。并且回到你的项目目录。
那么,在这里输入 idf.py build 看看。
看到没有?命令行编译成功。可以下载了。
至此,vscode的terminal里,用idf的命令行也能编译了。这样看乐鑫的开发文档就不会有违和感了。
6. 好了,大功告成,亲个嘴儿
(注:乐鑫的这个vscode的esp-idf开发环境感觉很不友好,我是花了2天时间,到处搜索,尝试,才搞通的。我觉得这个不友好会劝退很多开发爱好者,乐鑫应该好好改进一下,或者出一个视频,教人怎么配置)