Manual

do

Maker

.

com

Laboratório Maker 02: sniffing I2C com Bus Pirate

Laboratório Maker 02: sniffing I2C com Bus Pirate

Pare! Não leia esse artigo se não começou pelo "Laborartório Maker 01: Sniffer de barramentos Bus Pirate". É sério, o prazer da leitura dependerá de estar acompanhando a saga. Agora veremos como preparar o ambiente para fazermos sniffing I2C com Bus Pirate. Se é que alguém não conhece, o BMP180 é um sensor de pressão e temperatura da Bosch, do qual já escrevi diversos artigos, que você encontra digitando bmp180 na caixa de pesquisas, à direita da página do blog. Ele será nossa "cobaia" no final dessa série.

Vamos direto ao objetivo, já que abordamos todos os conceitos necessários para chegar a esse ponto. Se já tem seu Bus Pirate em mãos, conecte-o ao computador e acesse seu terminal. Lembre-se de que a velocidade padrão é 115200 bauds.

Configuração do modo

Acesse o menu através da flag m, no prompt HiZ>. Se a página do terminal estiver em branco, envie um Enter para aparecer o prompt.

Ao acessar o menu, escolha a opção 4 (I2C).

Escolha o clock de 100KHz (opção 3). Se quiser saber mais detalhes do I2C, esse link sobre o tema me pareceu bastante informativo e válido (pelo menos as configurações que utilizei batem com o artigo).

Após isso, o prompt estará pronto para o sniffing.

bus_pirate-i2c_configuration.webp

Alimentação do periférico

A alimentação provida pelo Bus Pirate oferece até 150mA. Ative/desative a alimentação com W/w, respectivamente. O único modo em que não podemos utilizar a alimentação é HiZ. Nesse modo todos os OUTPUTS estarão desativados. A seleção de clock pode não estar disponível, dependendo da versão do firmware. Verifique as tensões pelo monitor de tensão, com a flag v. Não se esqueça de habilitar as alimentações com a flag W.

bus_pirate-power_and_monitor.webp

A alimentação do Bus Pirate protegerá o projeto de sobrecorrente. Adicionalmente, medirá a tensão por curto-circuitos assim que estiver provendo alimentação a um periférico. Se um curto for detectado, a alimentação será desabilitada e um aviso será exibido. É ou não é "muito" mais seguro que teste direto em uma MCU padrão? Com isso, os riscos de danos serão minimizados.

Resistores de pull-up para fazer o sniffing I2C com Bus Pirate

Alguns tipos de barramento como 1-Wire e I2C requerem um nível alto no barramento. Isso é chamado de "open collector" ou "open drain". Sem um resistor de pull-up o barramento somente lerá zeros. Como vamos utilizar o BMP180, que é um dispositivo I2C, já podemos chegar nesse ponto como está o resistor de pull-up interno. Na imagem acima o pull-up não está habilitado, portanto devemos agora utilizar a flag p para habilitá-lo:

bus_pirate-pullup.webp

Agora coloque o pino VPU à tensão. O resistor aplicará a tensão conectada ao pino VPU ao barramento de pinos através de resistores de 10KOhms. Use novamente a flag v para checar se o monitor exibe a tensão desejada no VPU. Fiz um teste com 3V3 no VPU:

bus_pirate-VPU.webp

É fácil identificar os fios por essa imagem:

bus_pirate-wiring.webp

Claro que se você não adquirir o conector oficial, a identificação das cores fica por sua conta, bastando olhar sobre a placa o que representa cada fio. O silk está tabelado na parte de trás da placa também.

Configuração de macros

As macros são atalhos programados. Isso é ótimo para executar uma sequência de operações de maneira automática, tanto para testar uma série de dispositivos como para executar uma rotina se atendo apenas aos resultados, invés de dar atenção ao datasheet no momento que deveria ser dedicado à análise.

As macros disponíveis incluem smart cards, scanner I2C, chain probes JTAG, bridge transparente UART, inicialização de LCD e sniffers de barramento.

Para ver o menu de macros, usamos a flag **(**0) (zero com parênteses) no prompt I2C>. Como estamos tratando de um dispositivo I2C, devemos escolher a opção (1) do (sub)menu seguinte, pois endereços I2C respondem com 7bits. O Bus Pirate fará uma busca do endereço do dispositivo, sem precisar recorrer ao datasheet, ou ao site do vendedor, ou sem ter que buscar por um exemplo na Internet. Isso é DIY!

bus_pirate-i2c_scan.webp

No próximo artigo veremos uma leitura do sensor BMP180 utilizando o Bus Pirate, acompanhe!

 

Revisão: Ricardo Amaral de Andrade

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.