
Como mencionei repetidamente em minhas publicações, projetos amadores são financiados pelo orçamento familiar, e um amador de rádio geralmente não pode se dar ao luxo de comprar equipamentos de medição caros. Temos que nos contentar com o que temos. Ou o fato de que é possível tirar proveito de "por um tempo". E, às vezes, por causa da desesperança, o radioamador precisa "perfurar com uma serra e serra com um verruma".
Recentemente, senti a necessidade de descobrir o que realmente é transmitido no dispositivo que estou desenvolvendo no barramento I2C. Foi aquele momento feliz em que você pode se dar ao luxo de "serrar com uma serra".
Você pode descobrir como os dados são trocados entre dispositivos usando o protocolo I2C
aqui . Para analisar os sinais no barramento I2C, você pode usar um osciloscópio digital de dois canais com memória e um analisador lógico.
Osciloscópio digital de canal duplo com memória
Ao trabalhar com equipamentos eletrônicos, o osciloscópio é a ferramenta mais versátil. Os osciloscópios digitais modernos têm várias propriedades úteis que possibilitam, entre outras coisas, analisar sinais de barramento I2C.
Nesse caso, recebi um osciloscópio digital de dois canais "por um tempo" com memória Rigol DS1102 (o preço no site do fabricante é US $ 461). Este dispositivo possui dois canais de medição com largura de banda de até 100 MHz e frequência de amostragem de sinal de 1 GSa / s.
CH1 foi conectado ao sinal SCL. CH2 foi conectado ao sinal SDA. Para os dois canais, foi definida uma escala de 1,00 V / div. Escala de varredura - 10 us / div. Para maior clareza, o feixe do primeiro canal é deslocado para a metade superior da tela e o feixe do segundo canal para o fundo.
No menu Trigger, o osciloscópio foi configurado para uma única medição com o gatilho atingindo a borda ascendente no canal CH1 de nível 1,00 V:

Depois de ligar o equipamento em teste, o grande botão vermelho Run / Stop foi pressionado. O osciloscópio entrou no modo de espera e foi iniciado. Após alguns segundos, a gravação foi interrompida manualmente.
A forma de onda obtida foi gravada em uma tela média externa por tela:

Vamos analisar os sinais gravados. Na primeira tela, vemos uma exibição das configurações do dispositivo e um oscilograma dos sinais SCL (parte superior) e SDA (parte inferior da tela), nos quais lemos da esquerda para a direita:
- Sinal de INÍCIO : o mestre define o nível baixo primeiro no barramento SDA e depois no barramento SCL;
- Endereço de 7 bits : leia 0x60 (1100000) no barramento SDA ao longo das bordas frontais do SCL;
- sinal do modo de gravação : lemos no barramento SDA um nível baixo na próxima borda principal do SCL;
- Sinal ACK : após transferir o byte, o dispositivo mestre muda para receber via barramento SDA, o SDA é ajustado alto, o dispositivo escravo define o nível baixo na borda descendente do SCL (na verdade, o sinal ACK), que o mestre lê na borda ascendente do SCL;
- Sinal STOP : o mestre define alto no barramento SCL e depois no barramento SDA
Da mesma forma, lenta mas seguramente, você pode descriptografar manualmente o restante do registro.
Analisador de lógica de sinal digital
O protocolo pode ser descriptografado usando um método mais simples, usando um analisador lógico e um software apropriado.
Para uso como analisador lógico, fui gentilmente fornecido por colegas da Saleae Logic 8 (o preço no site do fabricante é US $ 399). O software utilizado foi a demonstração Saleae Logic 1.2.18, retirada do
site oficial . Ao instalar este software, aceitei um
contrato de licença com a condição, incluindo a não utilização deste software com equipamentos de terceiros.
O programa incluiu um analisador de protocolo I2C. CH0 foi designado para SCL e CH1 para SDA. Taxa de amostragem de sinal 24 MSa / s.

O lançamento foi configurado na frente "principal" do CH0. O formato hexadecimal foi selecionado para exibir os dados.

Depois de ligar o equipamento em teste, um grande botão verde foi pressionado e, após alguns segundos, um gráfico apareceu na tela:

