SPI und I2C -> Vorsicht Falle ...

  • Hallo zusammen,

    ich wär jetzt bald vom Glauben abgefallen, aber ich habe es ums Verrecken nicht hinbekommen beim RPi über SPI Daten einzulesen.
    Entweder waren alle Bytes 0x00 oder 0xFF :fies:

    Das Geheimnis: in /etc/modules darf der i2c-Treiber nicht geladen werden. Die Datei /etc/modules enthält für SPI und I2C folgende Einträge:

    Code
    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    # Parameters can be specified after the module name.
    
    
    snd-bcm2835
    spi-bcm2708
    #i2c-bcm2708


    Zudem ist es sinnvoll, in der Datei /etc/modprobe.d/raspi-blacklist.conf die Einträge für I2C und SPI folgendermassen zu ändern:

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

    Wenn's bekannt war ... ich wusste das nicht, wenn's nicht bekannt war, hab' ich vielleicht den Einen oder anderen vor ein üblen Stolperdraht bewahrt.
    Naja, jedenfalls heisst das im Umkehrschluss, dass SPI und I2C parallel wohl nicht möglich ist.
    Schade ... :(

    cheers,
    -ds-


  • Wenn's bekannt war ... ich wusste das nicht, wenn's nicht bekannt war, hab' ich vielleicht den Einen oder anderen vor ein üblen Stolperdraht bewahrt.
    Naja, jedenfalls heisst das im Umkehrschluss, dass SPI und I2C parallel wohl nicht möglich ist.
    Schade ... :(

    :mad_GREEN:

    wie doof ist das denn ? damit disqualifiziert sich ja I2C und SPI TFT :wallbash::wallbash::wallbash:

    danke für die Info ! :thumbs1::danke_ATDE:

    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)

  • Servus DS,

    es wäre gut, wenn Du das auch hier posten würdest:
    https://github.com/raspberrypi/linux/issues

    Wichtig, damit es die Spezialisten für den RPi-Kernel auch mitbekommen und evtl. beheben können.

    Wegen solchen "Sachen" hab ich auch immer am liebsten den allerneuesten Kernel (derzeit 3.14.2). Ok, ein bisschen riskant - hatte aber bisher keine Probleme und notfalls ist ja auch schnell wieder downgegradet - mit crosscompiling geht's ja ruck-zuck. ;)

    Gruß nach RO!

  • Hallo zusammen,

    ich habe sowas auch schon vermutet, dass I2C und SPI nicht gleichzeitig (am gleichen Pin) genutzt werden können.

    Allerdings sollte es möglich sein, die I2C- und SPI-Funktionalitäten auf unterschiedliche Pins zu setzen. Aus welchem Grund auch immer, ist das von den Entwicklern so nicht vorgesehen gewesen.

    Wenn man den Quellcode hat / findet, der den jeweiligen Funktionalitäten Pins zuordnet, dann ist klar, was da zu ändern ist.

    Eigentlich sollte das auch durch eine grundlegende Konfiguration einstellbar sein.

    Denn ohne die oben erwähnten modprobe's verhalten sich alle GPIO-Pins identisch (ohne entsprechende Zusatzfunktionalität) - also muss es auch möglich sein, die Zusatzfunktionalitäten auf andere Pins als jetzt irgendwo festgelegt, einzustellen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • ich habe sowas auch schon vermutet, dass I2C und SPI nicht gleichzeitig (am gleichen Pin) genutzt werden können.

    die vorbelegten SPI und GPIO Pins sind doch verschieden !

    am gleich Pin ginge nur wer soft I2C machen würde auf dem SPI Port, wer macht denn sowas :mad_GREEN:

    Diagram-includes-BCM-GPIO-references.png

    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)

  • Hallo Jar,

    vielen :danke_ATDE: für die Klarstellung.

    Mich hatte das auch gerade gewundert und habe meine Literatur dazu gesichtet: Die SPI- bzw. I²C-Funktionalität wird über verschiedene GPIO-Port realisiert.

    (Jetzt bin ich noch verwirrter :s :denker: als sonst ohnehin schon).

    Nachdenklich werdend, bleibt nur :@.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Ja hey mmi und Rest der Welt ;) ...

    ob das nun ein generelles und aktuelles Problem darstellt, müsste noch verifizert werden. Ich fahre hier einen etwas älteren Kernel mit Framebuffer-Patch.
    Deshalb hab ich das auch noch nicht als issue eingekippt.
    Blöderweise brauche ich derzeit noch aber die Framebuffer-Variante.
    Ich für meinen Teil finde schon, dass es möglich sein sollte beides gleichzeitig zu fahren, also SPI und I2C. Eventuell hat das aber was mit dem Timing/CLCK zu tun - keine Ahnung :s

    Wird sich zeigen. War nur als Tipp gedacht, wenn es denn mal hakt, dass man sich nicht nen Wolf sucht ;) ...

    cu,
    -ds-

  • Sooo ....

    also mit dem aktuellen "Release" (3.12.18+) hatte ich jetzt kein Problem.
    Ich habe allerdings festgestellt, dass ich dieses SPI noch gar nicht durchschaue :( ...
    Ich frag mich z.B. was der Unterschied zwischen /dev/spidev0.0 und /dev/spidev0.1 liegt. Das komische ist nämlich, dass mein kleines Testprogramm sowohl von 0.0 als auch von 0.1 lesen kann. Die Daten sind aber unterschiedlich :s
    Die Konstellation ist folgende: ich möchte mal versuchen, einen SD-Kartenslot zu handeln. Vor einiger Zeit habe ich mir -> so <- einen Slot zugelegt. Der wird über SPI angesteuert. Nun ... als erstes habe ich keinen Plan wie ich es anstelle, dass der Adapter über Kanal 0 oder 1 erreichbar ist. Ja, und dann habe ich eben diesen sonderbaren Effekt mit den verschiedenen Daten. Ich hätte jetzt erwartet, dass das Testprogramm bei einem der beiden Aufrufe (./a.out -D/dev/spidev0.0 und -D/dev/spidev0.1).
    Ich häng einfach mal meine Erkenntnisse hier an ....
    Wer Lust hat, kann sich da ja ein wenig mit rumschlagen.

    Ich sehe schon, da werde ich wohl wieder eine Weile rumstöbern müssen ...

    bis denne dann,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!