HEIMÜBER UNSBRANCHENINFORMATIONEN EIN PRAKTISCHER LEITFADEN FüR BENUTZERDEFINIERTE D...

Ein praktischer Leitfaden für benutzerdefinierte digitale ESP32-Walkie-Talkies (Teil 3): Dekonstruktion des seriellen Steuerungsprotokolls

11

Sep . 2025

Von sdga:

Der Schlüssel zur effektiven Kommunikation mit dem Modul liegt in der korrekten Implementierung des seriellen Steuerprotokolls. Dieses Protokoll verwendet ein binäres Frame-Format, und alle Parameterkonfigurationen und Statusabfragen werden durch das Senden und Empfangen spezifischer Datenframes durchgeführt.

Rahmenstrukturanalyse

Serielle Protokollrahmenstruktur

Beispiel für eine serielle Protokollrahmenstruktur

Jeder Datenrahmen folgt einer festen Struktur, die unter anderem aus Header, Befehl, Daten und Tail besteht.

Tabelle 3: Rahmenstruktur des seriellen Protokolls

Offset (Bytes)

Feld

Länge (Bytes)

Beschreibung

0

Kopf

1

Frame-Header, festgelegt auf 0x68.

1

CMD

1

Befehlswort, definiert die Funktion des Frames, wie z. B. Frequenz einstellen, SMS senden usw.

2

R/W

1

Lese-/Schreibflag. 0x00=Lesen, 0x01=Schreiben, 0x02=Modulinitiierter Bericht.

3

S/R

1

Set/Response-Flag. Wenn es vom Host gesendet wird, handelt es sich um eine Set-Anforderung. Wenn es vom Modul beantwortet wird, handelt es sich um einen Antwortstatus.

4-5

CKSUM

2

16-Bit-Prüfsumme. Deckt alle Bytes von CMD bis zum Ende von DATA ab.

6-7

LEN

2

Datenlänge des DATA-Feldes (in Bytes).

8...

DATEN

n (bestimmt durch LEN)

Datennutzlast. Der spezifische Inhalt wird durch das CMD definiert.

8+n

SCHWANZ

1

Rahmenende, auf 0x10 festgelegt.

Prüfsummenberechnungsmethode

Laut Protokolldokument wird die Prüfsumme wie folgt berechnet: Jedes Bytepaar der zu prüfenden Daten wird zu einer 16-Bit-Zahl zusammengefasst und anschließend sequentiell addiert. Bei ungeraden Datenrahmenlängen wird an das letzte Byte 0x00 angehängt. Der über 16 Bit hinausgehende Übertrag aus dem Akkumulationsprozess wird zu den unteren 16 Bit des Ergebnisses addiert, bis die Summe kleiner oder gleich 0xFFFF ist. Abschließend wird die resultierende 16-Bit-Zahl mit 0xFFFF XOR-verknüpft, um die endgültige Prüfsumme zu erhalten.

Der im Protokolldokument angegebene Referenz-C-Code lautet wie folgt:

uint16_t PcCheckSum(uint8_t *buf, int16_t len) {
    uint32_t Summe = 0;
    während (len > 1) {
        Summe += 0xFFFF & ((*buf << 8) | *(buf + 1));
        buf += 2;
        len -= 2;
    }
    wenn (len) {
        Summe += (0xFF & *buf) << 8;
    }
    während (Summe >> 16) {
        Summe = (Summe & 0xFFFF) + (Summe >> 16);
    }
    return ((uint16_t)Summe ^ 0xFFFF);
}


Beispiel für den Ablauf der Prüfsummenberechnung

Ein bemerkenswertes technisches Detail ist, dass im Protokolldokument erwähnt wird, dass, wenn der Benutzer die Prüfsumme nicht berechnen möchte, das CKSUM-Feld als 0x0000 gesendet werden kann und das Modul den Prüfsummenprozess ignoriert. Dies kann in der anfänglichen Debugging-Phase sehr nützlich sein, aber aus Gründen der Kommunikationszuverlässigkeit sollte die korrekte Prüfsumme implementiert und im Endprodukt verwendet werden.

Vollständige Befehlssatzreferenz

Die folgende Tabelle kategorisiert und organisiert alle vom Modul unterstützten Befehle und bietet eine strukturiertere Referenz als die Originaldokumentation.

Tabelle 4: DMR858M-Befehlscode (CMD) – Vollständige Referenz

CMD (Hex)

