天天看點

[Arduino資料]如何在Arduino下實作合宙ESP32C3的開發和程式上傳

最近入手了兩片合宙出品的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。把開發闆接入電腦,啟動這個程式後,有可能提示這個軟體有病毒,我選擇無視。進入程式視窗,會提示軟體更新,更新後再啟動,視窗如下:

[Arduino資料]如何在Arduino下實作合宙ESP32C3的開發和程式上傳

之後就是按照官方網頁中教程的提示操作,下載下傳固件,執行“項目管理測試”,建立新工程,打開示例檔案。

[Arduino資料]如何在Arduino下實作合宙ESP32C3的開發和程式上傳

固件以及示例檔案都可以在合宙官方提供的網頁中下載下傳。固件檔案的擴充名是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的那個

[Arduino資料]如何在Arduino下實作合宙ESP32C3的開發和程式上傳

4、設定上傳參數

   一定要修改Flash Mode參數為“DIO”,否則上傳程式會失敗。

[Arduino資料]如何在Arduino下實作合宙ESP32C3的開發和程式上傳

5、打開示例檔案Blink

[Arduino資料]如何在Arduino下實作合宙ESP32C3的開發和程式上傳

可以根據你的需要進行簡單修改,我改成以下交替閃爍的模式了。

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

[Arduino資料]如何在Arduino下實作合宙ESP32C3的開發和程式上傳
編号 名稱 複位後預設功能 複用功能 電源域 上下拉能力
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控制

[Arduino資料]如何在Arduino下實作合宙ESP32C3的開發和程式上傳
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的核心,需要注意主晶片的具體型号。

---------------------

作者:suncat0504

連結:https://bbs.21ic.com/icview-3271856-1-1.html

來源:21ic.com

此文章已獲得原創/原創獎标簽,著作權歸21ic所有,任何人未經允許禁止轉載。

繼續閱讀