发新帖本帖赏金 20.00元(功能说明)我要提问
返回列表
打印
[Arduino资料]

如何在Arduino下实现合宙ESP32C3的开发和程序上传

[复制链接]
16646|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 suncat0504 于 2022-12-10 11:24 编辑

#申请原创# @21小跑堂   
最近入手了两片合宙出品的ESP32C3开发板。到手后以为可以向ESP8266那样很容易实现Arduino下的开发和下载,结果上传失败。于是到他家的官网翻阅相关资料。发现他家的这个开发板默认提供的是Luat下的开发。自己对Luat开发不懂,但为了测试板子是否正常,只好硬着头皮用Luat测试。
测试之前,要安装这个开发板的串口驱动程序。它使用的是CH343芯片作为USB转串口的驱动,可以到https://www.wch.cn/downloads/CH343SER_EXE.html这个网站下载驱动。安装过程不多说了。然后按照网页https://wiki.luatos.com/chips/esp32c3/board.html中提供的文档,下载了Luatools_v2.exe。把开发板接入电脑,启动这个程序后,有可能提示这个软件有病毒,我选择无视。进入程序窗口,会提示软件升级,升级后再启动,窗口如下:

之后就是按照官方网页中教程的提示操作,下载固件,执行“项目管理测试”,建立新工程,打开示例文件。

固件以及示例文件都可以在合宙官方提供的网页中下载。固件文件的扩展名是soc。
我选择的示例文件是gpio下的main.lua,然后执行“下载脚本”,正常情况下,程序会被写入开发板。
到这一步证明开发板没问题,可用。我看看Luat的源代码,因为没学过,也只能拿看个大概。个人还是倾向于在Arduino下开发。
实现Arduino开发的过程中走过一些弯路,不多说,只想和大家分享成功的做法哈。为了能实现在Arduino下开发、上传程序,需要重新安装ESP32的开发包,因为默认的开发包中没有ESP32C3的开发版选项。下面的操作,默认是已经在安装好ArduinoIDE的场合下的操作。你可以选择最新版的2.0.3,这个相比以往1.x的版本,操作上更方便一些。
1、先删除之前默认的ESP32开发包,这个开发包一般在C:\Users\HP\AppData\Local\Arduino15\packages目录下,删除esp32这个文件夹。
然后下载新的esp32开发包:https://arduino.me/a/esp32,执行上传下来的安装文件esp32_package_2.0.5_arduinocn.exe,在C:\Users\HP\AppData\Local\Arduino15\packages目录下会重新建立一个esp32文件夹。
2、打开ArduinoIDE,设置开发板的管理器网址,在首选项窗口中的加入以下内容 "https://arduino.me/packages/esp32.json"
3、选择端口和开发板
端口要选择开发板所在的端口。我选设置开发板再选择端口的时候,会出现找不到端口的情况。所以最好先选择端口,再选开发板。开发板一定要选择ESP32C3的那个

4、设置上传参数
   一定要修改Flash Mode参数为“DIO”,否则上传程序会失败。

5、打开示例文件Blink

可以根据你的需要进行简单修改,我改成以下交替闪烁的模式了。
constint ledPin1 = 12;    // the number of the LED pin

constint ledPin2 = 13;    // the number of the LED pin

// the setup function runs once when you press reset or power the board

voidsetup(){

  // initialize digital pin LED_BUILTIN as an output.

  pinMode(ledPin1, OUTPUT);

  pinMode(ledPin2, OUTPUT);

}

// the loop function runs over and over again forever

voidloop(){

  digitalWrite(ledPin1, HIGH);  // turn the LED on (HIGH is the voltage level)

  digitalWrite(ledPin2, LOW);  // turn the LED on (HIGH is the voltage level)

  delay(300);                      // wait for a second

  digitalWrite(ledPin1, LOW);   // turn the LED off by making the voltage LOW

  digitalWrite(ledPin2, HIGH);   // turn the LED off by making the voltage LOW

  delay(300);                      // wait for a second

}

之后编译上传,就可以看到结果了。
总体来说,这个开发板不像ESP8266那么容易操作,但并非不能解决。实际上这个板子的上传速度非常快,超出了我的预期。程序上传速度可以设置为921600,几乎不用等待就可完成上传。
其他注意事项:ESP32C3的以下引脚具有特殊功能,通常不建议使用,如果您对这些功能不了解,请不要操作这些引脚:
• IO3/HOLD# = GPIO12/SPIHD
• IO2/WP# = GPIO13/SPIWP
• CS# = GPIO14/SPICS0
• CLK = GPIO15/SPICLK
• IO0/DI = GPIO16/SPID
• IO1/DO = GPIO17/SPIQ

详细管脚描述

编号
名称
复位后默认功能
复用功能
电源域
上下拉能力
32
GND
接地
      
31
5V
5V电源接口,与USB的VBUS相连
      
30
BOOT
GPIO09,输入
BOOTMODE
VDD3P3_CPU
UP/DOWN
29
IO08
GPIO08,输入,输出,高阻
  VDD3P3_CPU
UP/DOWN
28
IO04
GPIO04,输入,输出,高阻
I2C_SDA/ADC_4
VDD3P3_RTC
UP/DOWN
27
IO05
GPIO05,输入,输出,高阻
I2C_SCL/ADC_5
VDD3P3_RTC
UP/DOWN
26
3.3V
芯片电源,3.3V
      
25
GND
接地
      
