initial commit
This commit is contained in:
commit
b44ce7bd77
2716 files changed
+559005
No files matched your search
@@ -0,0 +1,70 @@
|
||||
# CDC + UAC2
|
||||
|
||||
This example provides a composite CDC + UAC2 device.
|
||||
|
||||
## Use Cases
|
||||
|
||||
- The CDC + UAC2 composite device happens to be important, especially in the
|
||||
amateur radio community.
|
||||
|
||||
Modern radios (`rigs`) like Icom IC-7300 + IC-705 expose a sound card and a
|
||||
serial device (`composite device`) to the computer over a single USB cable.
|
||||
This allows for Audio I/O and CAT control over a single USB cable which is
|
||||
very convenient.
|
||||
|
||||
By including and maintaining this example in TinyUSB repository, we enable
|
||||
the amateur radio community to build (`homebrew`) radios with similar
|
||||
functionality as the (expensive) commercial rigs.
|
||||
|
||||
- https://digirig.net/digirig-mobile-rev-1-9/ is a digital interface for
|
||||
interfacing radios (that lack an inbuilt digital interface) with computers.
|
||||
Digirig Mobile works brilliantly (is OSS!) and is a big improvement over
|
||||
traditional digital interfaces (like the SignaLink USB Interface). By using a
|
||||
CDC + UAC2 composite device, we can simplify the
|
||||
Digirig Mobile schematic, drastically reduce the manufacturing cost, and
|
||||
(again) enable the homebrewers community to homebrew a modern digital interface
|
||||
with ease themselves.
|
||||
|
||||
|
||||
## Build Steps
|
||||
|
||||
```bash
|
||||
mkdir build && cd build
|
||||
cmake -DBOARD=raspberry_pi_pico ..
|
||||
cmake --build .
|
||||
```
|
||||
|
||||
Make:
|
||||
|
||||
```bash
|
||||
make BOARD=raspberry_pi_pico all
|
||||
```
|
||||
|
||||
## USB Descriptors
|
||||
|
||||
| Interface | Class driver |
|
||||
|-----------|--------------|
|
||||
| 0–2 | UAC2 audio (control, speaker streaming, mic streaming) |
|
||||
| 3–4 | CDC (virtual serial) |
|
||||
|
||||
## Configuration
|
||||
|
||||
Notable `tusb_config.h` settings:
|
||||
|
||||
```c
|
||||
#define CFG_TUD_CDC 1
|
||||
#define CFG_TUD_AUDIO 1
|
||||
#define CFG_TUD_AUDIO_FUNC_1_N_FORMATS 2 // two audio formats
|
||||
#define CFG_TUD_AUDIO_FUNC_1_MAX_SAMPLE_RATE 96000 // 48000 on Renesas RX
|
||||
#define CFG_TUD_CDC_RX_BUFSIZE (TUD_OPT_HIGH_SPEED ? 512 : 64)
|
||||
#define CFG_TUD_CDC_TX_BUFSIZE (TUD_OPT_HIGH_SPEED ? 512 : 64)
|
||||
```
|
||||
|
||||
## How to use
|
||||
|
||||
After flashing, the device enumerates as both a USB sound card and a serial port:
|
||||
|
||||
- **Audio:** appears as a standard UAC2 sound card — list it with `arecord -l` / `aplay -l` on Linux, or find it in the OS sound settings. Audio is sourced/sunk by the example's `audio_task`.
|
||||
- **Serial:** the CDC port shows up as `/dev/ttyACMx` (Linux/macOS) or a COM port (Windows); open it with any terminal.
|
||||
|
||||
In the amateur-radio setup, digital-mode software (WSJT-X, fldigi, …) uses the sound card for audio and the serial port for CAT/PTT control — both over the one cable.
|
||||
Reference in new issue
Block a user