发 帖  
原厂入驻New

【乐鑫ESP32-C3 RISC-V处理器IoT开发板试用体验】一. 点亮设备

2021-7-28 12:06:33  546 RISC-V
分享
0
` 本帖最后由 efans_96f886 于 2021-8-13 18:51 编辑

0x0. 开箱
我拿到的试用设备是ESP32-C3-DevKitM-1(见下图左边),芯片和板子比右边的ESP32-WROOM-32更小。
上面两款芯片都是蓝牙、WIFI双模的,存储也差不多,不同的是ESP32-C3是RISCV架构(160mHZ),ESP32-WROOM是Xtensa架构(240mHZ)。

0x1. 安装环境(windows)
接下来的开发和调试,无脑跟随文档就行:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html

  • 安装ESP-IDF开发环境
我电脑上的ESP-IDF是2.6版本不支持ESP32-C3,因此需要升级,尝试直接升级旧版本,由于不清楚ESP32-C3需要用哪个github repo版本,我最终还是简单粗暴卸载了旧版本,重装下载安装了ESP32-C3文档中给出的版本(https://dl.espressif.com/dl/esp-idf/?idf=4.4,tool版本2.9,idf版本4.3),windows上下载esp-idf-tools-setup-offline-2.9.exe,直接一路点Next,这里我选择不安装Eclipse(因为Eclipse太难用),最后安装了工具链(.espressif目录)和idf框架代码(ESP-IDF目录):
install.png
最终在开始菜单打开ESP-IDF Powershell或者CMD命令行,启动的时候会自动添加很多环节变量。因此不需要再添加环境变量(不用运行export.bat或者export.ps1)。
  • 点亮设备
用usb将设备连接电脑,win+x打开设备管理器,可以看到设备的串口。
image2.png

用不同的串口工具连接看看效果:
正点原子的XCOM,不支持shell color有乱码,不支持二维码:
1-xcom.JPG
idf自带的串口工具:idf.py -p COM11 monitor,不支持二维码。
2-idf.JPG
PuTTY:效果比较好。

3-putty.JPG

不过目前的应用不支持串口交互,看不出来哪个工具最好用。因此后面刷上需要通过串口读取数据的应用来进一步评测看下哪一种shell更合适。
如果不介意这点乱码,应该还是XCOM最强大。

0x2. 编译和刷机
接下来我们用自己的应用覆盖掉默认固件。
  • 尝试编译运行例程
这里我直接复制例程到项目目录:




  1. # 开始菜单打开ESP32 Powershell
  2. cd  G:IoTesp32-c3
  3. xcopy /e /i D:        oolsIoTToolsESP-IDFexamplesget-startedhello_world hello_world
  4. xcopy /e /i D:        oolsIoTToolsESP-IDFexamplesget-startedlink blink

复制代码

编译项目(idf.py build):
windows下大约需要1min就全部build完Hello World。




  1. // 设置开发板
  2. PS G:IoTesp32-c3hello_world> idf.py set-target esp32c3
  3. // 编译
  4. PS G:IoTesp32-c3hello_world> idf.py build
  5. Executing action: all (aliases: build)
  6. Running ninja in directory g:iotesp32-c3hello_worlduild
  7. Executing "ninja all"...
  8. [2/961] Generating ../../partition_table/partition-table.bin
  9. Partition table binary generated. Contents:
  10. *******************************************************************************
  11. # ESP-IDF Partition Table
  12. # Name, Type, SubType, Offset, Size, Flags
  13. nvs,data,nvs,0x9000,24K,
  14. phy_init,data,phy,0xf000,4K,
  15. factory,app,factory,0x10000,1M,
  16. *******************************************************************************
  17. [92/961] Building C object esp-idf/wpa_supplicant/CMakeFiles/__idf_wpa_supplicant.dir/src/crypto/aes-ctr.c.obj

复制代码

刷机运行项目:




  1. // 刷机:如果USB只接一个设备就不需要指定串口 (idf.py -p COM11 flash)
  2. PS G:IoTesp32-c3hello_world> idf.py flash
  3. // 连接串口看log
  4. PS G:IoTesp32-c3hello_world> idf.py monitor

复制代码

image3.png


看hello wold代码,每隔10s重启一次。在不涉及到汇编的时候,看起来和之前的Xtensa架构的ESP32-S2设备开发没啥区别。这个demo不停的重启,有点伤设备,还是立刻刷成别的固件:)




  1. #include <stdio.h>
  2. #include "sdkconfig.h"
  3. #include "freertos/FreeRTOS.h"
  4. #include "freertos/task.h"
  5. #include "esp_system.h"
  6. #include "esp_spi_flash.h"

  7. void app_main(void)
  8. {
  9.     printf("Hello world!
  10. ");

  11.     /* Print chip information */
  12.     esp_chip_info_t chip_info;
  13.     esp_chip_info(&chip_info);
  14.     printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
  15.             CONFIG_IDF_TARGET,
  16.             chip_info.cores,
  17.             (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
  18.             (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

  19.     printf("silicon revision %d, ", chip_info.revision);

  20.     printf("%dMB %s flash
  21. ", spi_flash_get_chip_size() / (1024 * 1024),
  22.             (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");

  23.     printf("Minimum free heap size: %d bytes
  24. ", esp_get_minimum_free_heap_size());

  25.     for (int i = 10; i >= 0; i--) {
  26.         printf("Restarting in %d seconds...
  27. ", i);
  28.         vTaskDelay(1000 / portTICK_PERIOD_MS);
  29.     }
  30.     printf("Restarting now.
  31. ");
  32.     fflush(stdout);
  33.     esp_restart();
  34. }

复制代码


0x3. 点亮LED
选择例子:examplesperipherals
mtled_strip
首先尝试点亮板子自带的LED。




  1. # 编译刷机
  2. idf.py set-target esp32c3
  3. idf.py build flash monitor

复制代码


发现灯不闪。需要修改GPIO配置:





  1. idf.py menuconfig
  2. # 选择 Example Configuration
  3. # 修改以下配置。也可直接修改sdkconfig
  4. CONFIG_EXAMPLE_RMT_TX_GPIO=8
  5. CONFIG_EXAMPLE_STRIP_LED_NUMBER=1

复制代码


再次刷机发现灯疯狂的闪,闪瞎我狗眼。因此需要修改频率





  1. // led_strip_main.c Line:20
  2. #define EXAMPLE_CHASE_SPEED_MS (100) // <---- 由10改成100,0.1s闪一次
  3. // led_strip_main.c Line:110
  4. // vTaskDelay(pdMS_TO_TICKS(EXAMPLE_CHASE_SPEED_MS));

复制代码



接下来换外接LED继续点灯:
使用例程:examplesget-startedlink
直接编译刷机。默认配置BLINK_GPIO 是GPIO5,因此接到数字5那里(GPIO5),另一根接到GND(接地)那里,就能什么都不改自己闪:

5.JPG
















` 4.JPG 0-esp32-c2.JPG

本帖被以下淘专辑推荐:

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表