Por que apenas dados de 20 bytes podem ser enviados por vez no BLE

Ao trabalhar em projetos relacionados ao Bluetooth, estima-se que muitas pessoas estejam curiosas sobre por que um máximo de 20 bytes de dados é enviado por vez. Sem mais delongas, a imagem acima primeiro e a imagem abaixo mostram a estrutura do pacote de dados Bluetooth transmissão. A parte vermelha é o tamanho final do pacote que enviamos (no estado Notificar).

Sem título-1.png

Antes de começar, deixe-me mencionar a diferença entre Octet e Byte, embora ambos possam ser traduzidos em bytes. Octeto é um grupo de octetos. Nos primórdios do desenvolvimento do TCP/IP, o Byte usado por algumas estruturas de sistema era de 10 bits.

Introdução aos pacotes de broadcast

cabeçalho do pacote de transmissão

imagem.png parte do cabeçalho

  1. A cabeça tem principalmente 1 octeto.
  2. tipo de PDU
  3. RFU é reservado
  4. Segmento de endereço de envio TxAdd
  5. RxAdd aceita o segmento de endereço

parte do comprimento

  1. O comprimento é principalmente 1 octeto.
  2. 6 octeto é o comprimento e o valor é 6-37 (o pacote de transmissão tem um endereço de dispositivo de 6 octetos no final, portanto, tem pelo menos 6 bits).

Para os 37 bytes aqui, meu palpite é o seguinte, não sei se está correto, para ser compatível com os dados de 5 bits no PUD de dados com comprimento de 31 octetos, mais o endereço do dispositivo que deve ser adicionado por 6octeto.

seção de dados de transmissão

Os dados são divididos em dados válidos e dados inválidos (preenchidos com 0) + endereço do dispositivo de 6 octetos. As estruturas de dados válidas são as seguintes

imagem.png

  1. A parte de dados válida consiste em várias estruturas do AD
  2. 1 AD Estrutura consiste em 1 octct comprimento e dados (Length)
  3. os dados consistem em tipo AD (n octct) e dados AD (Comprimento - n)

dados PDU

cabeça

imagem.png

  1. Comprimento é de 5 dígitos 0-31octct, o máximo é 31octet
  2. Subtraia o MIC de 4 octetos 31-4 = 27 octetos é o comprimento da carga útil.

Camada de Enlace L2CAP

imagem.png

27 - 2 - 2 = 23 octetos

notificar

imagem.png

23 - 1 - 2 = 20 octetos.

Acho que você gosta

Origin juejin.im/post/7206577654933651516
Recomendado
Clasificación