2021-07-16 04:01:15 -04:00
| Supported Targets | ESP32-S2 | ESP32-S3 |
| ----------------- | -------- | -------- |
# USB CDC-ACM Host Driver Example
(See the README.md file in the upper level 'examples' directory for more information about examples.)
This example shows how to use the CDC-ACM Host Driver to allow an ESP chip to communicate with a USB CDC-ACM device.
## How to use example
### Hardware Required
Two ESP boards that have USB-OTG supported. One will act as USB host and the other as USB device.
Connect USB_D+, USB_D-, GND and +5V signals of USB host to USB device.
#### Pin Assignment
See common pin assignments for USB Device examples from [upper level ](../../../README.md#common-pin-assignments ).
### Build and Flash
2021-12-16 01:50:08 -05:00
1. Build and flash [tusb_serial_device example ](../../../device/tusb_serial_device ) to USB device board.
2021-07-16 04:01:15 -04:00
2. Build this project and flash it to the USB host board, then run monitor tool to view serial output:
```bash
idf.py -p PORT flash monitor
```
(Replace PORT with the name of the serial port to use.)
(To exit the serial monitor, type ``Ctrl-]``.)
See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.
2022-02-11 14:26:35 -05:00
### Running with dual USB CDC device
USB CDC device example [tusb_serial_device example ](../../../device/tusb_serial_device )
can be configured to act as dual CDC device.
In the device example project, enter command `idf.py menuconfig` and set Component config->TinyUSB Stack->Communication Device Class (CDC)->CDC channel Count to `2` .
This settings also changes device's PID, so `EXAMPLE_USB_DEVICE_PID` in [usb-cdc.c ](./main/usb-cdc.c ) must be changed to `0x4002` .
2021-07-16 04:01:15 -04:00
## Example Output
After the flashing you should see the output at idf monitor:
```
2022-02-11 14:26:35 -05:00
...
2021-07-16 04:01:15 -04:00
I (256) USB-CDC: USB Host installed
I (256) USB-CDC: Opening CDC ACM device 0x303A:0x4001
2022-02-11 14:26:35 -05:00
...
Device descriptor is printed here
...
2021-07-16 04:01:15 -04:00
I (1666) USB-CDC: Data received
I (1666) USB-CDC: 0x3ffc4c20 41 54 0d |AT.|
I (2666) USB-CDC: Data received
I (2666) USB-CDC: 0x3ffc4c20 41 54 2b 47 53 4e 0d |AT+GSN.|
I (3666) USB-CDC: Setting up line coding
I (3666) USB-CDC: Line Get: Rate: 115200, Stop bits: 0, Parity: 0, Databits: 8
I (3666) USB-CDC: Line Set: Rate: 9600, Stop bits: 1, Parity: 1, Databits: 7
I (3666) USB-CDC: Line Get: Rate: 9600, Stop bits: 1, Parity: 1, Databits: 7
I (3676) Example finished successfully!
...
```