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_ring_cfg Struct Reference

Data Fields

unsigned int decim
bool shift_fs4
bool subsample
uint32_t unit_pairs
bool spare_bank
bool spare_bank_app

Field Documentation

◆ decim

unsigned int esp_sdr_ring_cfg::decim

ESP_SDR_RING_DECIM_MIN to ESP_SDR_RING_DECIM_MAX, a power of two, or ESP_SDR_RING_DECIM_BOX4 or ESP_SDR_RING_DECIM_RAW.

◆ shift_fs4

bool esp_sdr_ring_cfg::shift_fs4

Mix by -fs/4 before filtering: the output is centred 4 MHz above the LO, keeping the LO leakage and the 1/f noise at 0 Hz out of it.

◆ spare_bank

bool esp_sdr_ring_cfg::spare_bank

Rotate through banks 0 and 1 only and keep bank 2 for bursts (esp_sdr_ring_burst_arm()). Needs a unit length of at most about 3000 pairs (-EINVAL otherwise).

◆ spare_bank_app

bool esp_sdr_ring_cfg::spare_bank_app

Like spare_bank, but bank 2 is the app's for the run (esp_sdr_ring_burst_buf() gives its address): no bursts, the ring neither reads nor writes it.

◆ subsample

bool esp_sdr_ring_cfg::subsample

With ESP_SDR_RING_DECIM_BOX4 and shift_fs4: take every 4th pair instead of summing 4 (where the mix is 1, so the band 4 MHz above the LO lands at 0 Hz). About 1 cycle per pair against about 14 for the sums, which do not keep up at 16 MS/s, for about 6 dB more noise; the LO leakage folds onto 0 Hz as a constant offset.

◆ unit_pairs

uint32_t esp_sdr_ring_cfg::unit_pairs

Unit length in ring pairs (0: ESP_SDR_RING_UNIT_DEFAULT): how often the engine changes banks, and so how long after a pair arrives the sink gets it at the latest (unit length plus the filter's lag). Shorter units cost more per pair. A multiple of 64 from ESP_SDR_RING_UNIT_MIN.


The documentation for this struct was generated from the following file: