DSTAR-Spot · 06_Technik.md
6. Technik (für Interessierte)
Warum nicht wie DMR?
Im DMR-Hotspot von OpenGD77 erledigt der HR-C6000 Demodulation und Protokoll in Hardware. Für D-Star gibt es dafür nichts Vergleichbares. Ein ADF7021-Hotspot liefert fertige Bits, der AT1846S im DM-1701 dagegen nur sein analoges Diskriminatorsignal. Deshalb läuft die GMSK-Demodulation hier in Software auf dem STM32F405 (192 KiB RAM, FreeRTOS).
Signalkette RX
Antenne → AT1846S (Reg. 0x58 = 0xBCFD: Hochpass, Tiefpass, De-Emphasis umgangen;
Reg. 0x40 = 0x0031: Bit 0 schaltet einen ≈ 280-Hz-Hochpass ab)
→ AFOUT (Pin 9) → Kynar-Draht → MCU-Pin 18 = PC3 (ADC2, Kanal 13)
→ ADC2, getriggert von TIM8 mit 24 kHz, DMA2_Stream3 (5 Samples je Symbol)
→ Demodulator: GMSK-Filter, Taktrückgewinnung, 9-Tap-Entzerrer, Sync-Erkennung
→ D-Star-Rahmen (Header mit FEC und CRC, Sprache, Slow Data, Ende)
→ MMDVM-Protokoll über USB → MMDVMHost
OpenGD77 schreibt die AT1846S-Register bei jedem Kanal- und Moduswechsel neu. Im D-Star-Hotspot setzt die Firmware 0x58 und 0x40 danach jedes Mal wieder.
Signalkette TX
MMDVMHost → USB (D-Star-Header, Daten, Ende)
→ Bit-Ring → Framer (Präambel, Frame-Sync, Header mit FEC, Füllrahmen bei Netzlücken, Ende)
→ GMSK-Modulator (BT 0,5) im TIM8-Interrupt, 24 kHz
→ PWM an PC8 (TIM8 Kanal 3, 288 kHz) → Modulationseingang des HR-C6000
(FM-Sendeaufbau schon vor dem Tasten gesetzt, Pre-Emphasis aus)
→ Zwei-Punkt-Modulation → PA → Antenne
Der FM-Sendeaufbau des HR-C6000 braucht bis zu ≈ 1 s, bis der Träger stabil ist. Die Firmware hält ihn deshalb im Empfang vorbereitet. Der Träger steht dann 62–83 ms nach dem Tasten.
Messwerte (Prototyp)
| Größe | Wert |
|---|---|
| Abtastung | 24 000 Hz exakt, keine verlorenen Blöcke, kein Clipping (≈ 1/14 Aussteuerung) |
| RX-Fehlerrate am Pi-Star (BER) | ID-31 0,0–0,4 %, IC-7100 0,0 % (−47 bis −52 dBm) |
| Vergleich mit MMDVM-Board am selben Signal | gleichwertig (IC-7100) bzw. besser (ID-31: 0,4 % statt 4,5 %) |
| Rauschen ohne Signal | 10 min ohne Fehlalarm |
| TX: Hub | ≈ ±1,2 kHz (11 PWM-Stufen ≈ 110 Hz je Stufe, linear) |
| TX: Einschwingen nach dem Tasten | 62–83 ms; Präambel = max(TXDelay, 150 ms) |
| TX: BER an der Gegenstelle | 0,0–0,6 % |
| TX: Trägerablage | ≈ −0,72 bis −0,75 kHz bei 438,1 MHz (≈ −1,7 ppm), gemessen mit HackRF am 10-MHz-OCXO; über 270 s Dauersendung ≈ 30 Hz Drift |
| TX: Dauer | 270 s Dauersendung an der Dummy-Load ohne Fehler, Gehäuse +2 K (26 → 28 °C); Firmware-Watchdog als Notbremse nach 250 s, vorher beendet MMDVMHost (Timeout) |
| CPU | Empfang ≈ 16 %, Modulator-Interrupt beim Senden ≈ 7 % |
| RAM frei | Haupt-RAM ≈ 5,4 KB, CCM ≈ 1,8 KB |
Bekannte offene Punkte
- RSSI wird nicht an den Host gemeldet.
- Der Entzerrer ist mit zwei Icom-Geräten abgestimmt. Weitere Sender und ein zweites umgebautes DM-1701 sind nicht gemessen.
- Kein gleichzeitiger D-Star- und DMR-Betrieb.
- Spektrum der D-Star-Aussendung (Nebenaussendungen, Nachbarkanal) noch nicht gemessen.
Referenzen (nur als Vorbild, kein Code übernommen)
- D-Star-Spezifikation (JARL): 4800 bit/s GMSK, BT 0,5, Rahmenaufbau.
- G4KLX MMDVM (
DStarRX.cpp): Ansatz für Abtastung und Demodulation. - OpenRTX: AT1846S-Register und Sendeweg über den HR-C6000 auf demselben Gerät (für M17).