24
PB_11
GPIO11,输入,输出,高阻
VDD_SPI
VDD3P3_CPU
UP/DOWN
23
IO07
GPIO07,输入,输出,高阻
SPI2_CS
VDD3P3_CPU
UP/DOWN
22
IO06
GPIO06,输入,输出,高阻
  VDD3P3_CPU
UP/DOWN
21
IO10
GPIO10,输入,输出,高阻
SPI2_MISO
VDD3P3_CPU
UP/DOWN
20
IO03
GPIO03,输入,输出,高阻
SPI2_MOSI/ADC_3
VDD3P3_RTC
UP/DOWN
19
IO02
GPIO02,输入,输出,高阻
SPI2_CK/ADC_2
VDD3P3_CPU
UP/DOWN
18
3.3V
芯片电源,3.3V
      
17
GND
接地
      
16
5V
5V电源接口,与USB的VBUS相连
      
15
PWB
芯片3.3V供电控制,高电平有效,不用可悬空
      
14
GND
接地
      
13
3.3V
芯片电源,3.3V
      
12
RESET
芯片复位
  VDD3P3_RTC
  
11
NC
        
10
IO13
GPIO13,输入,输出,高阻
  VDD3P3_CPU
UP/DOWN
09
U0_RX
GPIO20,输入,输出,高阻
UART0_RX
VDD3P3_CPU
UP/DOWN
08
U0_TX
GPIO21,输入,输出,高阻
UART0_TX
VDD3P3_CPU
UP/DOWN
07
GND
接地
      
06
IO19
GPIO19,输入,输出,高阻
USB_D+
VDD3P3_CPU
UP/DOWN
05
IO18
GPIO18,输入,输出,高阻
USB_D-
VDD3P3_CPU
UP/DOWN
04
IO12
GPIO12,输入,输出,高阻
SPIHD
VDD3P3_CPU
UP/DOWN
03
IO01
GPIO1,输入,输出,高阻
UART1_RX/ADC_1
VDD3P3_CPU
UP/DOWN
02
IO00
GPIO0,输入,输出,高阻
UART1_TX/ADC_0
VDD3P3_CPU
UP/DOWN
01
GND
接地
      
合宙CORE ESP32核心板板载2颗LED,开发者可参考下表进行对应管脚的控制。

LED编号
对应GPIO
管脚功能
描述
D4
IO12
GPIO12配置
高电平有效
D5
IO13
GPIO13配置
高电平有效
合宙CORE ESP32核心板板载两颗按键,其中BOOT键可实现BOOT下载功能,RST键可实现复位功能。

按键编号
管脚功能
描述
BOOT/GPIO9
按键按下时,芯片进入下载模式
低电平有效
RST
按键按下时,芯片复位
低电平有效
外置SPI FLASH控制



flash管脚标号
对应GPIO
管脚功能
上下拉能力
SPICS0
-
GPIO14配置,FLASH_CS,片选
UP/DOWN
SPIQ
-
GPIO17配置,FLASH_D1,数据脚1
UP/DOWN
SPID
-
GPIO16配置,FLASH_D0,数据脚0
UP/DOWN
SPICLK
-
GPIO15配置,FLASH_CK,时钟
UP/DOWN
注:CORE ESP32核心板搭载ESP32-C3是不带内置FLASH版本,默认贴装外置SPI FLASH,如遇到不贴装外置SPI FLASH的核心,需要注意主芯片的具体型号。

任意GPIO均可作为PWM脚, 编号与GPIO一致, 但同时只能开启4路PWM,务必注意

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 20.00 元 2022-12-12
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
21小跑堂 2022-12-12 16:48 回复TA
ESP32使用Arduino最快完成实验环境搭建,简单易用好用。 

相关帖子

沙发
suncat0504|  楼主 | 2022-12-12 16:53 | 只看该作者
谢谢小跑堂!

使用特权

评论回复
板凳
4agr| | 2022-12-14 20:06 | 只看该作者
不错,有用的分享

使用特权

评论回复
地板
xu@xupt| | 2022-12-19 10:36 | 只看该作者
学习啦,感谢分享

使用特权

评论回复
5
gaochy1126| | 2022-12-29 20:08 | 只看该作者
合宙ESP32C3能不能实现OAT升级合宙ESP32C3的固件呢?                           

使用特权

评论回复
6
gaochy1126| | 2022-12-29 20:09 | 只看该作者
现在合宙也开始开发自己的ESP32的产品了吗?                           

使用特权

评论回复
7
gaochy1126| | 2023-2-18 15:01 | 只看该作者
这个合宙ESP32C3是4G模块带有的驱动的库吗?                     

使用特权

评论回复
8
gaochy1126| | 2023-2-18 15:01 | 只看该作者
使用tinyGSM是否能够驱动合宙ESP32C3?这个有arduino的lib可以使用吗?

使用特权

评论回复
评论
suncat0504 2023-2-19 13:31 回复TA
这个你上网找找,也许能找到 
9
xzy568| | 2023-4-21 17:15 | 只看该作者
需要烧录arduino的固件进去吗?

使用特权

评论回复
10
suncat0504|  楼主 | 2023-4-21 18:34 | 只看该作者
xzy568 发表于 2023-4-21 17:15
需要烧录arduino的固件进去吗?

不需要,按照我写的操作顺序就可以

使用特权

评论回复
发新帖 本帖赏金 20.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:大连伊飞特信息技术有限公司软件工程师
简介:本人于1993年毕业于大连理工大学。毕业后从事单片机开发工作5年,之后转入软件开发工作至今。

130

主题

3870

帖子

5

粉丝