Análise do protocolo UART

1. Base do acordo

1.1. Introdução ao Acordo

UART é “Receptor/Transmissor Assíncrono Universal”, abreviação de Transceptor Assíncrono Universal. Na década de 1860, para resolver o problema da comunicação entre computadores e teletipos, Bell inventou o protocolo UART, que converte sinais de entrada paralela em sinais de saída serial. Devido à sua natureza simples e prática, o UART tornou-se um protocolo de comunicação muito utilizado. As portas seriais que estamos expostos diariamente, RS232, RS485 e outros barramentos, o uso interno é basicamente o protocolo UART.

Para entender e analisar melhor a relação entre protocolos e barramentos, geralmente dividimos uma especificação de comunicação completa em camadas físicas, camadas de protocolo e camadas de aplicação. A camada física define apenas as características reais do sinal (como tensão, corrente, capacidade de acionamento, etc.), e a correspondência entre o sinal elétrico e o sinal lógico 0 e 1; A camada de protocolo não se preocupa com como os 0s e 1s subjacentes são implementados, mas apenas especifica as especificações de protocolo dos sinais lógicos e do processo de comunicação (como início, dados e fim, etc.); A camada de aplicação não se preocupa com a forma como os dados são obtidos, mas apenas define o significado da representação dos dados e como implementar a lógica de negócios específica.

A aplicação mais simples do protocolo UART, normalmente a camada física necessita apenas de duas linhas de transmissão, uma para transmissão e outra para recepção, conseguindo assim a comunicação full-duplex. Para transmissões unidirecionais, você também pode usar apenas uma linha de transmissão. O exemplo mais típico de tal aplicação são as portas RX/TX do microcontrolador conectadas umas às outras, permitindo a comunicação UART baseada em nível TTL. Para diferentes distâncias de transmissão e requisitos de confiabilidade, a substituição de diferentes implementações de camada física pode obter nosso RS232, RS485 e outros barramentos de comunicação comuns.

1.2. Diferentes implementações de camada física

Como a entrada para a camada de protocolo UART é um sinal lógico 0/1, o sinal lógico 0/1 pode ser distinguido por diferentes padrões de nível na camada física. Para diferentes necessidades de comunicação, diferentes camadas físicas podem ser usadas. Por exemplo, comunicação on-board simples ou cenários comuns de depuração de dispositivos, a comunicação do protocolo UART entre dois dispositivos pode ser realizada usando um nível LVTTL/TTL simples.

A porta serial universal usa o nível RS232, que pode aumentar a distância de transmissão e resistir a um certo grau de interferência de sinal. O custo é que o chip de tradução de nível correspondente é necessário na camada física para alcançar, o transmissor precisa converter o sinal interno de alto e baixo nível em um sinal de tensão +/- de tensão mais alta e a extremidade receptora precisa converter o sinal +/ - sinal de tensão em um sinal interno de alto e baixo nível.

No caso da comunicação industrial, para melhorar ainda mais a distância de transmissão e aumentar a confiabilidade do sinal, geralmente é usado o padrão de nível RS485. Os sinais comuns de alto e baixo nível são convertidos em um par de sinais diferenciais na extremidade de transmissão, e os sinais diferenciais são convertidos em sinais comuns de alto e baixo nível na extremidade de recepção. Além disso, o RS485 permite que até 128 transceptores sejam conectados no barramento, enquanto TTL ou RS232 são conexões ponto a ponto.

1.2.1. Comunicação UART baseada em TTL

A comunicação UART baseada em TTL é o caso de uso mais simples para aplicativos de protocolo UART. Ou seja, os níveis alto e baixo da saída de E/S digital são transmitidos diretamente como o sinal físico real. Em termos de conexão física, apenas o dispositivo precisa ser um aterramento comum, e a comunicação do dispositivo unidirecional pode ser concluída por meio de uma linha de sinal. Se for necessário full duplex bidirecional, duas linhas de sinal são usadas.

Para comparar as diferenças na implementação de diferentes camadas físicas, podemos observar como os sinais reais de diferentes camadas físicas diferem quando os mesmos dados são enviados. Aqui, tomando o caractere de transmissão 'D' como exemplo, através do osciloscópio de pedra, observe diretamente o sinal transmitido pelo TTL (o terminal de aterramento da ponta de prova é conectado ao terminal de terra comum do dispositivo, e o terminal de sinal da ponta de prova é conectado ao a linha de sinal azul na figura acima), e a forma de onda do sinal mostrada na Figura 1-4 pode ser obtida. Como pode ser visto na forma de onda, quando não há transmissão de dados, o sinal UART permanecerá em um nível alto (a amplitude específica do sinal é determinada pela tensão de alimentação da E/S), o sinal saltará durante a transmissão de dados , e o sinal retornará ao estado de alto nível ocioso após a conclusão da transmissão.

1.2.2. Comunicação UART baseada em RS232

Para aumentar a capacidade do drive para aumentar a distância e a confiabilidade da transmissão, o barramento RS232 usa um sinal de tensão bipolar para transmissão física. Antes de o sinal ser enviado/recebido, o sinal interno e o sinal de barramento são convertidos um para o outro por meio de um chip de deslocamento de nível. O método de conexão é exatamente o mesmo do nível TTL, e toda a camada física é apenas mais uma camada de tradução de nível.

Também usando o caractere de transmissão 'D' como exemplo, a ponta de prova do osciloscópio Pushi é conectada à extremidade do sinal e a forma de onda real mostrada na Figura 1-6 pode ser capturada. Pode-se observar que a forma de onda RS232 é de tensão negativa quando inativa, e quando há transmissão de dados, o sinal começa a saltar entre tensões positivas e negativas, e retorna ao estado de tensão negativa inativa após a conclusão da transmissão.

