MAISONÀ PROPOS DE NOUSINFORMATIONS SUR L'INDUSTRIE GUIDE PRATIQUE DES TALKIES-WALKIES NUMéRIQUES ESP3...

Guide pratique des talkies-walkies numériques ESP32 personnalisés (3e partie) : Déconstruction du protocole de contrôle série

11

Sep . 2025

Par SDGA:

La clé d'une communication efficace avec le module réside dans la mise en œuvre correcte de son protocole de contrôle série. Ce protocole utilise un format de trame binaire, et toutes les configurations de paramètres et requêtes d'état sont traitées par l'envoi et la réception de trames de données spécifiques.

Analyse de la structure du cadre

Structure de trame du protocole série

Exemple de structure de trame de protocole série

Chaque trame de données suit une structure fixe, composée d'un en-tête, d'une commande, de données et d'une queue, entre autres parties.

Tableau 3 : Structure de la trame du protocole série

Décalage (octets)

Champ

Longueur (octets)

Description

0

Tête

1

En-tête de trame, fixé à 0x68.

1

CMD

1

Mot de commande, définit la fonction de la trame, comme le réglage de la fréquence, l'envoi de SMS, etc.

2

R/W

1

Drapeau de lecture/écriture. 0x00=Lecture, 0x01=Écriture, 0x02=Rapport initié par le module.

3

S/R

1

Indicateur de définition/réponse. Lorsqu'il est envoyé par l'hôte, il s'agit d'une requête de définition ; lorsqu'il est répondu par le module, il s'agit d'un état de réponse.

4-5

CKSUM

2

Somme de contrôle 16 bits. Couvre tous les octets de CMD jusqu'à la fin de DATA.

6-7

LEN

2

Longueur des données du champ DATA (en octets).

8...

DONNÉES

n (déterminé par LEN)

Données utiles. Le contenu spécifique est défini par le CMD.

8+n

QUEUE

1

Queue de cadre, fixée à 0x10.

Méthode de calcul de la somme de contrôle

Selon le protocole, la somme de contrôle est calculée comme suit : chaque paire d'octets des données à vérifier est formée en un nombre de 16 bits, puis additionnée séquentiellement. Si la trame de données est de longueur impaire, 0x00 est ajouté au dernier octet. La partie résiduelle (au-delà de 16 bits) issue du processus d'accumulation est ajoutée aux 16 bits inférieurs du résultat jusqu'à ce que la somme soit inférieure ou égale à 0xFFFF. Enfin, le nombre de 16 bits résultant est XORé avec 0xFFFF pour obtenir la somme de contrôle finale.

Le code C de référence fourni dans le document de protocole est le suivant :

uint16_t PcCheckSum(uint8_t *buf, int16_t len) {
    uint32_t somme = 0;
    tant que (len > 1) {
        somme += 0xFFFF & ((*buf << 8) | *(buf + 1));
        buf += 2;
        len -= 2;
    }
    si (len) {
        somme += (0xFF & *buf) << 8;
    }
    tant que (somme >> 16) {
        somme = (somme & 0xFFFF) + (somme >> 16);
    }
    renvoyer ((uint16_t)somme ^ 0xFFFF);
}


Exemple de flux de calcul de somme de contrôle

Un détail technique notable est que le document du protocole mentionne que si l'utilisateur ne souhaite pas calculer la somme de contrôle, le champ CKSUM peut être envoyé avec la valeur 0x0000, et le module ignorera le processus de somme de contrôle. Cela peut être très utile lors de la phase de débogage initiale, mais pour garantir la fiabilité de la communication, la somme de contrôle correcte doit être implémentée et utilisée dans le produit final.

Référence complète du jeu de commandes

Le tableau suivant catégorise et organise toutes les commandes prises en charge par le module, fournissant une référence plus structurée que la documentation d'origine.

Tableau 4 : Référence complète du code de commande DMR858M (CMD)

CMD (Hex)

Description de la fonction

Prise en charge R/W

Portée

Persistant

Notes

Commandes de configuration (enregistrées lors de la mise hors tension)






0x01

Changer de chaîne

Écrire

Actuel

Oui

Basculer vers la chaîne spécifiée.

0x02

Régler le volume de réception

Écrire

Tous

Oui

Réglez le niveau du volume de sortie audio.

0x0B

Régler le gain du microphone

Écrire

Tous

Oui

Régler la sensibilité du microphone.

0x0C

Définir le mode d'économie d'énergie

Écrire

Tous

Oui

Activer ou désactiver le mode basse consommation.

0x0D

Définir la fréquence TX/RX

Lecture/écriture

Actuel

Oui

Définissez les fréquences de réception et de transmission pour le canal actuel.

0x12

Définir le niveau de silencieux (SQ)

Lecture/écriture

Actuel

Oui

Définissez le seuil de silencieux pour le mode analogique.

0x13

Définir le mode CTCSS/CDCSS

Lecture/écriture

Actuel

Oui

Définissez le mode sous-audio (par exemple, recevoir uniquement, transmettre uniquement, les deux).

0x14

Définir la valeur CTCSS/CDCSS

Lecture/écriture

Actuel

Oui

Définissez le code sous-audio spécifique.

0x17

Régler la puissance haute/basse

Lecture/écriture

Actuel

Oui

Changez la puissance de transmission pour le canal actuel.

Commandes opérationnelles (en vigueur immédiatement)






0x03

Balayage

Écrire

Actuel

Non

Démarrer ou arrêter la recherche des chaînes.

0x06

Lancer un appel

Écrire

Actuel

Non

Lancer un appel de groupe ou privé.

0x07

Envoyer des SMS

Écrire

Actuel

Non

Envoyer un SMS DMR.

0x09

Alarme d'urgence

Écrire

Actuel

Non

Déclencher la fonction d'alarme d'urgence.

0x15

Commutateur de moniteur

Écrire

Actuel

Non

Forcer l'ouverture du silencieux pour surveiller l'activité du canal.

Commandes de requête d'état






0x04

Vérifier l'état TX/RX

Lire

Actuel

Non

Demandez si le module est en état de réception, de transmission ou d'inactivité.

0x05

Lire la force du signal

Lire

Actuel

Non

Obtenez la valeur RSSI du signal reçu actuel.

0x24

Lire l'ID

Lire

Tous

Non

Lisez l'ID DMR du module.

0x25

Lire la version du micrologiciel

Lire

Tous

Non

Lisez le numéro de version du firmware du module.

0x28

Vérifier l'état de cryptage

Lire

Actuel

Non

Demande si le cryptage est activé sur le canal actuel.



Guide pratique des talkies-walkies numériques ESP32 personnalisés


Partie 1 : Analyse approfondie du module DMR858M

Partie 2 : Intégration matérielle et conception de référence

Partie 3 : Déconstruction du protocole de contrôle série

Partie 4 : Développement du micrologiciel et conception des pilotes

Partie 5 : Exploration des fonctionnalités avancées et conclusion


Contactez-nous

 +86-755-23080616

 sales@nicerf.com

Site Internet : https://www.nicerf.com/

Adresse : 309-314, 3/F, bâtiment A, bâtiment commercial de Hongdu, zone 43, Baoan Dist, Shenzhen, Chine

Contactez-nous
politique de confidentialité

politique de confidentialité

· Politique de confidentialité

Il n'y a actuellement aucun contenu disponible


           

Courriel : sales@nicerf.com

Tél : +86-755-23080616

Adresse : 309-314, 3/F, bâtiment A, bâtiment commercial de Hongdu, zone 43, Baoan Dist, Shenzhen, Chine


×