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.
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.
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.
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: