[I2C] Wie kann ich zwei RPi über I2C miteinander reden lassen?

  • Hallo zusammen,


    nachdem ich mal eine Pause mit diesen Funkteilen einlegen musste ( sonst wäre wohl bald die netten Herren in den weissen Turnschuhen gekommen um mir eine ihrer modischen Jacken anzubieten :fies: ) habe ich mal versucht, meine beiden RPi mal über II2 zu verbinden.
    Das Ergebnis ist leider ... nix. Keiner kennt den anderen, obwohl bei beiden die I2C-Module geladen sind.
    Meine Recherchen im Internet haben leider auch überwiegend negative Ergebnisse geliefert. Anscheinend ist es nicht möglich, den RPi als IIC-Slave zu fahren.
    Kann das jemand bestätigen oder geht es doch?


    cu und danke,
    -ds-

  • Hallo DS - auch mal wieder hier? ;)


    Ich vermute, daß das IIC Modul des Kernels nur den mastermode beherrscht (slave wird am PC ja auch kaum verlangt). Man müsste den slavemode selbst programmieren. Das wäre für Dich vermutlich kein Hexenwerk, wenn man z.B. den 100 kHz Takt über pigpio erzeugen kann, evtl. gingen damit sogar auch noch 400 kHz.


    Wahrscheinlich gibt's aber auch ein IC dafür, da lohnt der Aufwand dann eher nicht.


    Servus und schöne Feiertage nach RO,
    mmi

  • Ja hey mmi, mein Freund :) ...


    das ist aber mal wieder eine schöne Überraschung :D


    Also ich treibe mich schon noch sehr oft und sehr lange hier rum ... aber ich mach das derzeit "inkognito" :fies:
    Nein, im Ernst ... ich mische derzeit überwiegend ein wenig bei meigrafds Temperatur-Sensor mit Funk mit. Ansonsten muss ich mich ein wenig zurücknehmen, denn ich merke, dass das Thema RPi langsam in Stress ausartet und mich Misserfolge teilweise sogar ärgern.
    Das muss ich nicht haben - damit ist der Spassfaktor weg, und der ist für mich Sinn und Zweck des RISC-Zwergerls ...


    Das ist auch der Grund, warum ich vorübergehend einige angefangene Geschichten (wie z.B. das TFT-Panel, ein Tutorial für Gas-Sensoren, die Oberfläche für das µController Netz usw. ) auf Eis gelegt habe.
    Zur Kommunikation innerhalb meines µController-Netzwerks bieten sich halt neben SPI, IIC, USB, ... auch Funkverbindungen an.
    Deshalb passt das Teil von meigrafd auch ganz gut in mein Muster und zudem habe ich mir mittlerweile einen Artduino zugelegt, den ich auch ganz amüsant finde. Gerade für Einsteiger in Sachen Microcontroller finde ich, ist der das non-plus-ultra :thumbs1: ...


    Das mit der IIC-Verbindung kam mir eben auch in diesem Zusamenhang in den Sinn, und was ich im Netz gefunden habe, deckt sich mit Deiner Aussage. Und zwar, dass der Kernel nicht für den Slave-Mode ausgelegt ist und der Workaraound ein "Bitbanging" des Slave-Modes ist - was eben auch nichts anderes bedeutet, als das ich das selbst implementieren müsste.
    Und ... naja, ich denke schon, dass ich das wohl hinbekomme, aber so sicher wie Du bin ich mir da nicht, dass ich das quasi aus dem Ärmel schüttle ;)


    Damit ist zumindest die Kommunikation RPi <---> RPi über IIC für mich gestorben, weil ich die beteiligten Rechner, µController und wie auch immer gerne "out of the box" verwenden möchte. Das ist aber kein Beinbruch ... ich klopfe halt das Machbare mal ab.
    Anders scheint es mit der Kommunikation RPi <---> Arduino auszuschauen. Der ATMEL hat wohl die Möglichkeit, den IIC-Bus in den Slave Modus zu schalten. Die beiden Geräte kann man - zumindest was ich bisher recherchiert habe - sogar ohne Levelshifter miteinander verbinden, da der Arduino keine Pullups auf die Versorgungsspannung hat und somit der RPi mit seinen 3v3 das Sagen hat :) ...


    Das möchte ich demnächst mal ausprobieren.
    Und nachdem ich mal wieder ein wenig über den Tellerrand geschaut habe, und Arduinos für 2,40 € das Stück (versandkostenfrei) im Netz entdeckt habe, läuft meine Phantasie-Maschine mal wieder auf Hochtouren und der Spass kehrt wieder zurück.


    Ich wünsche Dir jedenfalls noch eine wunderbare Zeit,
    falls wir uns nicht mehr lesen/sprechen ein supertolles und stressfreies Weihnachtsfest im Kreise Deiner Familie und ein erfolgreiches und erfülltes 2014.


    bye, bis zum Nächstenmal,
    -ds-

  • Dann mach es über GPIO in Software I2C auf der Slave Seite.

    "Ein jeder, weil er spicht, glaubt auch über die Sprache sprechen zu können."
    J.W. Goethe


  • Dann mach es über GPIO in Software I2C auf der Slave Seite.


    Hi Alex,


    wie schon oben erwähnt - das ist nicht sooo wichtig und sollte möglichst out of the box - ohne zusätzliche Software - funktionieren.
    Es gibt so viele Möglichkeiten, zwei RPi miteinander plaudern zu lassen, da kommt es nicht darauf an, ob IIC und/oder SPI durch das Raster fallen.
    Die beiden haben sowieso einen gravierenden Nachteil: die Buslänge ...
    Das bezieht sich alles auf diese Idee die im Moment in diesem Stadium ist.
    Die Kommunikations-Möglichkeiten untereinander und mit anderen µProzessoren ist jetzt mal so ein Nebenbei-Effekt des Temperatur-Sensors - so eine Art Machbarkeitsstudie sozusagen.
    Wenn da einige der angedachten Möglichkeiten durchs Raster fallen, ist das nicht weiter schlimm.


    Rgds,
    -ds-

  • OK! War ja nur ein möglicher Vorschlag.
    Was mich aber interessiert, hat schon jemand von euch CAN-Bus über den RBPi betrieben?
    Ich habe vor einiger Zeit ein CAN-SPI-Konverter-Modul basierend auf PIC gebastellt und fand nie
    die Zeit die PC-SPI Schnittstelle bzw. die PC Software fertig zu stellen. Mit RBPi wäre es sehr gut denkbar ihn als Steuergerät im KFZ-Bereich zu nutzen. Service-Kontrolle, Fehlerdiagnose, eCall, Datenlogger, usw... sind so Sachen die mir auf Anhieb einfallen.
    Schwerpunkt wäre die softwareseitige OBDII-Implementierung.
    Für die RBPis wäre ein CAN-Bus auch interessant als Kommunikationsbus. Es gibt kein Master und Slave,
    du steckst X-beliebigen Pi an den Bus und schon kannst du mitreden.

    "Ein jeder, weil er spicht, glaubt auch über die Sprache sprechen zu können."
    J.W. Goethe


  • wie schon oben erwähnt - das ist nicht sooo wichtig und sollte möglichst out of the box - ohne zusätzliche Software - funktionieren.


    was stört dich an seriell ? (die kannst du auch beliebig vervielfachen mit Multiplexer)

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Edited once, last by jar ().

  • Moin,


    jar: gar nix stört mich an seriell ... ich würde nur gerne wissen was ich mit welcher anderen Hardware mit Bordmitteln nutzen kann.
    RPi <---> RPi über IIC is nich, RPi <---> Arduino (oder AVR allgemein) über IIC funktioniert ohne Klimmzüge.


    @Alex:
    Hmm ... das mit dem CAN-Bus hatte ich auch mal in den Raum gestellt (siehe hier) - allerdings war das echo eher dürftig ;) ...


    ich habe aber im Hinterkopf, dass der eine oder andere hier im Forum das schon mal (erfolgreich) gemacht hat.
    Such mal nach CAN in der Suchfunktion - vllt. wirst Du da fündig.


    cu,
    -ds-


  • Moin,


    jar: gar nix stört mich an seriell ... ich würde nur gerne wissen was ich mit welcher anderen Hardware mit Bordmitteln nutzen kann.
    RPi <---> RPi über IIC is nich, RPi <---> Arduino (oder AVR allgemein) über IIC funktioniert ohne Klimmzüge.


    weil es I2C slave Treiber gibt für den AVR, was ist mit SPI ?


    MISO MOSI sollte doch gekreuzt auch mit dem PI gehen

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Hi,


    SPI steht noch aus, das hab ich noch nicht probiert - damit meine ich in keiner Form probiert, eigenes Thema, keinen Plan, keinen Peil - muss ich mich erst mal einlesen.
    Sehe ich aber auch so, dass das funktionieren müsste - der modifizierte avrdude zum Inline-Programmieren des ATMEGA spricht jaauch über SPI zum AVR-µC.
    RS232 sollte ebenfalls gehen - ich hab aber was im Hinterkopf, dass jemand damit Probleme hatte, die erst verschwanden als er einen Pegelwandler einsetzte.
    RS485 wäre auch auszuprobieren - allerdings fehlen mir dazu noch zwei RS485-Module.
    WLAN und LAN ist natürlich das Non-Plus-Ultra - zumindest zwischen zwei RPi ...


    Langsam aber sicher ...
    Ach ja: RFM12B und 2.4GHz stehen noch aus. Aber damit mag ich mich im Moment nicht rumärgern.


    cu,
    -ds-


  • RS232 sollte ebenfalls gehen - ich hab aber was im Hinterkopf, dass jemand damit Probleme hatte, die erst verschwanden als er einen Pegelwandler einsetzte.


    hmm, ich fing erst mit Pegelwandler an um den AVR mit 5V zu PI 3,3V zu koppeln


    nun da ich meine Anpassung mit 470 Ohm und Dioden habe brauchts das nicht mehr, die Pegelkonverter lauschen an beiden TxD Leitungen mit und schicken das zum PC an 2 Schnittstellen, so sehe ich was die reden und wie das Antwortverhalten ist

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)