Wie aktiviere ich den SPI und/oder I2C Bus auf dem Raspberry Pi?

  • Wie aktiviere ich den SPI und/oder I2C Bus auf dem Raspberry Pi?


    Einleitung:
    In diesem FAQ wird beschrieben, wie der SPI bzw. I2C Bus des Raspberry Pi aktiviert wird.
    Achtung! Diese Anleitung gilt nur für für Raspbian/Wheezy vor Kernel-Version 3.18.
    Ab 3.18 ist der devicetree zu nutzen ( siehe -> hier <- ).



    Vorgehen:


    Root-Shell aufmachen:

    Code
    robot@raspberrypi ~ $ sudo bash
    root@raspberrypi:/home/robot#


    Die Datei /etc/modules ändern:

    Code
    root@raspberrypi:/home/robot# vi /etc/modules



    für I2C: i2c-dev und i2c-bcm2708 einfügen, falls nicht bereits vorhanden:


    für SPI: spi-bcm2708 einfügen, falls nicht bereits vorhanden:


    oder gleich alle drei Zeilen entsprechend anpassen (für I2C und SPI).

    Danach die Datei /etc/modprobe.d/raspi-blacklist.conf ändern:

    Code
    root@raspberrypi:/home/robot# vi /etc/modprobe.d/raspi-blacklist.conf


    Quote


    # blacklist spi and i2c by default (many users don't need them)


    blacklist spi-bcm2708
    blacklist i2c-bcm2708
    ~


    für I2C: blacklist i2c-bcm2708 auskommentieren

    Quote


    # blacklist spi and i2c by default (many users don't need them)


    blacklist spi-bcm2708
    #blacklist i2c-bcm2708
    ~


    für SPI: blacklist spi-bcm2708 auskommentieren

    Quote


    # blacklist spi and i2c by default (many users don't need them)


    #blacklist spi-bcm2708
    blacklist i2c-bcm2708
    ~


    oder eben wieder beide Einträge auskommentieren.


    Root shell verlassen:

    Code
    root@raspberrypi:/home/robot# exit
    exit
    robot@raspberrypi ~ $


    Jetzt kann das/können die Modul(e) testweise per Hand geladen werden. Dieser Ladevorgang wird durch den Eintrag in /etc/modules zukünftig bei jedem booten automatisch ausgeführt.


    Für I2C:

    Code
    robot@raspberrypi ~ $ sudo modprobe i2c-bcm2708 
    robot@raspberrypi ~ $ modprobe i2c-dev


    Für SPI:

    Code
    robot@raspberrypi ~ $ sudo modprobe spi-bcm2708


    bye,
    -ds-



  • Zwar ist dieser Eintrag schon etwas länger her, doch ich habe trotzdem eine Frage, obwohl es doch so Simpel erscheint. Auf jeden Fall habe ich das obige gemacht, wollte dann mit "i2cdetect" überprüfen, ob ich über diese Schnittstelle kommunizieren kann. Ich habe folgendes festgestellt:
    "Error: No i2c-bus specified!
    Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]
    i2cdetect -F I2CBUS
    i2cdetect -l
    I2CBUS is an integer or an I2C bus name
    If provided, FIRST and LAST limit the probing range."
    auch wenn ich noch eine "1" oder "0" hinzufüge, um auf einen bestimmten I2C Port zuzugreifen, und zu sehen, was dort ist, heisst es immer
    "Error: Could not open file `/dev/i2c-1' or `/dev/i2c/1': No such file or directory"
    Kann mir jemand helfen?
    ich bin etwas am :wallbash:
    Danke!
    Gruss DJManuel