ESP32-C3采用的是RISCV架构的芯片,目前又专注RISCV研究,所以特此来研究一下这个芯片的使用情况。
该芯片的主要特性如下:
外设支持方面
外设 | 备注 |
---|---|
GPIO | x22 |
SPI | x3 |
UART | x2 |
I2C | x1 |
I2S | x1 |
红外收发器 | 2 |
LED PWM | 6 |
USB串口 | 1 |
看门狗 | 3 |
从芯片的设计的定位上来看,主要定位在智能家具或者小型的物联网设备端等等。
下面来体验一下开发流程。
要想使用该芯片,开发环境搭建很关键,这样才能玩的更加的好。本文主要是基于Ubuntu20.04进行环境搭建,当然也支持Windows等平台的环境搭建。
注意:当前ESP-IDF还没有集成在ESP-IDF正式发布的版本(v4.2)中。需要使用v4.3 beta版本。
下载的地址如下:
https://dl.espressif.com/dl/esp-idf/releases/esp-idf-v4.3-beta3.zip
下载完成解压即可。
注意编译时需要安装以下的软件包
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
进入esp-idf-v4.3-beta3
中,执行./install.sh
。
编译完成后,出现上述图片结果即可。
输入
. ./export.sh
导入环境,这一步会将ESP-IDF需要的PATH添加到环境变量中,如果希望下次开机,这些环境变量还存在,可以添加到系统环境变量中~/.bashrc
alias get_idf='. /home/bigmagic/workspace/esp-idf-v4.3-beta3/export.sh'
然后更新一下源即可
source ~/.bashrc
每次开启新的窗口,只需要输入get_idf
即可自动进行环境路径的添加。
ESP-IDF环境搭建完成后,即可进行源代码的编译与下载。
首先创建一个自己的工作目录。
注意:每次新开一个终端,输入
get_idf
更新环境。
首先简单的编译hello_world
程序。
依次输入
cp -r $IDF_PATH/examples/get-started/hello_world .
然后开始进行配置
cd hello_world
idf.py set-target esp32c3
idf.py menuconfig
其中menuconfig是配置相关的设置,这里可以配置Wi-Fi的SSID,等等,由于helloworld没有许多需要配置的,所以不用管理。
直接输入
idf.py build
开始编译。
程序烧录可以通过如下的命令进行
idf.py -p PORT [-b BAUD] flash
其中[-b BAUD]
可选的设置波特率的地方。
需要注意的是,在Ubuntu下可能出现串口硬件没有权限访问的错误。
可以修改串口权限
sudo chmod 777 /dev/ttyUSB0
由于我插入设备识别的是/dev/ttyUSB0
,所以改变该权限即可。
idf.py -p /dev/ttyUSB0 flash
正常情况下,会出现如下的信息。
最后输入
idf.py -p /dev/ttyUSB0 monitor
可以看到串口的输入信息。
退出监听模式输入Ctrl + ]
。
前面已经完成相关的基础环境搭建,接着可以根据上面的环境,分析一下外设的使编程。
在ESP32-C3-DevKitC-02的原理图可以在下面的网站中找到。
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitc-02.html
其RGB LED的原理图如下
当前采用的是SK68XXMINI-HS,该LED的驱动主要是依靠PWM的驱动进行。
其相关的原理说明如下
https://www.rose-lighting.com/wp-content/uploads/sites/53/2020/05/SK68XX-MINI-HS-REV.04-EN23535RGB-thick.pdf
按照不同的PWM的调节,可以产生不同颜色的光。
在ESP-IDF中,已经存在demo。
cp -r $IDF_PATH/examples/peripherals/rmt .
然后进入led_strip
的目录。
依次输入
idf.py set-target esp32c3
然后选择配置
idf.py menuconfig
选择相关的配置
将硬件引脚改为8。
配置完成,输入S
保存,输入Q
退出,接着进行编译。
idf.py build
下载程序
idf.py -p /dev/ttyUSB0 flash
下载完成后,可以看到LED正常的闪动。
使用ESP32-C3的比较重要的功能就是使用其WiFi联网功能。
第一步:获取代码
cp -r $IDF_PATH/examples/wifi .
cd wifi/getting_started/station
第二步:选择配置
idf.py set-target esp32c3
第三步:设置WiFi的SSID与密码
idf.py menuconfi
设置SSID与密码
第四步:开始编译
idf.py build
第五步:下载程序
idf.py -p /dev/ttyUSB0 flash
第六步:测试程序
idf.py -p /dev/ttyUSB0 monitor
此时测试的是通过连接自己的路由器,然后通过局域网内的ip去ping该station。
可以看到可以正常获取到IP地址,并且可以ping通模块,表示实验成功。
本文通过环境搭建、外设编程、WiFi程序的演示,大致的描述了ESP32-C3的编程方式。总的说起来,采用ESP-IDF的集成开发环境,很大程度上可以减少环境搭建的烦恼,可以非常顺利的做上层业务的开发。
特别是采用API的编程方式,让编程的模型更加专注于业务上的设计,比如可以做一些网络应用,智能家居,远程监控等等。体验下来这个RISCV的芯片和其他的ESP32的使用上并无十分明显的区别。后续会通过ESP32-C3上做一些div小项目,只有在更多的测试数据上,才能体现的出优劣。