forked from espressif/arduino-esp32
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adds HW Serial CDC as IDF component example (espressif#10262)
* feat(hw_cdc): creates documentation for the example Adds a README file that exaplains the example. * feat(hw_cdc): create cmake config file Adds necessary CMakeLists.txt file to the project with the HW CDC defines that will enable it. * feat(hw_cdc): create sdkconfig.defaults Adds necessary and minimum sdkconfig settings in order to make Arduino run as IDF Compoenent. * feat(hw_cdc): create cmake config file Create the Arduino Sketch source code CMakeLists.txt file that will include all source code files and header files in the proejct. * feat(hw_cdc): create main.cpp Adds the minimum Arduino Sketch that will print "Hello World!" in the HW Serial USB CDC port. * feat(hw_cdc): create idf_component.yml Adds necessary ESP32 Registry information in order to make ESP32 Arduino to be automatically included in the project as an IDF component. * feat(hw_cdc): update main.cpp adds code to wait for the user to open the Serial Monitor * feat(hw_cdc): formating text code Applying Code style and formating. * feat(hw_cdc): adds the example to idf_component.yml Adds the example to the list of example in the ESP32 Registry. * ci(pre-commit): Apply automatic fixes * fix(chw_cdc): typo fix Fixed Typo in the documentation. * fix(hw_cdc): fixed a commentary typo Fixed commantary typo --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
- Loading branch information
1 parent
7a4587b
commit e70f4d3
Showing
7 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# For more information about build system see | ||
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html | ||
# The following five lines of boilerplate have to be in your project's | ||
# CMakeLists in this exact order for cmake to work correctly | ||
cmake_minimum_required(VERSION 3.16) | ||
include($ENV{IDF_PATH}/tools/cmake/project.cmake) | ||
|
||
# Adds necessary definitions for compiling it using Serial symbol attached to the HW USB CDC port | ||
list(APPEND compile_definitions "ARDUINO_USB_CDC_ON_BOOT=1") | ||
list(APPEND compile_definitions "ARDUINO_USB_MODE=1") | ||
|
||
project(hw_cdc_hello_world) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
| Supported Targets | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-S3 | | ||
| ----------------- | -------- | -------- | -------- | -------- | | ||
|
||
# _HW Serial USB CDC example_ | ||
|
||
This is the simplest buildable example made to be used as a template for new projects running Arduino-ESP32 as an ESP-IDF component that will redefine the `Serial` interface to be attached to the USB CDC Hardware Serial port.\ | ||
See [arduino-esp32](https://components.espressif.com/components/espressif/arduino-esp32) in ESP Registry. | ||
|
||
## How to use example | ||
|
||
After cloning this repository, go to the `hw_cdc_hello_world` folder and select the target by executing\ | ||
`idf.py set-target <SoC_target>`.\ | ||
`<SoC_target>` can be one of the installed IDF version supported targets. | ||
|
||
It is possible to just clone this folder be executing\ | ||
`idf.py create-project-from-example "espressif/arduino-esp32^3.0.5:hw_cdc_hello_world"` | ||
|
||
For IDF 5.1.x and forward, the list of targets that support Hardware USB CDC are, at least: esp32s3, esp32c3, esp32c6 and esp32h2.\ | ||
Then just run command: `idf.py build` or `idf.py -p USB_PORT flash monitor`. | ||
|
||
Usually, it is necessary to make the ESP32 SoC to enter in `Download Mode` before uploading the firmware.\ | ||
After that, just press `RESET/EN` to start the new firmware. | ||
|
||
## Example folder contents | ||
|
||
The project **hw_serial_example** contains one source file in C++ language [main.cpp](main/main.cpp). The file is located in folder [main](main). | ||
|
||
ESP-IDF projects are built using CMake. The project building configuration is contained in `CMakeLists.txt` | ||
file that provide a set of directives and instructions describing the project's source files and targets | ||
(executable, library, or both). | ||
|
||
Below is the minimum list of files in the project folder. | ||
|
||
``` | ||
├── CMakeLists.txt Global project CMake configuration file | ||
├── sdkconfig.defaults sdkconfig setting for an Arduino project | ||
├── main | ||
│ ├── CMakeLists.txt Arduino sketch CMake configuration file | ||
│ ├── idf_component.yml List of IDF components necessary to build the project | ||
│ └── main.cpp Arduino Sketch code - don't forget to add "#include <Arduino.h>" on it | ||
└── README.md This is the file you are currently reading | ||
``` | ||
|
||
## Configuring the Hardware USB CDC Serial | ||
|
||
ESP32 Arduino has two macro defined symbols that control what `Serial` symbol will represent. | ||
Default `Serial` is the UART0 from `HardwareSerial` class. | ||
|
||
`Serial` can be changed to be attached to the HW Serial JTAG port fro the SoC. | ||
In order to make it work, it is necessary to define 2 symbols: `ARDUINO_USB_CDC_ON_BOOT` and `ARDUINO_USB_MODE` to `1`. | ||
This is achieved by adding a couple lines to the [Project Folder CMakeLists.txt](CMakeLists.txt) file. | ||
|
||
|
||
``` | ||
# Adds necessary definitions for compiling it using Serial symbol attached to the HW USB CDC port | ||
list(APPEND compile_definitions "ARDUINO_USB_CDC_ON_BOOT=1") | ||
list(APPEND compile_definitions "ARDUINO_USB_MODE=1") | ||
``` | ||
|
||
Those two lines will add a `-DSYMBOL=VAL` when compiling every source code file. | ||
|
||
In order to make sure that it is actually working correctly, the [sketch](main/main.cpp) will execute `Serial.begin();` with no baudrate, which only works for USB CDC. |
4 changes: 4 additions & 0 deletions
4
idf_component_examples/hw_cdc_hello_world/main/CMakeLists.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
idf_component_register( | ||
SRC_DIRS "." | ||
INCLUDE_DIRS "." | ||
) |
6 changes: 6 additions & 0 deletions
6
idf_component_examples/hw_cdc_hello_world/main/idf_component.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
## IDF Component Manager Manifest File | ||
dependencies: | ||
espressif/arduino-esp32: | ||
version: "*" | ||
override_path: "../../../" | ||
pre_release: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#include <Arduino.h> | ||
|
||
void setup() { | ||
// USB CDC doesn't need a baud rate | ||
Serial.begin(); | ||
|
||
// wait for the Serial Monitor to be open | ||
while (!Serial) { | ||
delay(100); | ||
} | ||
|
||
Serial.println("\r\nStarting...\r\n"); | ||
} | ||
|
||
void loop() { | ||
Serial.println("Hello world!"); | ||
delay(1000); | ||
} |
12 changes: 12 additions & 0 deletions
12
idf_component_examples/hw_cdc_hello_world/sdkconfig.defaults
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# | ||
# Arduino ESP32 | ||
# | ||
CONFIG_AUTOSTART_ARDUINO=y | ||
# end of Arduino ESP32 | ||
|
||
# | ||
# FREERTOS | ||
# | ||
CONFIG_FREERTOS_HZ=1000 | ||
# end of FREERTOS | ||
# end of Component config |