ESP-SDR voor Zephyr

Projectstructuur

PadBeschrijving
lib/espsdr: de bibliotheek (CONFIGESP_SDR) <br> ieee802154: software O-QPSK PHY en Zephyr radio-driver (zie doc/ieee802154.md)
include/espsdr/: de API, waaronder espsdr.h, espsdrrx.h, espsdrtx.h, espsdrring.h, espsdrpaced.h, ieee154phy.h, ieee154esp_sdr.h
apps/capture: survey-capture via de console <br> stream: VITA 49.2 RX en TX via USB (CDC-NCM) <br> osmosdr: HackRF-stijl USB SDR voor GNU Radio en gqrx <br> osmosdr_serial: hetzelfde via USB-Serial-JTAG (C6, C5) <br> link: QAM of OFDM pakketverbinding <br> wpan: 802.15.4 test shell <br> rfprobe: bench probe (tuning, tonen, registers) <br> multiapp: één firmware die de andere apps uitvoert (zie doc/multiapp.md) <br> common: USB met DFU, watchdogs, crash-records
tests/Unit-tests (host), integratietests (één board), regressietests (twee boards); zie doc/testing.md
doc/Handleidingen, register-pagina's, Doxygen en Sphinx build
scripts/west dfu (west_commands/), test runners
boards/waveshare/esp32c5_zero: Waveshare ESP32-C5-Zero
zephyr/module.yml en de librftest.a blobs
west.ymlDe workspace pins (zie Afhankelijkheden)

Aan de slag

Voer de volgende commando's uit om de omgeving in te richten:

west init -m https://github.com/cyber-murmel/esp-sdr-zephyr esp-sdr-ws
cd esp-sdr-ws
west update
west blobs fetch hal_espressif
west blobs fetch esp-sdr-zephyr
west build -d build --sysbuild -b xiao_esp32s3/esp32s3/procpu esp-sdr-zephyr/apps/multiapp
west flash -d build
west dfu --storage -d build

Hiermee wordt multiapp geïnstalleerd op een XIAO ESP32S3. In de USB-shell van de app toont de lijst alle beschikbare apps; met app run <naam> kan een app worden gestart, bijvoorbeeld app run osmosdr (zie apps/multiapp/README.rst).

Elke app kan ook afzonderlijk worden gebouwd. Releases bevatten het multiapp-image en de SoapySDR-module voor gqrx en GNU Radio.

De bibliotheek

Ondersteunde chips

  • ESP32-S3 (XIAO ESP32S3): Ondersteunt SMP of single core.
  • ESP32-C6 (XIAO ESP32C6) en ESP32-C5 (C5-Zero): Ondersteunen burst-captures en continue CPU-paced ontvangst en verzending tot 250 kS/s (espsdrpaced.h). De apps capture, rfprobe, wpan (C6) en osmosdr_serial werken op deze chips.

Tuning

De API ondersteunt 100 tot 6000 MHz, maar de PLL lockt binnen een chip-specifiek bereik (ongeveer 1.8 tot 2.8 GHz op de S3). Onder de 2210 MHz wordt dit gerealiseerd via de 5/6-deler. Er wordt een -ERANGE fout gegeven wanneer de VCO buiten bereik is.

Capture

  • Samples: 256 tot 16380 samples bij 80, 40 of 16 MS/s.
  • Filters: Analoog laagdoorlaatfilter, optionele CIC-decimatie.
  • Ontvangst: Gaploze ring-ontvangst.

Gain

Er kan gekozen worden voor AGC of een vaste index. De vaste gain- en TX-stappen maken gebruik van librftest.a (west blobs fetch esp-sdr-zephyr of CONFIGESPSDR_RFTEST=n).

Transmit

  • Playback: Sample-playback op 40 of 80 MS/s.
  • Streaming: Gaploze streaming op 40 MS/s / n (CONFIGESPSDRTXDAC, vereist PSRAM).
  • Vermogen: 18 vermogensstappen.

Chip-details en eigenaardigheden

Raadpleeg doc/hardware-quirks.md voor specifieke details.

Configuratie

Activeer de bibliotheek met de volgende instellingen:

CONFIG_NETWORKING=y
CONFIG_WIFI=y
CONFIG_ESP32_WIFI_STA_POWER_SAVE_NONE=y
CONFIG_ESP_SDR=y

Let op: espsdrinit() neemt de radio over die door de Wi-Fi driver is opgestart. Scan niet, maak geen verbinding en start geen access point terwijl deze bibliotheek in gebruik is.

Documentatie

De documentatie is gepubliceerd op https://cyber-murmel.github.io/esp-sdr-zephyr. Om deze zelf te bouwen:

cd esp-sdr-zephyr/doc
doxygen
make html

De site bevindt zich in doc/buildsphinx/html, met de API-referentie in de map doxygen/. De CI bouwt dit met waarschuwingen als fouten (SPHINXOPTS=-W) en publiceert het resultaat.

Versionering

Het bestand VERSION (in Zephyr-formaat) bepaalt de versie van de bibliotheek en de apps; elke app print dit bij het opstarten.

  • Major: Voor wijzigingen in de API die niet compatibel zijn.
  • Minor: Voor compatibele uitbreidingen.
  • Patch: Voor bugfixes.

Een tag v<VERSION> resulteert in een GitHub-release.

Afhankelijkheden

De west.yml pins bevatten:

  • Zephyr esp-sdr-multiapp: ESP32-S3 SMP (zephyrproject-rtos/zephyr#120082), CDC-NCM aggregatie, llext en Xtensa-wijzigingen voor multiapp.
  • hal_espressif esp-sdr: De HAL-zijde van de SMP-port.
  • libvrt esp-sdr: VITA 49.2.
  • esp-sdr (upstream, ongewijzigd): Helper-headers voor de ontvanger.
  • esp-dsp: De FFT voor apps/link OFDM.

Licentie

GPL-3.0-or-later, conform de upstream esp-sdr. Images die de bibliotheek inschakelen, vallen onder de GPL.