Respuestas:
Aquí hay mucha información sobre el GPIO de RPi: http://elinux.org/Rpi_Low-level_peripherals
Según esto, puede programar cualquier pin GPIO para I²C, pero:
El pin 3 (SDA0) y el pin 5 (SCL0) están preconfigurados para usarse como una interfaz I²C. Por lo tanto, hay 1.8 kilohm de resistencia en la placa para estos pines.
Esa página wiki también tiene algunos ejemplos de código GPIO de bajo nivel para varios idiomas que deberían ayudarlo a comenzar. Si necesita un repaso de lo que realmente es I²C, aquí hay uno que también tiene en cuenta el RPi.
Para el control específico de I²C, esta biblioteca de Python podría ser útil, se discute en esta publicación de blog , que incluye una muestra de código.
Hay muchas discusiones sobre esto. Esto es lo que me muestra mi lectura y perder el tiempo:
/etc/modprobe.d/raspi-blacklist.conf
y comente la entrada para i2c-bcm2708
; luego edite /etc/modules
y agregue i2c-dev
; luego reiniciar. Ahora debería tener un /dev/i2c-0
archivo especial, que es muy fácil de usar.
Aquí hay algunos ejemplos que he hecho.
Hardware:
Como mencionó Tapio, el hardware está bien documentado en http://elinux.org/Rpi_Low-level_peripherals
Software:
Hay un encabezado i2c-dev en el espacio de usuario de Linux ( #include <linux/i2c-dev.h>
). Además, necesitas un personaje que decida leer. Esto se puede hacer cargando los módulos correctos. i2c_bcm2708
para el conductor de bajo nivel y i2c-dev
para generar el personaje desciende para los autobuses. Aplicar ...
sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>
para cargarlos sobre la marcha. Aplicar ...
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
y no incluir i2c_bcm2708
en la lista negra /etc/modprobe.d/raspi-blacklist.conf
para hacer /dev/i2c-0
y /dev/i2c-1
mostrar permanentemente.
A partir de ahora, puede seguir las sugerencias sobre cómo usar el propio I²C del maestro.
Prefiero este método sobre otros, porque es platformagnóstico. linux/i2c-dev.h
También puede usarlo con otros dispositivos, siempre que exista un controlador I²C de bajo nivel.
Saludos