Skip to content

Commit bbed8d5

Browse files
authored
feat(hw_cdc): creates documentation for the example
Adds a README file that exaplains the example.
1 parent 396def3 commit bbed8d5

File tree

1 file changed

+63
-0
lines changed
  • idf_component_examples/hw_cdc_hello_world

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
| Supported Targets | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-S3 |
2+
| ----------------- | -------- | -------- | -------- | -------- |
3+
4+
# _HW Serial USB CDC example_
5+
6+
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 Harware Serial port.\
7+
See [arduino-esp32](https://components.espressif.com/components/espressif/arduino-esp32) in ESP Registry.
8+
9+
## How to use example
10+
11+
After cloning this repository, go to the `hw_cdc_hello_world` folder and select the target by executing\
12+
`idf.py set-target <SoC_target>`.\
13+
`<SoC_target>` can be one of the installed IDF version supported targets.
14+
15+
It is possible to just clone this folder be executing\
16+
`idf.py create-project-from-example "espressif/arduino-esp32^3.0.5:hw_cdc_hello_world"`
17+
18+
For IDF 5.1.x and forward, the list of targets that support Hardware USB CDC are, at least: esp32s3, esp32c3, esp32c6 and esp32h2.\
19+
Then just run command: `idf.py build` or `idf.py -p USB_PORT flash monitor`.
20+
21+
Usually, it is necessary to make the ESP32 SoC to enter in `Download Mode` before uploading the firmware.\
22+
After that, just press `RESET/EN` to start the new firmware.
23+
24+
## Example folder contents
25+
26+
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).
27+
28+
ESP-IDF projects are built using CMake. The project building configuration is contained in `CMakeLists.txt`
29+
file that provide a set of directives and instructions describing the project's source files and targets
30+
(executable, library, or both).
31+
32+
Below is the minimum list of files in the project folder.
33+
34+
```
35+
├── CMakeLists.txt Global project CMake configuration file
36+
├── sdkconfig.defaults sdkconfig setting for an Arduino project
37+
├── main
38+
│   ├── CMakeLists.txt Arduino sketch CMake configuration file
39+
│ ├── idf_component.yml List of IDF components necessary to build the project
40+
│   └── main.cpp Arduino Sketch code - don't forget to add "#include <Arduino.h>" on it
41+
└── README.md This is the file you are currently reading
42+
```
43+
44+
## Configuring the Hardware USB CDC Serial
45+
46+
ESP32 Arduino has two macro defined symbols that control what `Serial` symbol will represent.
47+
Default `Serial` is the UART0 from `HardwareSerial` class.
48+
49+
`Serial` can be changed to be attached to the HW Serial JTAG port fro the SoC.
50+
In order to make it work, it is necessary to define 2 symbols: `ARDUINO_USB_CDC_ON_BOOT` and `ARDUINO_USB_MODE` to `1`.
51+
This is achieved by adding a couple lines to the [Project Folder CMakeLists.txt](CMakeLists.txt) file.
52+
53+
54+
```
55+
# Adds necessary definitions for compiling it using Serial symbol attached to the HW USB CDC port
56+
list(APPEND compile_definitions "ARDUINO_USB_CDC_ON_BOOT=1")
57+
list(APPEND compile_definitions "ARDUINO_USB_MODE=1")
58+
59+
```
60+
61+
Those two lines will add a `-DSYMBOL=VAL` when compiling every source code file.
62+
63+
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.

0 commit comments

Comments
 (0)