Vejo o máximo benefício em usar um analisador lógico, pois o próprio programa descriptografa os dados recebidos. Os resultados da descriptografia são inseridos linha por linha na janela Protocolos Decodificados. Quando você seleciona uma linha de dados na janela, o programa mostra a localização desses dados no gráfico.
Osciloscópio Digital vs Analisador Lógico
Para comparar as opções, colei quatro capturas de tela da tela do osciloscópio e um fragmento do diagrama do analisador lógico no editor gráfico:

O início é indicado por um círculo verde, o Stop é indicado por um círculo vermelho. O diagrama primeiro verifica a presença de um dispositivo com o endereço 0x60 no barramento e depois grava 0x80 no registro 0xB7 deste dispositivo.
Se abordarmos a comparação de opções "com viés", podemos ver que no diagrama do analisador lógico (frequência de amostragem 24 MSa / s) há um "tremulação" do sinal SCL, que não está presente, como tal, no oscilograma com uma frequência de amostragem de 1 GSa / s. O restante da imagem é o mesmo e o analisador lógico também descriptografa os dados no modo automático.
Ao escolher "ou-ou" no "resíduo seco", temos, no caso de um osciloscópio, um dispositivo universal caro que não é tão conveniente para analisar um barramento quanto um analisador lógico, mas por um dinheiro comparável a ele. Sob essas condições, eu pessoalmente, como engenheiro da "velha escola", teria adquirido um osciloscópio digital.
No entanto, se houvesse software com um contrato de licença que permitisse o uso de clones baratos de analisadores lógicos populares, como Saleae Logic 8 ou DSLogic Plus ...
E esse software existe
Clones baratos de analisadores lógicos populares, e não apenas eles, são suportados pelo
software de código aberto do
projeto sigrok .
O local de trabalho foi coletado:

Então começou a "dançar com um pandeiro". No Windows 10, apenas a versão de 32 bits do PulseView foi iniciada. Ela não determinou a presença de um clone chinês barato Saleae Logic no sistema (o preço no site do vendedor é de US $ 7).
Depois disso, os drivers WinUSB foram instalados no Zadig para o dispositivo
Logic e, depois de
digitalizados novamente , foram definidos no Zadig como o dispositivo
fx2latw :

Depois disso, os drivers WinUSB foram instalados novamente para o dispositivo
fx2latw no Zadig e somente depois o PulseView viu o dispositivo Saleae Logic na lista. O dispositivo foi conectado.
Após conectar o dispositivo, foram feitas as seguintes configurações do programa (da esquerda para a direita na barra de ferramentas, começando com a inscrição "Saleae Logic"):
- Taxa de captura pré-disparo = 2% é definida pressionando um botão com uma chave e uma chave de fenda;
- entradas extras são desativadas pressionando um botão com uma sonda vermelha;
- definir o volume de gravação de 100 K amostras;
- defina a frequência de amostragem para 24 MHz;
- O analisador de protocolo I2C é ativado pressionando um botão com um ícone verde-amarelo.
Mais adiante no painel à esquerda dos canais:
- os canais recebem etiquetas de texto correspondentes aos sinais;
- condição de disparo atribuída à borda ascendente do sinal SDA;
- Os sinais I2C recebem os canais correspondentes.
Depois de ligar o equipamento em teste, o botão Executar foi pressionado. O resultado já é familiar:

Parece que “dançar com um pandeiro” valeu a pena!
UPD : Depois de instalar manualmente o
driver libusb-win32 no Gerenciador de dispositivos do dispositivo USB
Logic , o programa PulseView começou a determinar de maneira estável a presença do sistema Saleae Logic sem manipular o Zadig.
Breves conclusões:
O artigo descreveu a metodologia para analisar os sinais de barramento I2C usando um osciloscópio digital com analisadores de memória e lógica com pacotes de software aplicativo.
Um método universal de análise de sinais, mas não é barato e lento, é o uso de um osciloscópio digital com memória.
Um método rápido e orçamentário de análise de sinais, mas com uma tarefa não trivial de conectar equipamentos, é o uso de um clone barato de um analisador lógico em conjunto com o PulseView.
Ficaria feliz se minha publicação ajudasse a economizar tempo e dinheiro aos leitores.
Na próxima publicação, mostrarei como medi a frequência com que o ressonador de quartzo foi iniciado no sintetizador de frequência, sem um medidor de frequência. Mas isso é outra história ...