Sobre o ZigBee Ezsp Uart

Autor: Torchiotbootcamp
Link : https: //zhuanlan.zhihu.com/p/339700391
De : Quora

1. Introdução

O Silicon Labs ofereceu uma solução de host+NCP para o ZigBee Gateway Design. Nesta arquitetura, o host pode se comunicar com o NCP através da interface UART ou SPI. Mais comumente, o UART é usado, pois é muito mais simples que o SPI.

O Silicon Labs também forneceu um projeto de amostra para o programa host, que é a amostraZ3GatewayHost. A amostra é executada em um sistema semelhante ao UNIX. Alguns clientes podem querer uma amostra de host que possa ser executada em um RTOS, mas, infelizmente, não há amostra de host baseada em RTOs por enquanto. Os usuários precisam desenvolver seu próprio programa host com base no RTOS.

É importante entender o protocolo UART Gateway antes de desenvolver um programa de host personalizado. Para o NCP baseado em UART e o NCP baseado em SPI, o host usa o protocolo EZSP para se comunicar com o NCP.Ezspé curto paraProtocolo serial do Emberznet, e está definido emUG100. Para o NCP baseado em UART, um protocolo de camada inferior é implementado para transportar dados EZSP de maneira confiável sobre UART, esse é oCINZASprotocolo, abreviação deHost em série assíncrono. Para mais detalhes sobre Ash, consulteUG101eUG115.

A relação entre EZSP e Ash pode ser ilustrada pelo seguinte diagrama:

1

O formato de dados do EZSP e do protocolo Ash pode ser ilustrado pelo seguinte diagrama:

2

Nesta página, apresentaremos o processo de enquadrar os dados UART e alguns quadros -chave que são frequentemente usados ​​no gateway ZigBee.

2. Estrutura

O processo de estrutura geral pode ser ilustrado pelo gráfico a seguir:

3

Neste gráfico, os dados significam o quadro EZSP. Em geral, os processos de enquadramento são: | não | Etapa | Referência |

|:-|:-|:-|

| 1 | Preencha o quadro EZSP | UG100 |

| 2 | Randomização de dados | Seção 4.3 do UG101 |

| 3 | Adicione o byte de controle | Chap2 e Chap3 de UG101 |

| 4 | Calcule o CRC | Seção 2.3 do UG101 |

| 5 | Atuamento de byte | Seção 4.2 do UG101 |

| 6 | Adicione a bandeira final | Seção 2.4 do UG101 |

2.1. Preencha o quadro EZSP

O formato do quadro EZSP é ilustrado no Cap 3 do UG100.

4

Preste atenção que esse formato pode mudar quando o SDK atualizar. Quando o formato mudar, daremos um novo número de versão. O número mais recente da versão EZSP é 8 quando este artigo é escrito (Emberznet 6.8).

Como o formato do quadro EZSP pode ser diferente entre versões diferentes, há um requisito obrigatório de que o host e o NCPDEVETrabalhe com a mesma versão EZSP. Caso contrário, eles não podem se comunicar como esperado.

Para conseguir isso, o primeiro comando entre o host e o NCP deve ser o comando da versão. Em outras palavras, o host deve recuperar a versão EZSP do NCP antes de qualquer outra comunicação. Se a versão EZSP for diferente com a versão EZSP do lado do host, a comunicação deverá ser abortada.

O requisito implícito por trás disso é que o formato do comando da versão possaNunca mude. O formato de comando da versão ezsp é como abaixo:

5

As explicações do campo Parâmetro e o formato da resposta da versão podem ser encontradas no Cap 4 do UG100. O campo Parâmetro é a versão EZSP do programa host. Quando este artigo é escrito, são 8.
7
作者: TorchiotBootcamp
链接: https: //zhuanlan.zhihu.com/p/339700391
来源: 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。

2.2. Randomização de dados

O processo de randomização detalhado é descrito na Seção 4.3 do UG101. Todo o quadro EZSP será randomizado. A randomização é para exclusiva ou o quadro EZSP e uma sequência pseudo-aleatória.

Abaixo está o algoritmo de geração da sequência pseudo-aleatória.

  • rand0 = 0 × 42
  • Se o bit 0 de Randi for 0, Randi+1 = Randi >> 1
  • Se o bit 0 de Randi for 1, Randi+1 = (Randi >> 1) ^ 0xb8

2.3. Adicione o byte de controle

O byte de controle é um dados de um byte e deve ser adicionado à cabeça do quadro. O formato é ilustrado com a tabela abaixo:

6

Totalmente, existem 6 tipos de bytes de controle. Os três primeiros são usados ​​para quadros comuns com dados EZSP, incluindo dados, ACK e NAK. Os três últimos são usados ​​sem dados EZSP comuns, incluindo RST, RSTack e Erro.

O formato do primeiro, o rstack e o erro são descritos na Seção 3.1 a 3.3.

2.4. Calcule o CRC

Um CRC de 16 bits é calculado em bytes do byte de controle até o final dos dados. O CRCCCITT padrão (g (x) = x16 + x12 + x5 + 1) é inicializado em 0xffff. O byte mais significativo precede o byte menos significativo (modo Big-Endian).

2.5. Recheio de byte

Conforme descrito na Seção 4.2 do UG101, existem alguns valores de bytes reservados usados ​​para fins especiais. Esses valores podem ser encontrados na tabela a seguir:

7

Quando esses valores aparecerem no quadro, um tratamento especial será feito com os dados. - Insira o byte de fuga 0x7D em frente ao byte reservado - inverta o bit5 desse byte reservado

Abaixo estão alguns exemplos deste algoritmo:

8

2.6. Adicione a bandeira final

A etapa final é adicionar o sinalizador final 0x7e ao final do quadro. Depois disso, os dados podem ser enviados para a porta UART.

3. Processo de descamação

Quando os dados são recebidos do UART, só precisamos fazer as etapas reversas para decodificá -los.

4. Referências


Horário de postagem: Feb-08-2022
Whatsapp Online Chat!