1.2.3. Comunicação UART baseada em RS485

O RS485 foi projetado para ambientes industriais complexos, e a maior característica do barramento RS485 é o uso de transmissão de sinal diferencial em comparação com as camadas físicas de outros protocolos UART. Antes que o sinal seja enviado, o sinal de terminação única é convertido em um sinal diferencial pelo transceptor de RS485 e, em seguida, enviado ao barramento para transmissão; Também antes de receber, o sinal diferencial no barramento é convertido pelo transceptor em um sinal de terminação única e então enviado ao controlador UART para recepção. No barramento RS485, são necessários dois pares de linhas de sinal diferencial (ou seja, 4 linhas de sinal) para comunicação bidirecional full-duplex. Se for realizada apenas comunicação bidirecional half-duplex, será necessário apenas um par de sinais diferenciais.

Novamente, usando o caractere de transmissão 'D' como exemplo, a forma de onda real mostrada na Figura 1-8 pode ser adquirida usando duas pontas de prova de canal (comumente referenciadas) das pontas de prova do osciloscópio Pushi, que são conectadas às extremidades A/B de um dos sinais diferenciais. Pode-se ver que a forma de onda na extremidade A/B é complementar. A forma de onda do terminal A é lógica direta (tensão positiva quando inativa) e a forma de onda do terminal B é lógica reversa (tensão negativa quando inativa).

2. Especificações do protocolo

2.1. Estrutura do quadro UART

Na introdução da seção anterior, observamos a forma de onda UART real através do osciloscópio de pedra, então como exatamente essa forma de onda é reconhecida com precisão como o caractere 'D' e não outra coisa? Isso envolve a definição da estrutura do quadro do protocolo UART. Conforme mostrado na Figura 2-1:

Quando dois dispositivos precisam se comunicar por meio do protocolo UART, eles precisam concordar com o seguinte ao mesmo tempo:

  • Duração do tempo por sinal T (taxa de transmissão = 1/T)
  • O número específico de bits em cada item na estrutura do quadro
  • Se existe um dígito de verificação e o mecanismo do dígito de verificação (ímpar/par/…). )

Com essas convenções, o dispositivo receptor precisa apenas aguardar a chegada do bit inicial e, em seguida, amostrar a forma de onda subsequente em intervalos regulares para obter as informações específicas transmitidas. Tomando como exemplo a forma de onda do caractere 'D', o processo de resolução é mostrado na Figura 2-2:

2.1.1. Taxa de transmissão

A taxa de transmissão é um conceito muito importante do protocolo UART, ou de todos os protocolos seriais assíncronos, ou seja, o número de bits que podem ser representados por unidade de tempo (1 segundo), ou também pode ser expresso como o recíproco da largura de bits . Por exemplo, uma forma de onda UART com uma taxa de transmissão de 115200 significa que ela pode acomodar 115200 bits por segundo, o que significa que cada bit de dados representa cerca de 8.68uS de tempo.

Os protocolos seriais assíncronos como o UART, para simplificar a conexão física dos sinais e reduzir os custos de comunicação, geralmente possuem apenas uma linha de sinal, não podendo transmitir dados e sinais de clock ao mesmo tempo. Para que o transceptor/dispositivo transmissor resolva corretamente a forma de onda, ele precisa estar na mesma configuração de taxa de transmissão. A mesma forma de onda usando diferentes taxas de transmissão pode obter informações completamente diferentes. Para o dispositivo receptor, apenas o bit inicial pode ser usado como ponto de sincronização de um quadro de dados, e os outros dados são determinados pela taxa de transmissão para determinar o local de amostragem específico.

Novamente, usando a forma de onda do caractere 'D' como exemplo, conforme mostrado na Figura 2-4, se for recebido na taxa de transmissão errada, você poderá obter informações de dados completamente erradas.

2.1.2. Bits inativos

Quando os dados não são transferidos entre dispositivos, um nível alto sustentado indica inatividade. Quanto maior a duração do bit ocioso e quanto maior o intervalo entre dois quadros de dados, menos dados são transmitidos por unidade de tempo.

2.1.3. Bit de início

O receptor UART sempre detectará a mudança de nível na linha de sinal e, quando os dados forem transmitidos, o remetente puxará a linha de sinal do nível alto até o final do nível baixo para o estado ocioso e manterá um pouco de tempo. Quando o receptor detecta uma mudança de nível alto-baixo, ele começa a receber sinais.

2.1.4. Bits de dados

O bit de dados contém os dados reais transmitidos, que têm de 5 a 8 bits se a paridade for usada e de 5 a 9 bits se a paridade não for usada. Em geral, os bits de dados são de 8 bits e os dados são enviados primeiro do bit menos significativo, com os bits mais altos em segundo.

2.1.5. Verificar dígitos

Os dígitos de verificação podem ser usados ​​para melhorar a confiabilidade da transmissão. Se o sinal estiver errado devido a interferência no processo de transmissão e causar um erro no nível de algumas posições, pode-se determinar se os dados recebidos e o dígito de verificação coincidem calculando se os dados recebidos e os dígitos de verificação são compatíveis, de modo como fornecer informações válidas à camada de aplicação para decidir aceitar/descartar os dados correspondentes.

2.1.6. Parar Bit

O bit de parada representa o fim de um quadro de dados e o sinal real é um período de tempo alto. O comprimento do bit de parada pode ser definido como um bit de parada de 1, 1.5 ou 2 bits. Na maioria dos casos, um bit de parada de 1 bit é usado.

Como o UART é um protocolo assíncrono, o início de cada quadro pode ser sincronizado com uma borda de salto, mas o bit de parada só pode calcular a posição relativa pela taxa de transmissão e, se um nível baixo for reconhecido na posição de parada, um erro de quadro é gerado. No processo de comunicação, a fim de reduzir o problema causado pelo erro da taxa de transmissão, diferentes comprimentos de bit de parada podem ser ajustados para se adaptar.

3. Analise a comunicação UART usando um analisador lógico

3.1. Osciloscópio vs Analisador Lógico

Como o principal instrumento de teste e medição de uso geral, os osciloscópios têm uma vantagem natural na observação dos detalhes dos sinais analógicos. Por exemplo, a operação em tempo real, com uma alta taxa de atualização da forma de onda, pode facilmente observar sinais anormais repentinos; Por exemplo, ao realizar avaliação de ruído e otimização da qualidade do sinal, o osciloscópio pode comparar as semelhanças e diferenças de sinais no mesmo barramento e nós diferentes para encontrar problemas de integridade de sinal ocultos.

No entanto, o osciloscópio também naturalmente possui alguns locais inconvenientes, além dos poucos canais, a tela geralmente é pequena, a operação não é computador + mouse de maneira flexível e controlável esses problemas morfológicos, para a aquisição e análise de sinais digitais, o maior problema do osciloscópio é que a profundidade de armazenamento é muito pequena. Um osciloscópio de várias centenas de milhares de yuans também pode ter uma profundidade de armazenamento de apenas algumas centenas de Mpts. Ao mesmo tempo, devido à limitação da profundidade de armazenamento, quando for necessário fazer uma aquisição de tempo um pouco maior, a taxa de amostragem real do osciloscópio cairá drasticamente, fazendo com que a forma de onda coletada não possa restaurar o sinal real, perdendo a significado da análise.

Os analisadores lógicos são instrumentos de teste e medição projetados especificamente para aquisição e análise de sinais digitais, e os resultados da forma de onda coletados são apenas níveis alto e baixo (ou seja, 0 e 1 lógicos). No entanto, compensa a falta de osciloscópios na aquisição e análise de sinais digitais.

  1. 1. A maioria dos analisadores lógicos são operados em um PC, com o desempenho poderoso dos processadores de desktop e a experiência interativa de sistemas operacionais maduros, o que melhora muito a conveniência e a eficiência da análise de sinal digital.
  2. 2. O número de canais do analisador lógico é grande, o analisador lógico DSLogic de nível básico tem 16 canais que podem ser coletados ao mesmo tempo, e o usuário também pode obter produtos do analisador lógico com dezenas ou até centenas de canais a um preço muito razoável custo.
  3. 3. A profundidade de armazenamento do analisador lógico é maior, por exemplo, o DSLogic pode atingir uma profundidade de armazenamento de 16G no modo stream e, ao mesmo tempo, manter uma taxa de amostragem bastante alta, excedendo em muito a capacidade de aquisição da maioria dos osciloscópios.
  4. 4. Os analisadores lógicos geralmente fornecem funções ricas de decodificação de protocolo, que podem realizar análises detalhadas de sinais digitais. Por exemplo, o DSLogic atualmente suporta mais de 100 protocolos de decodificação. A maioria dos osciloscópios possui recursos de decodificação limitados e a maioria exige que os plug-ins correspondentes sejam adquiridos separadamente.

A seguir, vamos nos concentrar em como usar analisadores lógicos para a aquisição e análise de sinais UART em várias situações.

3.2. Estabeleça um ambiente de teste para analisadores lógicos

3.2.1. Conexão com DSLogic

DSLogic é um analisador lógico portátil baseado em conectividade USB. O host DSLogic é responsável pela aquisição e armazenamento do sinal e, em seguida, transmite os dados via USB para o software do computador host DSView no PC. O DSView é responsável pelo processamento de dados de forma de onda, exibição, análise e funções de interação homem-computador correspondentes.

Ao usar, basta conectar o host DSLogic diretamente à porta USB na placa do PC através de um cabo de dados USB, abrir o software DSView e confirmar que o INDICADOR no host DSLogic se torna perene. Neste ponto, a conexão e a inicialização do analisador lógico estão concluídas. Conforme mostrado na Figura 3-4, o nome do dispositivo atual no canto superior esquerdo e o status de conexão correspondente podem ser observados no software DSView.

3.2.2. Conexão de sinal UART

Para todas as medições, o equipamento de teste e o sinal a ser medido devem ser baseados em um plano de referência comum, comumente chamado de aterramento, para que o sinal medido possa ser adquirido e medido corretamente. Em alguns casos, não há aterramento explícito, mas os resultados da medição parecem não ser problema, isso porque o equipamento de medição e o sinal medido estão conectados ao terra de outras formas, como a mesma fonte de alimentação utilizada, ou a referência aterramento é conectado ao terminal de aterramento da rede ao mesmo tempo. No entanto, ao realizar medições rigorosas, o equipamento de medição deve ser aterrado de acordo com o sinal em teste. Quanto maior a área de loop do terminal de aterramento de sinal do sinal medido para o dispositivo de medição, mais fácil será para o sinal sofrer interferência, resultando em erros de medição ou até mesmo erros de medição.

Para sinais UART, ao acessar o analisador lógico, o caso mais simples precisa apenas conectar 2 fios, um ao terra de referência e outro ao sinal medido. Para as diferentes implementações da camada física do protocolo UART que mencionamos anteriormente, a forma como os sinais são conectados será ligeiramente diferente.

Por exemplo, para o sinal UART no nível TTL, além de conectar o terra de referência, basta conectar o sinal (TX ou RX) a ser testado ao canal de entrada correspondente do analisador lógico.

Para sinais de barramento RS232, podemos medir o sinal do barramento após a conversão de nível (o DSLogic tem uma faixa de tensão suportável de +-30V na entrada do cabo e a faixa de sinal de +-15V do RS232 pode ser conectada diretamente), ou podemos medir o sinal digital interno antes da tradução de nível. Seu método de fiação é consistente com o sinal TTL, a única coisa a notar é que o sinal RS232 inverte o nível (tensão negativa quando ocioso, ou seja, nível baixo), ao decodificar o protocolo UART, podemos reverter o nível do sinal correspondente em a janela de configuração de decodificação do DSView (a opção Invert Signal está definida como yes).

O barramento RS485 utiliza sinais diferenciais, e quando utilizamos um analisador lógico para aquisição de sinal, precisamos ter atenção especial na conexão do sinal medido. Em primeiro lugar, o local de referência do analisador lógico precisa ser conectado ao terra de referência do dispositivo correspondente em teste transceptor RS485, para que o analisador lógico possa ter a garantia de ter o plano de referência de nível correto; Em segundo lugar, para sinais diferenciais, o analisador lógico só precisa adquirir níveis altos e baixos de homopolaridade com o sinal interno. Do ponto de vista dos sinais digitais, a forma diferencial apenas melhora a confiabilidade da transmissão do sinal, sem acrescentar informações adicionais. Conforme mostrado na Figura 3-7, ao testar o sinal do barramento 485 usando um analisador lógico, conecte o terra de referência do transceptor do dispositivo correspondente e o sinal A+ no barramento diferencial.

Obviamente, se apenas o sinal B puder ser coletado, também podemos configurar o decodificador UART para reverter o sinal para obter o resultado correto da resolução do protocolo ao decodificar no DSView.

3.2.3. Configurações de limite

O limiar do analisador lógico é a tensão de julgamento dos níveis alto e baixo, ou seja, quando a tensão do sinal de entrada é maior que a tensão do limiar, a aquisição é de nível alto; Quando a tensão do sinal de entrada está abaixo da tensão limite, a aquisição é baixa.

Para o protocolo UART, apresentamos anteriormente que ele possui diferentes implementações de camada física e diferentes implementações de camada física têm diferentes padrões de nível. Precisamos apenas escolher um limiar correspondente para distinguir entre níveis altos e baixos em diferentes casos. Os limites mostrados na Figura 3-8 podem basicamente atender a esse requisito.

Em alguns casos, a amplitude do sinal diferencial do barramento RS485 pode variar em uma ampla faixa devido à configuração ou depuração. Como a especificação RS485 estipula que, desde que a tensão diferencial entre AB seja maior que 200mV, ela pode ser considerada alta. Neste ponto, podemos usar o osciloscópio de pedra para observar a amplitude real do nível do sinal e, em seguida, decidir sobre a configuração de limite apropriada. Você só precisa certificar-se de que a tensão limite que você definiu possa distinguir razoavelmente entre níveis altos e baixos.

3.3. Aquisição simples de sinal UART

A maioria dos sinais UART são sinais de baixa velocidade, como a taxa de transmissão mais comumente usada de 115200, indicando que a frequência do sinal é de apenas 115.2 KHz. Esses sinais podem ser adquiridos diretamente usando as configurações padrão do DSLogic. Aqui, tomando o intervalo fixo de 1s do host e enviando repetidamente o caractere 'D' como exemplo, descreve como usar um analisador lógico para adquirir e analisar esses sinais UART.

3.3.1. Aquisição de sinal

Depois que o hardware e a conexão do sinal estiverem preparados, clique no botão “Iniciar” do software DSView diretamente para adquirir o sinal em teste na configuração padrão (tempo de aquisição da taxa de amostragem de 1 MHz 1s). Se você deseja modificar a taxa de amostragem e a duração da aquisição, selecione os parâmetros correspondentes diretamente na caixa suspensa correspondente. Recomenda-se que o princípio de configuração da taxa de amostragem seja 10 vezes ou mais da frequência máxima do sinal medido, por exemplo, para sinais UART com uma taxa de transmissão de 115200 baud, a frequência de sinal mais rápida é 115.2 KHz, quando a taxa de amostragem de 1 M é selecionado, cada sinal de bit terá 8 ou 9 pontos de amostragem, e o erro de fase correspondente é +-1/8 (12.5%); Quando uma taxa de amostragem de 10M é selecionada, haverá 86 ou 87 pontos de amostragem por bit de sinal, correspondendo a um erro de fase de +-1/86 (1.16%). Claro, geralmente não é recomendado usar uma taxa de amostragem muito alta, porque quanto maior a taxa de amostragem, menor o tempo para que ela possa ser coletada, e a taxa de amostragem muito alta pode coletar vários saltos em um único salto. limite do sinal lento, causando problemas na decodificação do protocolo. A Figura 3-9 mostra a forma de onda do sinal resultante adquirida usando as configurações padrão.

Como pode ser visto na Figura 3-9, o Canal 0 adquire um sinal que é persistentemente alto, mas não encontra nenhum salto. Observe cuidadosamente a régua de tempo acima da janela da forma de onda e a barra de rolagem na parte inferior da janela para saber que a janela atual exibe apenas parte da forma de onda coletada, não todos os sinais. Nesse ponto, você pode aplicar zoom com a roda do mouse ou clicar com o botão direito do mouse na área da forma de onda para exibir todas as formas de onda durante toda a duração da aquisição. Obtenha o resultado mostrado na Figura 3-10.

Com base na figura acima, queremos observar apenas a parte de transição do canal 0. Você pode desativar a exibição da forma de onda de outros canais na janela Opções e ajustar a altura de exibição do sinal do canal. Em seguida, aponte o mouse para a forma de onda alvo e, ao mesmo tempo, através da roda do mouse para ampliar a forma de onda da posição apontada; Alternativamente, você pode selecionar a área da forma de onda que deseja ampliar mantendo pressionado o botão direito do mouse na caixa. Além disso, mantenha pressionado o botão esquerdo do mouse para mover a forma de onda para a esquerda e para a direita. Obtenha os detalhes da forma de onda mostrados na Figura 3-11.

Ao observar a forma de onda, colocar o mouse sobre a forma de onda de pulso pode exibir informações como largura de pulso, período, frequência e ciclo de trabalho do sinal atual. Ao mesmo tempo, você também pode adicionar um cursor clicando duas vezes com o botão esquerdo do mouse e, ao mover o cursor, ele se encaixará automaticamente na borda de salto próxima.

3.3.2. Decodificação UART

A forma de onda do sinal coletada pelo analisador lógico só muda no tempo em níveis alto e baixo (0/1), o que não é propício para nossa análise direcionada do processo e conteúdo da transmissão do sinal. Embora possamos usar a olho nu para traduzir o conteúdo do protocolo correspondente à forma de onda de acordo com a especificação do protocolo, isso reduzirá bastante a eficiência da análise. O decodificador integrado do DSView fornece conteúdo de decodificação de protocolo rico, transformando formas de onda chatas em caracteres, marcadores e conteúdo de dados significativos. Facilita muito a análise e a compreensão dos sinais pelos engenheiros para encontrar mensagens de erro ou dados críticos.

No software DSView, a decodificação do protocolo da forma de onda adquirida é muito simples, basta abrir o painel “Decode”, procurar o decodificador correspondente (aqui selecionamos 1: protocolo UART), e definir as opções do decodificador correspondente (incluindo display/canal /frame estrutura/formato, etc.). Uma vez determinado, o software começará a decodificar o protocolo da UART no canal selecionado. O resultado decodificado é exibido no canal de protocolo. Isso é mostrado na Figura 3-12.

Ao selecionar um decodificador, o DSView fornece uma função de pesquisa de protocolo conveniente, basta inserir caracteres-chave na caixa de pesquisa de protocolo, o DSView listará todos os decodificadores que contêm esses caracteres, onde o usuário pode selecionar o decodificador correto. Conforme mostrado na Figura 3-13, existem dois protocolos relacionados ao UART 0: UART e 1: UART, onde 0: UART é um decodificador simplificado que não analisa informações de bits, nem suporta o empilhamento de protocolos de nível superior, quando queremos apenas obter os dados correspondentes à forma de onda, você pode usar este protocolo simplificado para reduzir o tempo de decodificação e os recursos de memória.

A janela de configurações do decodificador possui muitas opções de configuração relacionadas à decodificação e o conteúdo da janela de configurações de diferentes protocolos será diferente. Existem algumas opções que todos os decodificadores devem definir, como a correspondência entre os sinais do canal e do protocolo. Aqui estamos usando o sinal UART capturado pelo canal 0, então o canal correspondente que precisa ser decodificado deve ser definido como canal 0.

E as opções de configuração relacionadas ao protocolo que explicamos em detalhes na seção de estrutura do quadro, na operação real também podem ser obtidas através do software do computador host da porta serial (assistente de depuração da porta serial, etc.) para obter essas informações. Isso é mostrado na Figura 3-14.

Para conteúdo de dados decodificados, o DSView oferece suporte a diferentes formatos de exibição. Por exemplo, o sinal UART adquirido anteriormente exibe o caractere 'D' na forma de códigos ASCII, ou pode ser modificado para o modo de exibição hexadecimal (Hex), e o resultado exibirá 0x44. Isso é mostrado na Figura 3-15. Os formatos de exibição atualmente suportados são: hex (hexadecimal), dec (decimal), oct (octal), bin (binário) e código ascii.

3.4. Aquisição de uma única transmissão UART

Quando a forma de onda que queremos capturar é um sinal ocasional, não sabemos quando a forma de onda aparecerá e, se usarmos o método de aquisição direta, poderemos capturar apenas a forma de onda do sinal ocioso na maioria das vezes, e não podemos capturar o sinal no momento da transmissão real.

Neste momento, ele pode ser capturado por acionamento. Ao definir as condições de disparo correspondentes, podemos controlar o tempo de início da aquisição do sinal de acordo com a mudança da forma de onda, de modo a capturar com precisão a forma de onda do sinal que queremos ver.

3.4.1. Modo de buffer

O DSLogic suporta dois modos de aquisição: modo Stream e modo Buffer. Os dados coletados no modo Stream são transmitidos ao PC em tempo real e processados ​​pelo DSView. Os dados coletados no modo Buffer são primeiro armazenados em cache no cache de hardware interno do DSLogic e, em seguida, transferidos para o PC após a conclusão da aquisição e processados ​​pelo DSView.

Além das vantagens de obter taxas de amostragem mais altas, o modo Buffer também suporta mais opções e configurações de disparo, como disparo multinível, disparo serial e configuração de posições de disparo. O modo de fluxo, por outro lado, suporta apenas acionamento simples.

3.4.2. Configurações de gatilho

