LARSOBRE NóSINFORMAçõES DA INDúSTRIA UM GUIA PRáTICO PARA WALKIE-TALKIES DIGITAIS ESP32...

Um guia prático para walkie-talkies digitais ESP32 personalizados (parte 3): desconstruindo o protocolo de controle serial

11

Sep . 2025

Por SDGA:

A chave para uma comunicação eficaz com o módulo é implementar corretamente seu protocolo de controle serial. Este protocolo utiliza um formato de quadro binário, e todas as configurações de parâmetros e consultas de status são realizadas enviando e recebendo quadros de dados específicos.

Análise de Estrutura de Quadro

Estrutura do quadro do protocolo serial

Exemplo de estrutura de quadro de protocolo serial

Cada quadro de dados segue uma estrutura fixa, consistindo de um cabeçalho, comando, dados e cauda, ​​entre outras partes.

Tabela 3: Estrutura do quadro do protocolo serial

Deslocamento (Bytes)

Campo

Comprimento (Bytes)

Descrição

0

Cabeça

1

Cabeçalho do quadro, fixado em 0x68.

1

CMD

1

Palavra de comando, define a função do quadro, como definir frequência, enviar SMS, etc.

2

Direito/O

1

Sinalizador de leitura/gravação. 0x00=Leitura, 0x01=Gravação, 0x02=Relatório iniciado pelo módulo.

3

S/R

1

Sinalizador de configuração/resposta. Quando enviado pelo host, é uma solicitação de configuração; quando respondido pelo módulo, é um status de resposta.

4-5

CKSUM

2

Soma de verificação de 16 bits. Abrange todos os bytes de CMD até o final de DATA.

6-7

LEN

2

Comprimento dos dados do campo DATA (em bytes).

8...

DADOS

n (determinado por LEN)

Carga útil de dados. O conteúdo específico é definido pelo CMD.

8+n

CAUDA

1

Cauda do quadro, fixada em 0x10.

Método de cálculo de soma de verificação

De acordo com o documento do protocolo, a soma de verificação é calculada da seguinte forma: cada par de bytes nos dados a serem verificados é formado em um número de 16 bits e, em seguida, somado sequencialmente. Se o quadro de dados tiver um comprimento ímpar, 0x00 é anexado ao último byte. A parte remanescente (excedendo 16 bits) do processo de acumulação é adicionada novamente aos 16 bits inferiores do resultado até que a soma seja menor ou igual a 0xFFFF. Por fim, o número de 16 bits resultante é submetido a uma operação XOR com 0xFFFF para obter a soma de verificação final.

O código C de referência fornecido no documento do protocolo é o seguinte:

uint16_t PcCheckSum(uint8_t *buf, int16_t len) {
    uint32_t soma = 0;
    enquanto (len > 1) {
        soma += 0xFFFF & ((*buf << 8) | *(buf + 1));
        buf += 2;
        len -= 2;
    }
    se (len) {
        soma += (0xFF & *buf) << 8;
    }
    enquanto (soma >> 16) {
        soma = (soma & 0xFFFF) + (soma >> 16);
    }
    retornar ((uint16_t)soma ^ 0xFFFF);
}


Exemplo de fluxo de cálculo de soma de verificação

Um detalhe de engenharia digno de nota é que o documento do protocolo menciona que, se o usuário não quiser calcular o checksum, o campo CKSUM pode ser enviado como 0x0000, e o módulo ignorará o processo de checksum. Isso pode ser muito útil durante a fase inicial de depuração, mas, para garantir a confiabilidade da comunicação, o checksum correto deve ser implementado e usado no produto final.

Referência completa do conjunto de comandos

A tabela a seguir categoriza e organiza todos os comandos suportados pelo módulo, fornecendo uma referência mais estruturada do que a documentação original.

Tabela 4: Referência completa do código de comando (CMD) do DMR858M

CMD (Hexadecimal)

Descrição da função

Suporte R/W

Escopo

Persistente

Notas

Comandos de configuração (salvos ao desligar)






0x01

Mudar de canal

Escrever

Atual

Sim

Muda para o canal especificado.

0x02

Definir volume de recepção

Escrever

Todos

Sim

Defina o nível de volume da saída de áudio.

0x0B

Definir ganho do microfone

Escrever

Todos

Sim

Ajuste a sensibilidade do microfone.

0x0C

Definir modo de economia de energia

Escrever

Todos

Sim

Ativar ou desativar o modo de baixo consumo de energia.

0x0D

Definir frequência TX/RX

Ler/Escrever

Atual

Sim

Defina as frequências de recepção e transmissão para o canal atual.

0x12

Definir nível de silenciador (SQ)

Ler/Escrever

Atual

Sim

Defina o limite de silenciador para o modo analógico.

0x13

Definir modo CTCSS/CDCSS

Ler/Escrever

Atual

Sim

Defina o modo de subáudio (por exemplo, somente recepção, somente transmissão, ambos).

0x14

Definir valor CTCSS/CDCSS

Ler/Escrever

Atual

Sim

Defina o código de subáudio específico.

0x17

Definir potência alta/baixa

Ler/Escrever

Atual

Sim

Alterne a potência de transmissão para o canal atual.

Comandos Operacionais (Efetivos Imediatamente)






0x03

Digitalizar

Escrever

Atual

Não

Iniciar ou parar a varredura de canais.

0x06

Iniciar chamada

Escrever

Atual

Não

Inicie uma chamada em grupo ou privada.

0x07

Enviar SMS

Escrever

Atual

Não

Envie uma mensagem de texto DMR.

0x09

Alarme de emergência

Escrever

Atual

Não

Acione a função de alarme de emergência.

0x15

Interruptor de monitor

Escrever

Atual

Não

Force a abertura do silenciador para monitorar a atividade do canal.

Comandos de consulta de status






0x04

Verificar status TX/RX

Ler

Atual

Não

Consultar se o módulo está em estado de recepção, transmissão ou inativo.

0x05

Ler a intensidade do sinal

Ler

Atual

Não

Obtenha o valor RSSI do sinal recebido atual.

0x24

Ler ID

Ler

Todos

Não

Leia o ID DMR do módulo.

0x25

Ler versão do firmware

Ler

Todos

Não

Leia o número da versão do firmware do módulo.

0x28

Verificar status de criptografia

Ler

Atual

Não

Consultar se a criptografia está habilitada no canal atual.



Um guia prático para a série de walkie-talkies digitais ESP32 personalizados


Parte 1: Análise aprofundada do módulo DMR858M

Parte 2: Integração de Hardware e Design de Referência

Parte 3: Desconstruindo o Protocolo de Controle Serial

Parte 4: Desenvolvimento de firmware e design de driver

Parte 5: Explorando recursos avançados e conclusão


Contate-nos

 +86-755-23080616

 vendas@nicerf.com

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

Endereço: 309-314, 3/F, Bldg A, edifício comercial Hongdu, Zona 43, Baoan Dist, Shenzhen, China

Contate-nos
política de Privacidade

política de Privacidade

· Política de Privacidade

No momento não há conteúdo disponível


           

E-mail: sales@nicerf.com

Tel:+86-755-23080616

Endereço:309-314, 3/F, Bldg A, edifício comercial Hongdu, Zona 43, Baoan Dist, Shenzhen, China


×