Logic_Analyser

Um Analisador Lógico é um equipamento electrónico de testes que captura e apresenta a atividade de sinais digitais durante um intervalo de tempo. Tipicamente esta atividade é apresentada sob a forma de um gráfico de tensões contra o tempo e é usado para se determinar se o desenho do circuito está a trabalhar corretamente. Um analisador lógico apresenta os sinais como valores lógicos a 1 (HIGH) ou 0 (LOW).

O Gadget analisado permite obter informação em simultâneo de 8 canais com velocidades de sampling até 24 MHz. Trata-se de um clone chinês do Saleae Logic que usa um Cypress CY7C68013-56PVC. Liga-se ao PC através de um cabo USB.

Existem diversas aplicações que conseguem interagir com este Gadget. Iremos ver o funcionamento com duas delas:

Estas aplicações são executadas num PC. Foi testada a versão Linux 64-bits.

A aplicação da Saleae tem mais funcionalidades, sendo que no entanto é closed-source.

Para esta funcionar sem ser necessário ser executada em modo root deverá ser executado o Script ‘install_driver’ da pasta ‘Drivers’.
Isto sem o Gadget ligado. Após este procedimento já será possível executar o programa sem privilégios de root.

O modo de funcionamento deste Gadget é relativamente simples. Existem 8 pinos que podem ser ligados com probes ao circuito. Deve-se assegurar que o GND também é ligado ao GND do circuito.

Teste

Foi feito um teste de captura de informação numa comunicação série entre o CSEduino e o PC no momento da programação.

Logic_Analyser_Setup

Na captura de écran é possível ver o comando ‘u’ (0x75) ao qual é dada a resposta 0x14 seguido da identificação do chip: 0x1E 0x95 0x0F que corresponde ao ATMega328P. Isto faz parte do protocolo STK500 que se encontra implementado no optiboot do Arduino.
Para analisar a captura foram definidos dois Analysers - Async Serial um para o pino do RX e outro para o pino do TX para que o analisador fizesse a descodificação da sinalização.

Logic_Analyser_Saleae

O Saleae Logic tem mais descodificadores nomeadamente para:

  • I2C
  • SPI
  • 1-Wire
  • USB 1.1
  • JTAG
  • SWI
  • Manchester
  • CAN
  • DMX512
  • I2S
  • UNI/O

Na aplicação define-se o número de “Samples” e a velocidade de captura - no máximo 24 MHz e se a captura começa imediatamente ou apenas quando existe um trigger num dos pinos que se está a ler.

A segunda aplicação analisada é o PulseView que faz parte do package sigrok e do qual os resultados foram menos satisfatórios.

Logic_Analyser_Pulseview

Foi possível configurar o dispositivo e capturar as variações de sinal mas não foi possível fazer a descodificação do mesmo.

Conclusão

Trata-se de uma ferramenta útil para fazer debugging de protocolos mais complexos. Pelo custo associado à mesma pode-se dizer que faz o que se pretende de forma simples. Uma ferramenta interessante de ter na caixa de ferramentas.

Links úteis: