|
esp-sdr-zephyr
Raw I/Q receive and transmit on the ESP32-S3/C6 Wi-Fi radio, for Zephyr
|
ESP-SDR loop replay through the modem DAC engine (ESP32-C5). More...
Go to the source code of this file.
Data Structures | |
| struct | esp_sdr_replay_cfg |
Macros | |
| #define | ESP_SDR_REPLAY_MAX 16383U |
Functions | |
| static uint32_t | esp_sdr_replay_word (int32_t i, int32_t q) |
| uint32_t * | esp_sdr_replay_buf (size_t *words) |
| The sample buffer the engine plays from. | |
| int | esp_sdr_replay_start (const struct esp_sdr_replay_cfg *cfg) |
| Turn the transmit chain on and start the engine. | |
| int | esp_sdr_replay_wait (uint32_t timeout_us, uint32_t *cycles) |
| Wait for a finite replay to finish. | |
| int | esp_sdr_replay_restart (void) |
| Start a finished replay again, with the same settings and samples. | |
| uint32_t | esp_sdr_replay_ctrl (void) |
| bool | esp_sdr_replay_active (void) |
| void | esp_sdr_replay_stop (void) |
| Stop the engine, give the bank back and return to receive. | |
ESP-SDR loop replay through the modem DAC engine (ESP32-C5).
The DAC engine plays words out of the dump bank on its own clock, at 80 or 40 MS/s: one pass, a number of passes, or endlessly until stopped. The CPU is free meanwhile. Only periodic content fits: the engine owns the whole SRAM block while it plays, so the CPU can neither refill the buffer nor run the diagnostic-bus ring (esp_sdr_diag.h) in that time.
Write the samples with esp_sdr_replay_word() into esp_sdr_replay_buf() before esp_sdr_replay_start(): the engine drops CPU stores to its block.
Registers after upstream ESP-SDR's first C5 transmitter (git show e605684:main/c5_main.c, emit_dma()).