Para acionamento simples, podemos definir a opção de acionamento diretamente ao lado do canal. Corresponde sequencialmente a borda ascendente, borda alta, borda descendente, nível baixo e qualquer disparo de borda. Basta manter o modo de disparo simples padrão no painel de disparo. Por exemplo, para uma transmissão UART que não sabe quando ocorre, podemos optar por acionar a borda descendente. Quando o sinal UART permanece inativo, o gatilho não é satisfeito. O DSLogic aguarda a chegada da condição de disparo, conforme mostrado na Figura 3-17.

Quando o UART começa a transmitir o primeiro bit de início, a condição de disparo é ativada e o DSLogic adquire a forma de onda do sinal no momento do disparo. Isso é mostrado na Figura 3-18.

Vamos considerar um cenário de disparo mais complexo, como o dispositivo A enviando dados constantemente para o dispositivo B aleatoriamente e o dispositivo B respondendo a dados diferentes de acordo com o conteúdo dos dados enviados pelo dispositivo A. Se quisermos saber quais dados o dispositivo A enviou ao dispositivo B antes de enviar o dado 0, como definimos a condição de disparo para capturar a forma de onda no momento correspondente?

Existem dois problemas que precisam ser resolvidos aqui, primeiro precisamos definir a localização do gatilho para que possamos ver os dados antes do gatilho, não os dados após o gatilho; Em segundo lugar, precisamos encontrar as características da forma de onda do dispositivo B enviando dados 0 e convertê-los na condição de disparo correspondente.

Análise do protocolo UART

Figura 3-19 Posição do gatilho

De acordo com as regras de protocolo da UART, a forma de onda que envia os dados 0 será um sinal de pulso contínuo de baixo nível relativamente amplo. Se a taxa de transmissão do UART for 115200 e a taxa de amostragem que definirmos for 1 MHz, a forma de onda dos dados 0 é mostrada na Figura 3-20, que será um pulso de baixo nível de cerca de 78.125 uS.

Para definir o gatilho avançado ou a posição do gatilho requer suporte ao modo de buffer, você precisa primeiro definir o "Modo de execução" para "Modo de buffer" nas "Opções" e não selecionar a opção "compactação de hardware RLE". Defina a condição de disparo avançado para o canal 1 com um mínimo contínuo de 75 pontos de amostragem (correspondente a uma taxa de amostragem de 1 MHz, que é um nível baixo de 75us) e defina a posição do disparo para 80% para facilitar a observação dos dados antes do disparo. As configurações específicas são mostradas na Figura 3-21.

De acordo com essa condição de disparo, ele é acionado quando o dispositivo B envia o dado 0, e a forma de onda adquirida é mostrada na Figura 3-22.

3.4.3. Repetir a coleção

Em alguns casos, precisamos observar dinamicamente o status de alguns sinais, como o conteúdo dos dados enviados pelo Burst todas as vezes, mas não sabemos quando os dados são enviados e é impossível clicar no botão “Iniciar” com frequência . O DSView fornece um modo de aquisição “repetido” que adquire e atualiza automaticamente as formas de onda quando o disparo é atendido. Quando depuramos alguns sinais de rajada periódicos, é muito conveniente observar os resultados da aquisição dinâmica e análise de protocolo através do modo de repetição.

O modo de repetição pode ser configurado conforme mostrado na Figura 3-23. O intervalo de repetição é o tempo mínimo de permanência entre duas amostras para facilitar a observação da forma de onda e os resultados de decodificação da aquisição anterior.

3.5. Aquisição de transmissões UART de longo prazo

Quando for necessário adquirir formas de onda ultralongas para análise, podemos utilizar o modo Stream. O DSLogic pode atingir uma profundidade de amostragem de 16G por canal no modo Stream. A uma taxa de amostragem de 1MHz, o tempo de aquisição pode chegar a 16G/1M ≈ 16000s, que é mais de 4 horas.

3.5.1.Modo de fluxo

A configuração do modo de fluxo é mostrada na Figura 3-24, e diferentes versões de hardware DSLogic suportam diferentes opções de canal de modo de fluxo. Para U3Pro16, com base na porta USB3.0, ele pode atingir 3 canais com taxa de amostragem de até 1 GHz, 6 canais com taxa de amostragem de até 500 MHz, 12 canais com taxa de amostragem de até 250 MHz e 16 canais com taxa de amostragem de até 125 MHz.

Quando a quantidade de dados coletados é relativamente grande, o protocolo 0:UART pode ser usado para decodificação, em comparação com 1:UART, que omite a saída de informações de bits, não suporta empilhamento de protocolo de alto nível e pode encurtar o tempo de decodificação e reduzir a ocupação da memória. As outras funções são as mesmas que 1: UART. O efeito de decodificação é mostrado na Figura 3-25.

3.5.2. A lista de protocolos é exibida

Conforme mostrado na figura a seguir, o resultado da decodificação gráfica é completamente sincronizado com a forma de onda adquirida no tempo, o que nos ajuda a entender a forma de onda e encontrar o problema, mas ao mesmo tempo, devido à escala de exibição do tempo, não é propício para visualizar o resultado da decodificação. As exibições de lista compensam essa deficiência, facilitando a visualização e a análise de grandes quantidades de conteúdo decodificado.

O DSView fornece uma maneira de alternar entre resultados gráficos e de lista. Clique em qualquer linha nos resultados da lista para pular automaticamente para o resultado da forma de onda correspondente, e você também pode escolher se deseja ampliar automaticamente a forma de onda ao pular ou corrigir a coluna da taxa de zoom atual da forma de onda. Além disso, quando visualizamos a forma de onda em um determinado momento, se quisermos pular para a posição em que o resultado da decodificação correspondente a essa forma de onda é exibido na lista, basta clicar no botão de posicionamento no canto superior direito da tela. janela de exibição da lista.

