Esp32-c3 LuatOS编译教程
-
Esp32-C3 是乐鑫公司于2021年3月正式量产的一颗物联网主控芯片。搭载 RISC-V 32 位单核处理器,时钟频率高达 160 MHz。具有 22 个可编程 GPIO 管脚、内置 400 KB SRAM,可以内置或外挂Flash存储。该芯片集成了2.4GHz Wifi,Bluetooth 5 硬件协议栈,并支持USB、I2C、SPI、RTC、I2S、UART、CAN(乐鑫改了个名字叫TWAI)、红外发射(RMT)多种外设接口。 支持各种常用加密算法(SHA、RSA、AES、HMAC)、还内置了硬件RTC、WatchDog。目前市场售价含4M Flash在8元左右,不含Flash的在5元左右,这个价位真可谓是霸气十足,如果没有特别牛的金主半路杀出,这颗芯片妥妥的会在下一轮物联网芯片竞赛中得第一名。
值得一提的是这,这款芯片还是基于Risc-V的指令集,并内置了JTAG控制器! 下面是硬件资源的一个基本汇总
- GPIO X 22
- SPI X 3
- UART X 2
- I2C X 1
- I2S X 1
- PWM X 6
- ADC X 6 (12bit)
作为这么牛的一款物联网芯片再配合LuatOS的极爽开发体验,真是舒服到家,下面我就简要的介绍下使用LuatOS驱动Esp32的使用方法。注意,本文非原创,而是基于晨旭大神的视频教程,原始视频教程地址:
https://www.bilibili.com/video/BV1D3411p7MK?p=4下面我们正式开始:
Esp32-c3的LuatOS固件是由著名的00后大佬梦程MI担任主程,基于Wendal大佬的LuatOS-MCU主库完成的。如果您想学习LuatOS-MCU编程,请访问wiki.luatos.com,提供有LuatOS详细的使用教程。梦程大佬也为大家准备好了基础固件下载,可以加群667220396获取。由于篇幅限制,我们本文着重介绍LuatOS底层固件编译的方法,对于LuatOS的应用就不再介绍了,请读者从上述网站自行学习。
1)准备工作
LuatOS-esp32-c3 基于乐鑫的官方idf开发环境编写,因此您需要首先安装最新版的乐鑫idf安装包,推荐使用离线安装包。目前梦程大佬使用的是ESP-IDF V4.4这个版本。下载地址为:
https://dl.espressif.com/dl/esp-idf (需要翻墙)
安装好后,在开始菜单里会出现ESP-IDF 4.4 PowerShell的运行环境,这是一个经过配置过的文本交互终端,我们编译代码的过程就在这里完成。
2) 从gitee获取LuatOS for Esp32-c3源码
地址为:https://gitee.com/dreamcmi/LuatOS-ESP32 (需要首先安装git)
3) 编译
3.1 设置目标芯片
运行开始菜单里的ESP-IDF 4.4 PowerShell,进入命令行状态,进入源码目录比如我的源码用git下载到了
C:\gitee\LuatOS-ESP32,这个目录。输入CD C:\gitee\LuatOS-ESP32 回车
idf.py set-target esp32c3 回车3.2 开始编译 输入
编译过程比较漫长,晨旭大佬的机器特别快的例外,我编译一次得花五六分钟
idf.py build 回车
看到出现 Project build complete. To flash, run this command: 加一堆文字,就说明编译成功了
3.3 打包固件
这个固件生成的是bin格式,还需要打包成soc文件才能支持lua脚本,这部分是用python脚本实现的,在tools目录下esp32v3.py就是把bin转换成soc文件的工具,soc文件也就是最终要烧写的固件文件
cd .\tools 回车,切换到tools目录
python .\esp32v3.py -t esp32c3 -p 回车,开始打包
打包成功应该显示两行文字
[WARNING]: user build
首次运行打包脚本需要先安装python依赖,方法如下
pip install -r .\requirements.txt 回车
然后在 当前目录就可以找到编译后的soc文件了,一般前缀是LuatOS-SoC_ESP32C3,后面加一串数字,比如:
LuatOS-SoC_ESP32C3_85ee641_20220426173707.soc
重复编译一遍梦程大佬的固件是没有意义的,这样做的价值在于我们可以按自己的意愿对固件进行配置,方法:
用资源管理器进入 components\luat\include目录,比如
C:\gitee\LuatOS-ESP32\components\luat\include
找到文件 luat_conf_bsp.h,并双击打开
搜索 #define USE_U8G2_OPPOSANSM12_CHINESE
去掉这行语句前面的双斜杠 "//",保存并重新编译,您的c3固件就可以支持中文了。文末附上我自己编译的esp32-c3 固件,已经支持了中文字库和ws2812b灯光字库,供您方便使用。
文末突然想起来,乐鑫还自己搞了一个2.4G的私有通讯协议叫espnow,可以支持点对点,和星星结构的通讯,能同时连接6个节点实现快速通讯,这个听起来也很好玩。
感谢您的阅读。