Funktionsbeschreibung

R/W-Unterstützung

Umfang

Hartnäckig

Hinweise

Konfigurationsbefehle (beim Ausschalten gespeichert)






0x01

Kanal wechseln

Schreiben

Aktuell

Ja

Wechseln Sie zum angegebenen Kanal.

0x02

Empfangslautstärke einstellen

Schreiben

Alle

Ja

Stellen Sie die Lautstärke der Audioausgabe ein.

0x0B

Mikrofonverstärkung einstellen

Schreiben

Alle

Ja

Passen Sie die Mikrofonempfindlichkeit an.

0x0C

Energiesparmodus einstellen

Schreiben

Alle

Ja

Aktivieren oder deaktivieren Sie den Energiesparmodus.

0x0D

TX/RX-Frequenz einstellen

Lesen/Schreiben

Aktuell

Ja

Stellen Sie die Empfangs- und Sendefrequenzen für den aktuellen Kanal ein.

0x12

Squelch-Pegel (SQ) einstellen

Lesen/Schreiben

Aktuell

Ja

Stellen Sie den Squelch-Schwellenwert für den Analogmodus ein.

0x13

CTCSS/CDCSS-Modus einstellen

Lesen/Schreiben

Aktuell

Ja

Stellen Sie den Sub-Audiomodus ein (z. B. nur empfangen, nur senden, beides).

0x14

CTCSS/CDCSS-Wert festlegen

Lesen/Schreiben

Aktuell

Ja

Stellen Sie den spezifischen Sub-Audiocode ein.

0x17

Hohe/niedrige Leistung einstellen

Lesen/Schreiben

Aktuell

Ja

Schalten Sie die Sendeleistung für den aktuellen Kanal um.

Einsatzkommandos (mit sofortiger Wirkung)






0x03

Scan

Schreiben

Aktuell

NEIN

Starten oder stoppen Sie die Kanalsuche.

0x06

Anruf einleiten

Schreiben

Aktuell

NEIN

Starten Sie einen Gruppen- oder Privatanruf.

0x07

SMS senden

Schreiben

Aktuell

NEIN

Senden Sie eine DMR-Textnachricht.

0x09

Notfallalarm

Schreiben

Aktuell

NEIN

Lösen Sie die Notfallalarmfunktion aus.

0x15

Monitorschalter

Schreiben

Aktuell

NEIN

Öffnen Sie die Rauschsperre zwangsweise, um die Kanalaktivität zu überwachen.

Statusabfragebefehle






0x04

TX/RX-Status prüfen

Lesen

Aktuell

NEIN

Abfrage, ob sich das Modul im Empfangs-, Sende- oder Leerlaufzustand befindet.

0x05

Signalstärke ablesen

Lesen

Aktuell

NEIN

Holen Sie sich den RSSI-Wert des aktuell empfangenen Signals.

0x24

ID lesen

Lesen

Alle

NEIN

Lesen Sie die DMR-ID des Moduls.

0x25

Firmware-Version lesen

Lesen

Alle

NEIN

Lesen Sie die Firmware-Versionsnummer des Moduls.

0x28

Überprüfen Sie den Verschlüsselungsstatus

Lesen

Aktuell

NEIN

Abfrage, ob die Verschlüsselung auf dem aktuellen Kanal aktiviert ist.



Ein praktischer Leitfaden zur benutzerdefinierten digitalen ESP32-Walkie-Talkie-Serie


Teil 1: Detaillierte Analyse des DMR858M-Moduls

Teil 2: Hardwareintegration und Referenzdesign

Teil 3: Dekonstruktion des Serial Control Protocol

Teil 4: Firmware-Entwicklung und Treiberdesign

Teil 5: Erweiterte Funktionen und Schlussfolgerung


Kontaktieren Sie uns

 +86-755-23080616

 sales@nicerf.com

Website: https://www.nicerf.com/

Adresse: 309-314, 3/F, Gebäude A, Hongdu-Geschäftsgebäude, Zone 43, Baoan Dist, Shenzhen, China

Kontaktieren Sie uns
Datenschutzrichtlinie

Datenschutzrichtlinie

· Datenschutzrichtlinie

Derzeit sind keine Inhalte verfügbar


           

E-Mail: sales@nicerf.com

Tel.:+86-755-23080616

Adresse: 309-314, 3/F, Gebäude A, Hongdu-Geschäftsgebäude, Zone 43, Baoan Dist, Shenzhen, China


×