Além disso, o conteúdo decodificado pode ser exportado para um arquivo por meio da exibição da lista. Conforme mostrado na figura acima, clicando no botão “Salvar” exibido na lista, você pode optar por exportar o conteúdo atualmente decodificado para um arquivo csv ou txt, o que é conveniente para mais processamento de dados de terceiros, como entrada para matlab para análise ou como entrada de dados para outro software.

3.5.3. Decodificar pesquisa de dados

Outra vantagem da exibição de lista é que os resultados decodificados podem ser usados ​​como strings para pesquisas de resultados, como pesquisar operações específicas ou bytes de dados específicos, que podem localizar rapidamente o local que precisa ser visualizado.

Digite a palavra-chave que deseja pesquisar na caixa de pesquisa e pressione os botões avançar/retroceder para encontrar o conteúdo decodificado que contém a palavra-chave e a interface da forma de onda saltará para o local apropriado para análise. Se estiver analisando os resultados de um segmento, você pode clicar em uma linha na lista de verificação e os botões Avançar/Recuar procuram as correspondências anterior e seguinte começando com esse comportamento em vez de começar do zero.

Para o protocolo UART, o DSView também oferece suporte à pesquisa de dados em várias linhas. Pode ser usado para encontrar alguns resultados de strings contíguos que aparecem em seus dados. Conforme mostrado na Figura 3-29, uma pesquisa de dados de várias linhas concatena várias palavras-chave com o caractere “-”.

3.5.4. Pesquisa de forma de onda

O DSView suporta não apenas a busca de resultados decodificados, mas também a função de busca da forma de onda original. As formas de onda podem ser localizadas rapidamente em muitas cenas. Por exemplo, quando a forma de onda é transmitida repentinamente, porque o período ocioso é relativamente longo, é impossível ver a forma de onda detalhada transmitida várias vezes ao mesmo tempo, você pode usar a pesquisa de forma de onda e pular imediatamente para o próximo salto de forma de onda após visualizar a forma de onda no momento anterior para garantir que a taxa de zoom não seja alterada.

Verifique a barra de ferramentas “Pesquisar”, a caixa de pesquisa aparecerá abaixo da janela do software, clique na caixa de pesquisa, abra a janela de configurações de pesquisa, determine a borda de salto do canal, você pode pesquisar a forma de onda que atende aos critérios à esquerda e à direita chaves. Ao mesmo tempo, você também pode mover manualmente o cursor de pesquisa para determinar onde a pesquisa começa.

Quando a pesquisa é selecionada, um cursor com uma tag “S” aparece, o estado inicial é cinza, se você clicar para a esquerda/direita para pesquisar e encontrar uma forma de onda que atenda aos critérios, o cursor ficará azul e se moverá automaticamente para o local de pesquisa . Se você mover manualmente o cursor “S”, o cursor ficará cinza novamente.

3.5.5. Uso do cursor

O DSView suporta uma ampla variedade de operações do cursor, permitindo não apenas medições de tempo com o cursor, mas também marcação e rastreamento de formas de onda especiais com o cursor. Quando a forma de onda está ociosa ou o intervalo é longo, você pode inserir um cursor em cada posição de interesse, e quando quiser pular para uma forma de onda de interesse, basta clicar com o botão direito do mouse na área da régua e, em seguida, clicar no botão número de sequência do cursor para o qual você deseja pular, que pode pular para a posição do cursor correspondente.

Se você quiser mover o cursor, você só precisa mover o mouse próximo ao cursor, quando o cursor aparecer em negrito, clique com o botão esquerdo do mouse para selecionar, o cursor seguirá o movimento do mouse, determine a posição e clique com o botão esquerdo novamente para soltar o cursor. Quando você deseja que o cursor se encaixe em uma das bordas de salto de uma forma de onda de canal específica, você só precisa mover o mouse próximo à borda de salto, e o cursor irá automaticamente se ajustar à borda do salto.

3.5.6. Medidas do mouse

Além das medições baseadas em cursor, o DSView fornece medições de mouse mais convenientes. Por exemplo, medições de largura de pulso atual, período, ciclo de trabalho e frequência (só precisa colocar o mouse sobre o pulso em mudança); Medição do número de arestas (clicar nas posições inicial e final da forma de onda contará automaticamente as arestas de salto deste intervalo); e medição da distância da borda (clique do mouse na borda inicial e mova para a borda final).

Conforme mostrado na Figura 3-31, mova o mouse para a posição da borda de transição inicial, clique com o botão esquerdo do mouse, selecione a borda de transição inicial, mova o mouse para a posição da borda de transição final e a distância entre as duas bordas de transição (ponto de intervalo de duração/amostragem) serão exibidas e o botão esquerdo do mouse será clicado novamente para concluir a medição.

4. perguntas frequentes

4.1. Determine a taxa de transmissão desconhecida

Quando não podemos obter a taxa de transmissão da forma de onda UART antecipadamente, também podemos adivinhar a taxa de transmissão verdadeira pela forma de onda adquirida. O DSView fornece um decodificador “Guess bitrate” para adivinhar os parâmetros de taxa de transmissão de uma string de forma de onda arbitrária. O princípio da taxa de bits Guess é encontrar a largura de pulso mais estreita na forma de onda, por sua vez, como a largura da forma de onda de um bit, e então calcular seu recíproco como a taxa de transmissão. Portanto, pode haver vários resultados, precisamos apenas observar se o pulso correspondente é uma largura de pulso razoável e, em seguida, selecionar o resultado da taxa de transmissão máxima. Isso é mostrado na Figura 4-1.

