From 4da1776bfd255d05026933913a51bbbd4bf2ebe7 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Wed, 13 May 2026 20:24:51 +0200 Subject: [PATCH 1/3] docs: rewrite FM Transceiver index.md with full architecture overview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds: - 1-sentence description front-matter (band-agnostic — 2 m or 70 cm) - Übersicht clarifying USB-only CM4 communication via STM32U575 Composite Device (UAC2 + CDC ACM + DFU) - Mermaid block diagram of the signal flow STM32 ↔ SA818 ↔ antenna - Band-variant table (SA818V + LFCN-160 for 2 m; SA818U + LFCN-180+490 for 70 cm) with warning about chip/filter pairing - Steckverbinder table (J101 SMA, J201 SWD, J202 bus, JP201 solder-pad) - Bus pinout J202 (FM slot's local view — mirrored vs BusBoard slot) - SWD header pinout (J201) + TBD note linking to issue #13 for pin-1 silkscreen marking - STM32 ↔ SA818 signal mapping table (PTT GPIO1→PB2, PWR_DOWN GPIO2→ PB10, H/L GPIO3→PB11, SQUELCH GPIO4→PB1) - Firmware role section (UAC2 + CDC + DFU breakdown, all over USB) - Components table extracted from netlist (SA818, STM32U575, TLV73333 automotive LDO, USBLC6, CAT24C32 EEPROM, LMR51430 buck, LFCN filters, pin drivers) - EEPROM section — note it's currently empty, intended for module config; JP201 solder-pad as write-protect bridge - Versorgung table - Bestückung notes incl. variant pairing + antenna safety warning - Bringup checklist - Cross-links to BusBoard, PowerBoard, CM4 Carrier, FW-RemoteStation --- doc/index.md | 180 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 175 insertions(+), 5 deletions(-) diff --git a/doc/index.md b/doc/index.md index e4ac573..3626a52 100644 --- a/doc/index.md +++ b/doc/index.md @@ -2,6 +2,7 @@ title: FM Transceiver nav_order: 5 parent: Hardware +description: FM-Schmalband-Transceiver für 2 m (VHF) oder 70 cm (UHF) auf Basis SA818, mit STM32U5 als USB-Bridge — erscheint dem CM4 als USB-Audio-Class-2 + CDC-ACM-Verbund. --- # FM Transceiver PCB @@ -14,12 +15,181 @@ parent: Hardware -Das `FM` Modul beherbergt einen FM Chip (SA818x) für das 2m oder 70cm Band. +## Übersicht -| Spannung | benötigter Strom | -| -------- | ----------------------------------------- | -| +5V | max. 1A | -| +12V | max. 1A (SA818) via buck converter for 5V | +FM-Schmalband-Transceiver auf Basis des **SA818**-Moduls für die Amateurfunkbänder **2 m (144 – 174 MHz)** *oder* **70 cm (400 – 480 MHz)**. Bestückbar in beiden Varianten — abhängig vom verlöteten SA818-Chip (`SA818V` für VHF / `SA818U` für UHF) und dem dazu passenden Tiefpassfilter (LFCN-160 für VHF / LFCN-180+LFCN-490 für UHF). + +Zwischen SA818 und CM4 sitzt ein **STM32U575** Mikrocontroller. Er stellt sich am USB als **Composite Device** vor und sieht für das CM4-Linux aus wie: + +- **UAC2** (USB Audio Class 2) — TX-Audio strömt vom CM4 als Audio-Sink in den STM32-DAC und von dort als analoges Signal zum SA818-Mic-Input. RX-Audio läuft umgekehrt: SA818-AF_OUT → STM32-ADC → über UAC2 als Audio-Source zurück an's CM4. +- **CDC ACM** (Virtual COM Port) — PTT, Squelch-Read, Frequenz, Power-Level usw. werden vom CM4 als ASCII-Kommandos über `/dev/ttyACM*` gesetzt. +- **DFU** (Device Firmware Upgrade) — STM32-Firmware kann über USB neu geflasht werden, ohne SWD-Adapter und ohne BOOT0-Hardware-Jumper. + +Das Modul belegt einen der vier Slots auf dem [BusBoard](../HW-Module-BusBoard/). Die Kommunikation zum CM4 läuft **ausschließlich über USB** (USB-Pair am Bus-Stecker, durch den FE1.1s-Hub auf dem BusBoard); I²C, UART und GPIO-Pins des Bus-Steckers sind NICHT genutzt. + +## Block-Diagramm + +```mermaid +flowchart LR + CM4["CM4
(via BusBoard FE1.1s)"] + CM4 <-->|"USB 2.0
(UAC2 + CDC + DFU)"| ESD["USBLC6-2SC6
ESD"] + ESD <--> STM32["STM32U575CITx"] + + STM32 -->|"UART RX/TX
AT-Kommandos"| SA["SA818V/U"] + STM32 -->|"DAC (TX-Audio)"| MICF["DAC→MIC_IN
Filter"] + MICF --> SA + SA -->|"AF_OUT (RX-Audio)"| AFF["AF_OUT→ADC
Filter"] + AFF -->|"ADC"| STM32 + STM32 -->|"GPIO1: PTT"| PDR["Pin-Driver
(MOSFET/NPN)"] + STM32 -->|"GPIO2: PD"| PDR + STM32 -->|"GPIO3: H/L"| PDR + PDR --> SA + SA -->|"SQUELCH"| PDR + PDR -->|"GPIO4"| STM32 + SA -->|"RF-Out"| LPF["LPF
(LFCN-160 für 2m,
LFCN-180+490 für 70cm)"] + LPF --> ANT(["Antenne
SMA edge"]) + + STM32 -.->|"I²C intern"| EEP["CAT24C32
4 KByte EEPROM"] +``` + +## Band-Varianten + +Die Platine ist für beide Amateurfunk-Bänder ausgelegt; bestückungsabhängig: + +| Variante | SA818-Chip | LPF-Bestückung | Band | +| -------- | ---------- | -------------- | ---- | +| **2 m / VHF** | `SA818V` | `LFCN-160` | 144 – 174 MHz | +| **70 cm / UHF** | `SA818U` | `LFCN-180` + `LFCN-490` | 400 – 480 MHz | + +⚠️ **Wichtig**: SA818-Chip und LPF-Bestückung müssen zueinander passen. Ein falsch bestückter Filter unterdrückt entweder das Nutzband oder lässt zu viele Oberwellen durch → Empfangsperformance schlecht und/oder Verstoß gegen Spektrumvorschriften. + +## Steckverbinder + +| Bezeichner | Typ | Funktion | +| ---------- | --- | -------- | +| **J101** | Board-Edge SMA | Antennenanschluss (50 Ω) | +| **J201** | 10-Pin 1.27 mm SWD (Cortex Debug) | STM32-Programming- und Debug-Header | +| **J202** | 20-Pin (Hirose PCN10-20P-2.54DSA) | Bus-Stecker zum [BusBoard](../HW-Module-BusBoard/) | +| **JP201** | 2× Lötpad | EEPROM-Write-Protect-Brücke (siehe „EEPROM" unten) | + +### Bus-Stecker J202 (FM-Slot-Sicht) + +Das FM-Modul ist ein Device-Slot-Konsument. Power-Belegung identisch zu allen anderen Slots; nur USB ist aktiv, alle anderen Slot-Signal-Pins (`a7`–`a9`, `b7`–`b9`) sind NC. + +| Pin | Net | Pin | Net | +|----:|-----|----:|-----| +| a1 | +12V | b1 | +12V | +| a2 | +12V | b2 | +12V | +| a3 | GND | b3 | GND | +| a4 | +5V | b4 | +5V | +| a5 | +5V | b5 | +5V | +| a6 | USB D+ | b6 | USB D− | +| a7 | NC | b7 | NC | +| a8 | NC | b8 | NC | +| a9 | NC | b9 | NC | +| a10 | GND | b10 | GND | + +Hinweis: Pin-Numerierung am FM-Modul ist **gespiegelt** ggü. dem BusBoard-Slot (FM `a1` ↔ BusBoard `a10` usw.) — physikalisch passt's. Kanonische Bus-Pinbelegung siehe [BusBoard](../HW-Module-BusBoard/#pin-belegung-20-pin-identisch-auf-allen-konnektoren). + +### STM32 SWD-Header J201 + +Standard ARM Cortex Debug 10-Pin (1.27 mm). Passt für ST-Link V2/V3, J-Link, Black Magic Probe. + +| Pin | Signal | Pin | Signal | +|----:|--------|----:|--------| +| 1 | +3V3 | 2 | SWDIO | +| 3 | GND | 4 | SWCLK | +| 5 | GND | 6 | NC | +| 7 | NC | 8 | NC | +| 9 | GND | 10 | nRESET | + +**Pin-1-Lage im Silkscreen ist auf der aktuellen Revision NICHT markiert** ([Issue #13](https://github.com/OE5XRX/HW-Module-FMTransceiver/issues/13)) — Schaltplan zur Hand nehmen oder die Pin-1-Markierung vom Programmer-Kabel mit einem Multimeter gegen `+3V3` verifizieren. + +## STM32 ↔ SA818 — Steuersignal-Mapping + +Die STM32-GPIOs steuern das SA818 über Level-Shifter (MOSFET / NPN — `pin_driver` und `pin_driver_npn` Sub-Sheets): + +| Funktion | STM32 GPIO-Label | SA818-Pin | Richtung | +| -------- | ---------------- | --------- | -------- | +| **PTT** (Push-to-Talk) | `GPIO1` | `PB2` | STM32 → SA818 | +| **POWER_DOWN** (Modul ein/aus) | `GPIO2` | `PB10` | STM32 → SA818 | +| **H_L_Power** (Sendeleistung high/low) | `GPIO3` | `PB11` | STM32 → SA818 | +| **SQUELCH** (Squelch-Open-Indikator) | `GPIO4` | `PB1` | SA818 → STM32 | + +Zusätzlich UART auf STM32 USART_TX/USART_RX ↔ SA818 für AT-Kommandos (Frequenz setzen, Modulation, CTCSS, etc. — siehe SA818-Datenblatt). + +## Firmware-Rolle (STM32U575) + +Die STM32-Firmware (Quelle: [`FW-RemoteStation`](https://github.com/OE5XRX/FW-RemoteStation)) macht aus dem FM-Modul ein selbst beschreibendes USB-Gerät am CM4: + +| USB-Klasse | Zweck | CM4-Sicht | +| ---------- | ----- | --------- | +| **UAC2** | Audio-Class 2 für TX- und RX-Audio | Sound-Karte: aufnehmen vom Modul (RX-Audio) und abspielen zum Modul (TX-Audio) per ALSA/PipeWire. | +| **CDC ACM** | Kontroll-Pfad | `/dev/ttyACM*` — ASCII-Kommandos für PTT, Squelch-Read, Frequenz, Power-Level. | +| **DFU** | Firmware-Update | `dfu-util` kann die STM32-FW über USB neu schreiben — **kein BOOT0-Pin-Eingriff nötig**, die laufende Firmware switcht über CDC-Kommando in den DFU-Mode. | + +Audio läuft vollständig analog zwischen SA818 und STM32 (DAC/ADC im STM32) — keine Echtzeitkritik am CM4 nötig, Audio wird als USB-Audio-Stream behandelt. + +## Auf der Platine verbaute Komponenten + +| Bauteil | Funktion | +| ------- | -------- | +| **SA818V / SA818U** (U101) | FM-Schmalband-Transceiver-Modul (1 W TX-Leistung). Bestückung je nach Band. | +| **STM32U575CITx** (U201) | Cortex-M33 USB-Bridge. UAC2 + CDC + DFU Composite Device. | +| **TLV73333PQDBVRQ1** (U203) | Automotive-grade (-Q1) 3.3 V LDO — Versorgung für STM32 + Peripherie. | +| **USBLC6-2SC6** (U204) | USB-ESD-Schutz auf den D±-Leitungen vor STM32. | +| **CAT24C32** (U202) | 32 Kbit (4 KByte) I²C EEPROM. WP-Pin über `JP201`-Lötbrücke konfigurierbar. | +| **LMR51430** (U801) | Buck-Konverter 12 V → 5 V für die SA818-Versorgung. | +| **LFCN-160** / **LFCN-180 + LFCN-490** | Mini-Circuits Tiefpassfilter im Antennen-Pfad (Oberwellen-Unterdrückung). Bestückungs-Variante: einer ist aktiv je nach Band. | +| **8 MHz Crystal** | Taktquelle für den STM32U575 (Backup zum HSI). | +| **Pin Driver** (pin_driver / pin_driver_npn Sub-Sheets) | MOSFET- und NPN-Level-Shifter zwischen STM32-3.3-V-GPIOs und SA818. | + +## EEPROM (CAT24C32) + +4-KByte-EEPROM am internen I²C-Bus des STM32 (separate I²C-Lines `I2C_SCL_MEM`/`I2C_SDA_MEM` von Pin 45/46 — also nicht über den Bus zum CM4 erreichbar). **Vorgesehen für Modul-Konfiguration** (Seriennummer, Kalibrierdaten, gespeicherte Frequenzlisten o.ä.). **Aktuell noch leer** — Firmware definiert das Schema noch. + +**Write-Protect** über `JP201` (zwei Lötpads, KEIN Pin-Header): + +| JP201 | Verhalten | +| ----- | --------- | +| **offen** (Default ab JLCPCB) | EEPROM beschreibbar — STM32 kann CAT24C32 lesen UND schreiben. | +| **gebrückt** (Lötzinn-Brücke) | EEPROM schreibgeschützt (CAT24C32 Pin 7 / WP = high). Nur Lesen möglich. | + +In der Endmontage (Produktivbetrieb) ist es empfehlenswert die Brücke zu setzen, damit kein Firmware-Bug versehentlich Kalibrierdaten überschreibt. + +## Versorgung + +| Rail | Quelle | Verbrauch | +| ---- | ------ | --------- | +| +12V | Bus-Stecker (vom [PowerBoard](../HW-Module-PowerBoard/)) | < 1 A (SA818 TX-Spitze) | +| +5V | Lokaler LMR51430 Buck aus +12V | für SA818 | +| +3V3 | Lokaler TLV73333-Q1 LDO aus +5V | für STM32, EEPROM, Pin-Driver-Logik | + +Hinweis: das Modul nutzt sowohl die +12V- *als auch* die +5V-Schiene vom Bus — die +5V vom Bus speist die USB-Interface-Schaltung (USBLC6), während die SA818-Versorgung lokal aus den +12V gezogen wird (saubere Trennung von Audio/Digital und HF/Switching-Noise). + +## Bestückung + +- **SA818** und passender **LFCN-Filter** müssen zusammenpassen — siehe Band-Varianten-Tabelle oben. Bei JLCPCB-Order entsprechende Variant-Auswahl im KiBot-Setup. +- **`JP201`-Lötbrücke** wird ab Werk **offen** geliefert (EEPROM beschreibbar zur Initialkonfiguration). Brücke kann nach Konfiguration mit Lötzinn geschlossen werden. +- Antenne: **Niemals senden ohne Antenne oder 50-Ω-Dummy-Last** am SMA — das SA818 verträgt offene/kurzgeschlossene Antennen-Ports nicht und kann beschädigt werden. + +## Bringup + +Nach Bestückung (mit Bus + CM4 verbunden): + +1. **Power-Sanity:** Modul in Slot stecken, +12 V anlegen, am Bus-Stecker `+5V`-Pin gegen GND messen → 5.00 ± 0.05 V (LMR51430-Output). `+3V3` (z.B. am SWD-Header J201 Pin 1 vs Pin 3) muss 3.30 ± 0.05 V zeigen. +2. **STM32-Boot:** kurze Latenz nach Power-Up sollte am USB ein Composite Device erscheinen (`lsusb` am CM4). Drei Endpoints: UAC2 (Audio), CDC ACM (Serial), DFU. +3. **Soundkarten-Check:** `aplay -L` / `arecord -L` am CM4 → die FM-Module-UAC2-Soundkarte muss in der Liste sein. +4. **CDC-Konsole:** `screen /dev/ttyACM0 115200` (oder welche Nummer auch immer) — Firmware-spezifisches Prompt/Echo erwartet. +5. **SA818-Smoke:** über CDC-Kommando Frequenz setzen, dann mit Funkscanner / SDR auf der eingestellten Frequenz Trägeraussendung kurz testen (5-Sek-Burst max, **mit Antenne!**). +6. **Firmware-Update-Pfad:** über CDC-Kommando in DFU schalten, mit `dfu-util -l` muss das Modul auftauchen — bestätigt dass auch Firmware-Updates über reines USB möglich sind, ohne SWD-Programmer. + +## Verwandte Module + +- [BusBoard](../HW-Module-BusBoard/) — stellt USB-Anbindung über FE1.1s-Hub bereit. +- [PowerBoard](../HW-Module-PowerBoard/) — speist +12 V / +5 V am Bus. +- [CM4 Carrier](../HW-Module-CM4Carrier/) — USB-Host und Software-Endpoint für UAC2/CDC/DFU. +- [`FW-RemoteStation`](https://github.com/OE5XRX/FW-RemoteStation) — STM32-Firmware-Quellcode. ## Daten From 4cdeb05e592157e1226487c71b7f1f1d9726d04d Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Wed, 13 May 2026 20:36:49 +0200 Subject: [PATCH 2/3] =?UTF-8?q?fix(docs):=20correct=20LPF=20filter=20spec?= =?UTF-8?q?=20=E2=80=94=20single=20FV1206=20footprint=20(FL101),=20LFCN-18?= =?UTF-8?q?0=20for=202m=20/=20LFCN-490=20for=2070cm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User correction: - 2m needs LFCN-180 (not LFCN-160 as I had — LFCN-160 doesn't even exist) - 70cm needs LFCN-490 - Only ONE filter footprint on the board (FL101, FV1206) — not two The 'LFCN-160' value string I'd seen in the schematic only appears as a stale Value-property on the SA818 lib_symbol entry (copy-paste leftover in the symbol library), not on an actually-placed component. The real placed filter (FL101) has Value 'LFCN-180/490' on the FV1206 footprint and is alternately populated with LFCN-180 or LFCN-490 depending on band. --- doc/index.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/doc/index.md b/doc/index.md index 3626a52..81f5dcb 100644 --- a/doc/index.md +++ b/doc/index.md @@ -17,7 +17,7 @@ description: FM-Schmalband-Transceiver für 2 m (VHF) oder 70 cm (UHF) auf Basis ## Übersicht -FM-Schmalband-Transceiver auf Basis des **SA818**-Moduls für die Amateurfunkbänder **2 m (144 – 174 MHz)** *oder* **70 cm (400 – 480 MHz)**. Bestückbar in beiden Varianten — abhängig vom verlöteten SA818-Chip (`SA818V` für VHF / `SA818U` für UHF) und dem dazu passenden Tiefpassfilter (LFCN-160 für VHF / LFCN-180+LFCN-490 für UHF). +FM-Schmalband-Transceiver auf Basis des **SA818**-Moduls für die Amateurfunkbänder **2 m (144 – 174 MHz)** *oder* **70 cm (400 – 480 MHz)**. Bestückbar in beiden Varianten — abhängig vom verlöteten SA818-Chip (`SA818V` für VHF / `SA818U` für UHF) und dem dazu passenden Mini-Circuits-Tiefpassfilter (`LFCN-180` für VHF / `LFCN-490` für UHF; identischer FV1206-Footprint). Zwischen SA818 und CM4 sitzt ein **STM32U575** Mikrocontroller. Er stellt sich am USB als **Composite Device** vor und sieht für das CM4-Linux aus wie: @@ -46,7 +46,7 @@ flowchart LR PDR --> SA SA -->|"SQUELCH"| PDR PDR -->|"GPIO4"| STM32 - SA -->|"RF-Out"| LPF["LPF
(LFCN-160 für 2m,
LFCN-180+490 für 70cm)"] + SA -->|"RF-Out"| LPF["LPF FL101
(LFCN-180 = 2m,
LFCN-490 = 70cm)"] LPF --> ANT(["Antenne
SMA edge"]) STM32 -.->|"I²C intern"| EEP["CAT24C32
4 KByte EEPROM"] @@ -56,10 +56,12 @@ flowchart LR Die Platine ist für beide Amateurfunk-Bänder ausgelegt; bestückungsabhängig: -| Variante | SA818-Chip | LPF-Bestückung | Band | -| -------- | ---------- | -------------- | ---- | -| **2 m / VHF** | `SA818V` | `LFCN-160` | 144 – 174 MHz | -| **70 cm / UHF** | `SA818U` | `LFCN-180` + `LFCN-490` | 400 – 480 MHz | +| Variante | SA818-Chip | LPF-Bestückung (FL101) | Band | +| -------- | ---------- | ---------------------- | ---- | +| **2 m / VHF** | `SA818V` | `LFCN-180` | 144 – 174 MHz | +| **70 cm / UHF** | `SA818U` | `LFCN-490` | 400 – 480 MHz | + +Es gibt nur **einen einzigen Filter-Footprint** (FL101 — Mini-Circuits FV1206) auf der Platine. Je nach SA818-Bestückung wird das passende LFCN-Bauteil eingelötet. ⚠️ **Wichtig**: SA818-Chip und LPF-Bestückung müssen zueinander passen. Ein falsch bestückter Filter unterdrückt entweder das Nutzband oder lässt zu viele Oberwellen durch → Empfangsperformance schlecht und/oder Verstoß gegen Spektrumvorschriften. @@ -140,7 +142,7 @@ Audio läuft vollständig analog zwischen SA818 und STM32 (DAC/ADC im STM32) — | **USBLC6-2SC6** (U204) | USB-ESD-Schutz auf den D±-Leitungen vor STM32. | | **CAT24C32** (U202) | 32 Kbit (4 KByte) I²C EEPROM. WP-Pin über `JP201`-Lötbrücke konfigurierbar. | | **LMR51430** (U801) | Buck-Konverter 12 V → 5 V für die SA818-Versorgung. | -| **LFCN-160** / **LFCN-180 + LFCN-490** | Mini-Circuits Tiefpassfilter im Antennen-Pfad (Oberwellen-Unterdrückung). Bestückungs-Variante: einer ist aktiv je nach Band. | +| **LFCN-180** *oder* **LFCN-490** (FL101) | Mini-Circuits Tiefpass im Antennen-Pfad (Oberwellen-Unterdrückung). Eines der beiden wird in den FV1206-Footprint bestückt — `LFCN-180` für 2 m, `LFCN-490` für 70 cm. | | **8 MHz Crystal** | Taktquelle für den STM32U575 (Backup zum HSI). | | **Pin Driver** (pin_driver / pin_driver_npn Sub-Sheets) | MOSFET- und NPN-Level-Shifter zwischen STM32-3.3-V-GPIOs und SA818. | From 53aab4289649693ff001f9f55cc333b310e67690 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Wed, 13 May 2026 20:42:31 +0200 Subject: [PATCH 3/3] docs(fm): address Copilot review findings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 7 issues from Copilot's review on PR #14, all valid after schematic + PCB verification: 1. J201 (SWD-Header): 2.54 mm 2x5 horizontal pin header per PCB footprint Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Horizontal, NOT 1.27 mm ARM-Cortex-Debug. Need 2.54 mm SWD adapter or per-pin jumper wires. 2. J202 (Bus-Stecker): PRJ:PCN10C-20S-2.54DS per PCB — the female socket variant. Mates with the male PCN10-20P-2.54DSA pin header that's on the BusBoard. My doc had copy-pasted the BusBoard's male part number, which was wrong for the FM consumer side. 3. STM32 ↔ SA818 GPIO mapping: user's quick-quoted PB values were wrong. Verified against connector_cpu.kicad_sch — STM32U575CITx LQFP-48 pins 18-21 are PB0/PB1/PB2/PB10: PTT GPIO1 ↔ STM32 PB2 (pin 20) ↔ SA818 ~PTT (pin 5) POWER_DN GPIO2 ↔ STM32 PB1 (pin 19) ↔ SA818 ~PD (pin 6) H_L_PWR GPIO3 ↔ STM32 PB10 (pin 21) ↔ SA818 H/L (pin 7) SQUELCH GPIO4 ↔ STM32 PB0 (pin 18) ↔ SA818 ~SQ (pin 1) 4. LFCN filters: already corrected in 4cdeb05 (Copilot reviewed an earlier commit). Single FL101 footprint, LFCN-180 for 2m or LFCN-490 for 70cm. 5. Wording: "Drei Endpoints" → "Drei USB-Interfaces"; UAC2 + CDC ACM each use multiple endpoints, DFU-Runtime usually has no dedicated data endpoint. Calling all three "Endpoints" was technically wrong. 6. Wording: "Echtzeitkritik" (literally "real-time criticism") → "Echtzeit-Anforderungen". 7. Spelling: "an's CM4" → "ans CM4" (correct German contraction). --- doc/index.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/index.md b/doc/index.md index 81f5dcb..da2e819 100644 --- a/doc/index.md +++ b/doc/index.md @@ -21,7 +21,7 @@ FM-Schmalband-Transceiver auf Basis des **SA818**-Moduls für die Amateurfunkbä Zwischen SA818 und CM4 sitzt ein **STM32U575** Mikrocontroller. Er stellt sich am USB als **Composite Device** vor und sieht für das CM4-Linux aus wie: -- **UAC2** (USB Audio Class 2) — TX-Audio strömt vom CM4 als Audio-Sink in den STM32-DAC und von dort als analoges Signal zum SA818-Mic-Input. RX-Audio läuft umgekehrt: SA818-AF_OUT → STM32-ADC → über UAC2 als Audio-Source zurück an's CM4. +- **UAC2** (USB Audio Class 2) — TX-Audio strömt vom CM4 als Audio-Sink in den STM32-DAC und von dort als analoges Signal zum SA818-Mic-Input. RX-Audio läuft umgekehrt: SA818-AF_OUT → STM32-ADC → über UAC2 als Audio-Source zurück ans CM4. - **CDC ACM** (Virtual COM Port) — PTT, Squelch-Read, Frequenz, Power-Level usw. werden vom CM4 als ASCII-Kommandos über `/dev/ttyACM*` gesetzt. - **DFU** (Device Firmware Upgrade) — STM32-Firmware kann über USB neu geflasht werden, ohne SWD-Adapter und ohne BOOT0-Hardware-Jumper. @@ -70,8 +70,8 @@ Es gibt nur **einen einzigen Filter-Footprint** (FL101 — Mini-Circuits FV1206) | Bezeichner | Typ | Funktion | | ---------- | --- | -------- | | **J101** | Board-Edge SMA | Antennenanschluss (50 Ω) | -| **J201** | 10-Pin 1.27 mm SWD (Cortex Debug) | STM32-Programming- und Debug-Header | -| **J202** | 20-Pin (Hirose PCN10-20P-2.54DSA) | Bus-Stecker zum [BusBoard](../HW-Module-BusBoard/) | +| **J201** | 10-Pin 2.54 mm Stiftleiste 2×5 horizontal (right-angle) | STM32-Programming- und Debug-Header (SWD-Pin-Belegung) | +| **J202** | 20-Pin (Hirose **PCN10C-20S-2.54DS** — weibliche Buchse, paart mit dem PCN10-20P-Stift-Header auf dem BusBoard) | Bus-Stecker zum [BusBoard](../HW-Module-BusBoard/) | | **JP201** | 2× Lötpad | EEPROM-Write-Protect-Brücke (siehe „EEPROM" unten) | ### Bus-Stecker J202 (FM-Slot-Sicht) @@ -95,7 +95,7 @@ Hinweis: Pin-Numerierung am FM-Modul ist **gespiegelt** ggü. dem BusBoard-Slot ### STM32 SWD-Header J201 -Standard ARM Cortex Debug 10-Pin (1.27 mm). Passt für ST-Link V2/V3, J-Link, Black Magic Probe. +10-Pin 2.54-mm-Stiftleiste (2×5, right-angle/horizontal). Pin-Belegung folgt der SWD-Konvention, der Stecker selbst ist aber **kein** Cortex-Debug-1.27-mm-Standard — Adapter-Kabel für 2.54 mm benötigt, oder Jumper-Litzen direkt auf die einzelnen Pins. | Pin | Signal | Pin | Signal | |----:|--------|----:|--------| @@ -111,12 +111,12 @@ Standard ARM Cortex Debug 10-Pin (1.27 mm). Passt für ST-Link V2/V3, J-Link, Bl Die STM32-GPIOs steuern das SA818 über Level-Shifter (MOSFET / NPN — `pin_driver` und `pin_driver_npn` Sub-Sheets): -| Funktion | STM32 GPIO-Label | SA818-Pin | Richtung | -| -------- | ---------------- | --------- | -------- | -| **PTT** (Push-to-Talk) | `GPIO1` | `PB2` | STM32 → SA818 | -| **POWER_DOWN** (Modul ein/aus) | `GPIO2` | `PB10` | STM32 → SA818 | -| **H_L_Power** (Sendeleistung high/low) | `GPIO3` | `PB11` | STM32 → SA818 | -| **SQUELCH** (Squelch-Open-Indikator) | `GPIO4` | `PB1` | SA818 → STM32 | +| Funktion | Schaltplan-Label | STM32-Pin (LQFP-48) | SA818-Pin | Richtung | +| -------- | ---------------- | ------------------- | --------- | -------- | +| **PTT** (Push-to-Talk) | `GPIO1` | `PB2` (Pin 20) | `~PTT` (Pin 5) | STM32 → SA818 | +| **POWER_DOWN** (Modul ein/aus) | `GPIO2` | `PB1` (Pin 19) | `~PD` (Pin 6) | STM32 → SA818 | +| **H_L_Power** (Sendeleistung high/low) | `GPIO3` | `PB10` (Pin 21) | `H/L` (Pin 7) | STM32 → SA818 | +| **SQUELCH** (Squelch-Open-Indikator) | `GPIO4` | `PB0` (Pin 18) | `~SQ` (Pin 1) | SA818 → STM32 | Zusätzlich UART auf STM32 USART_TX/USART_RX ↔ SA818 für AT-Kommandos (Frequenz setzen, Modulation, CTCSS, etc. — siehe SA818-Datenblatt). @@ -130,7 +130,7 @@ Die STM32-Firmware (Quelle: [`FW-RemoteStation`](https://github.com/OE5XRX/FW-Re | **CDC ACM** | Kontroll-Pfad | `/dev/ttyACM*` — ASCII-Kommandos für PTT, Squelch-Read, Frequenz, Power-Level. | | **DFU** | Firmware-Update | `dfu-util` kann die STM32-FW über USB neu schreiben — **kein BOOT0-Pin-Eingriff nötig**, die laufende Firmware switcht über CDC-Kommando in den DFU-Mode. | -Audio läuft vollständig analog zwischen SA818 und STM32 (DAC/ADC im STM32) — keine Echtzeitkritik am CM4 nötig, Audio wird als USB-Audio-Stream behandelt. +Audio läuft vollständig analog zwischen SA818 und STM32 (DAC/ADC im STM32) — keine Echtzeit-Anforderungen am CM4-Linux nötig, Audio wird als regulärer USB-Audio-Stream behandelt. ## Auf der Platine verbaute Komponenten @@ -180,7 +180,7 @@ Hinweis: das Modul nutzt sowohl die +12V- *als auch* die +5V-Schiene vom Bus — Nach Bestückung (mit Bus + CM4 verbunden): 1. **Power-Sanity:** Modul in Slot stecken, +12 V anlegen, am Bus-Stecker `+5V`-Pin gegen GND messen → 5.00 ± 0.05 V (LMR51430-Output). `+3V3` (z.B. am SWD-Header J201 Pin 1 vs Pin 3) muss 3.30 ± 0.05 V zeigen. -2. **STM32-Boot:** kurze Latenz nach Power-Up sollte am USB ein Composite Device erscheinen (`lsusb` am CM4). Drei Endpoints: UAC2 (Audio), CDC ACM (Serial), DFU. +2. **STM32-Boot:** kurze Latenz nach Power-Up sollte am USB ein Composite Device erscheinen (`lsusb -v` am CM4). Drei USB-Interfaces sind erwartet: UAC2 (Audio), CDC ACM (Serial), DFU-Runtime. 3. **Soundkarten-Check:** `aplay -L` / `arecord -L` am CM4 → die FM-Module-UAC2-Soundkarte muss in der Liste sein. 4. **CDC-Konsole:** `screen /dev/ttyACM0 115200` (oder welche Nummer auch immer) — Firmware-spezifisches Prompt/Echo erwartet. 5. **SA818-Smoke:** über CDC-Kommando Frequenz setzen, dann mit Funkscanner / SDR auf der eingestellten Frequenz Trägeraussendung kurz testen (5-Sek-Burst max, **mit Antenne!**).