esp-sdr-zephyr
Raw I/Q receive and transmit on the ESP32-S3/C6 Wi-Fi radio, for Zephyr
Loading...
Searching...
No Matches
esp_sdr_replay.h File Reference

ESP-SDR loop replay through the modem DAC engine (ESP32-C5). More...

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <esp_sdr/esp_sdr.h>

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.

Detailed Description

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()).