Uma vez que a taxa de transmissão é obtida, ela pode ser configurada para as opções do decodificador UART. Como o protocolo UART ressincroniza cada bit inicial, o erro da taxa de transmissão se acumulará apenas em um quadro de dados e, desde que o erro dentro de um quadro não exceda o limite do bit bit, o resultado correto da decodificação pode ser obtido .

Obviamente, se houver uma pequena amostra da forma de onda, como nenhum pulso de um único bit de largura na forma de onda, a taxa de transmissão estimada provavelmente estará incorreta, resultando em um resultado de decodificação incorreto. Quando houver uma forma de onda que não esteja de acordo com o protocolo, o decodificador UART também fornecerá possíveis dicas de erro, como erro de quadro, conforme mostrado na Figura 4-2. Engenheiros experientes podem ajustar a taxa de transmissão observando a forma de onda e os resultados de decodificação para obter os resultados de decodificação corretos.

4.2. Decodificação de sinais anticonfiança

Na seção anterior mencionamos que o protocolo UART pode ser transmitido por diferentes sinais físicos, e alguns sinais da camada física podem ter uma relação inversa com o sinal do protocolo (intercambiáveis ​​de alto e baixo nível), como RS232, ou o sinal B em o sinal diferencial RS485. Quando o sinal que coletamos é revertido, o decodificador UART do DSView também pode ser configurado para obter o resultado correto da decodificação.

O usuário só precisa substituir o “Invert Signal ?” nas configurações do decodificador UART. A opção está definida como “sim”. A decodificação do sinal reverso é mostrada na figura a seguir.

4.3. Decodificação de comunicação UART multigrupo

O decodificador UART do DSView foi projetado deliberadamente para ser uma abordagem de canal único, o que facilita as configurações de canal arbitrário para comunicação multiplexada durante a decodificação. Por exemplo, para uma comunicação UART full-duplex, que possui um sinal TX e um sinal RX, precisamos apenas adicionar dois decodificadores UART para corresponder à decodificação de TX e RX.

Conforme mostrado na figura abaixo, é o caso em que três sinais UART são decodificados ao mesmo tempo.

4.4. Erro de decodificação causado pela posição inicial

Para qualquer processo de comunicação, o dispositivo deve partir do estado inicial para receber corretamente o conteúdo da comunicação, ou seja, identificar e analisar corretamente o quadro do protocolo. O mesmo vale para analisadores lógicos, se a aquisição de um sinal começa exatamente no meio de um quadro de dados, então a posição inicial errada provavelmente levará a um resultado de decodificação errado. Conforme mostrado na figura a seguir, o dispositivo continua enviando a string “DreamSourceLab”, mas como o local da primeira captura está exatamente no meio do quadro de dados, a decodificação da primeira forma de onda fica distorcida.

Para evitar a decodificação incorreta de dados, podemos definir artificialmente a posição inicial e a posição final da decodificação, para evitar erros de decodificação causados ​​por quadros de dados truncados. A posição de decodificação pode ser a posição especificada de qualquer cursor, e a operação só precisa definir as posições inicial e final correspondentes nas configurações do decodificador após inserir o cursor correspondente. Conforme mostrado na figura a seguir, definir a posição inicial evita a decodificação incorreta da primeira forma de onda truncada.

5. Análise avançada

5.1. Análise de protocolo multicamada

O UART é um protocolo base amplamente utilizado, e muitos dos protocolos de transmissão usados ​​em aplicações práticas são estendidos com base no UART. Por exemplo: DMX512, LIN, MIDI e Modbus, etc., a base de comunicação subjacente é o protocolo UART. 、

De acordo com esse recurso, o DSView também suporta o empilhamento de análise de protocolos multicamadas. Quando adicionamos um decodificador de um protocolo complexo, o DSView construirá automaticamente toda a pilha de protocolos a partir do nível superior, o que torna os resultados de decodificação mais ricos e perfeitos, o que é muito útil para a análise aprofundada e compreensão do protocolo pelo usuário.

Vamos usar o Modbus RTU como exemplo para entender o processo de análise de protocolos multicamadas do DSView. Com base na função de transferência de byte UART, o Modbus RTU especifica o significado específico de cada byte em detalhes, de modo que a estrutura do quadro do Modbus seja formada pela combinação de vários quadros do protocolo UART. Isto é mostrado na figura a seguir.

Ao usar o DSView para tal decodificação de protocolo, você só precisa inserir o protocolo correspondente na caixa de pesquisa de protocolo e adicioná-lo. O DSView cria automaticamente a página de configurações para todo o protocolo de empilhamento, conforme mostrado na figura a seguir, e o usuário pode fazer as configurações correspondentes.

Conforme mostrado na figura a seguir, a estrutura de empilhamento do protocolo pode ser vista claramente a partir do resultado da decodificação do Modbus RTU. O Modbus para cada quadro consiste em 8 quadros de bytes UART. O conteúdo de um quadro Modbus também terá comentários claros indicando seu significado específico. Quando ocorre um erro de transmissão, esse resultado de decodificação pode localizar muito claramente a localização do erro, bem como a causa do erro (seja um problema com o UART subjacente ou um problema com a camada de protocolo Modbus). Se você não quiser ver os detalhes subjacentes, poderá ocultar o conteúdo decodificado correspondente na página de configurações do decodificador.

Seja o primeiro a comentar

Deixe um comentário

O seu endereço de e-mail não será publicado.


*