|
esp-sdr-zephyr
Raw I/Q receive and transmit on the ESP32-S3/C6 Wi-Fi radio, for Zephyr
|
Data Fields | |
| unsigned int | decim |
| bool | shift_fs4 |
| bool | subsample |
| uint32_t | unit_pairs |
| bool | spare_bank |
| bool | spare_bank_app |
| 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.
| 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.
| 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).
| 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.
| 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.
| 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.