Respostas:
Há muitas informações sobre o GPIO da RPi aqui: http://elinux.org/Rpi_Low-level_peripherals
De acordo com ele, você pode programar quaisquer pinos GPIO para I²C, mas:
O pino 3 (SDA0) e o pino 5 (SCL0) são predefinidos para serem usados como uma interface I²C. Portanto, existem resistores de 1,8 kilohm na placa para esses pinos.
Essa página wiki também possui alguns exemplos de código GPIO de baixo nível para vários idiomas que devem ajudar você a começar. Se você precisar se atualizar sobre o que realmente é o I²C, aqui está um que também leva em consideração o RPi.
Para controle I²C específico, essa biblioteca python pode ser útil, é discutida nesta postagem do blog , que inclui uma amostra de código.
Muitas discussões estão acontecendo sobre isso. Aqui está o que minha leitura e minha brincadeira me mostram:
/etc/modprobe.d/raspi-blacklist.conf
e comente a entrada para i2c-bcm2708
; depois edite /etc/modules
e acrescente i2c-dev
; depois reinicie. Agora você deve ter um /dev/i2c-0
arquivo especial, que é muito fácil de usar.
Aqui estão alguns exemplos que eu fiz
Hardware:
Como mencionado por Tapio, o hardware está bem documentado em http://elinux.org/Rpi_Low-level_peripherals
Programas:
Há um cabeçalho i2c-dev no espaço de usuário do Linux ( #include <linux/i2c-dev.h>
). Além disso, você precisa de um personagem que decida ler. Isso pode ser feito carregando os módulos corretos. i2c_bcm2708
para o motorista de baixo nível e i2c-dev
para gerar o personagem deciva para os ônibus. Aplique ...
sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>
para carregá-los em tempo real. Aplique ...
sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf
e unblacklist i2c_bcm2708
em /etc/modprobe.d/raspi-blacklist.conf
fazer /dev/i2c-0
e /dev/i2c-1
mostrar-se permanentemente.
A partir de agora, você pode seguir as dicas de como usar o I²C del maestro.
Eu prefiro esse método do que outros, porque é platformagnótico. Você também pode usar linux/i2c-dev.h
com outros dispositivos, desde que exista um driver I²C de baixo nível.
Saudações