MCP23017-E/SP wird nicht erkannt

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich versuche einen MCP23017-E/SP (einen 16bit Input-Outport Port Expander) von meinem Raspi B+ aus via I2C anzusprechen.
    (Hier wäre u.A. das Datenblatt zu finden: https://www.reichelt.de/MCP-23017-E-SP…SEARCH=mcp23017)

    Aufbau sieht so aus:

    Code
    Pin (MCP23017) | Zweck     | (Pin Raspi)
    9 (Vdd)        | 3.3V      | 1
    10 (Vss)       | GND       | 6
    12 (SCL)       | SCL       | 5
    13 (SDA)       | SDA       | 3
    18             | NOT RESET | 1 (also high Pegel)
    15             | A0        | 6 (also low Pegel)
    16             | A1        | 6 (also low Pegel)
    17             | A2        | 6 (also low Pegel)


    Alle anderen Pins am MCP und dem Raspi sind frei / mit nichts verbunden.

    Im Anhang ist der Steckplan von meinem Aufbau zu finden.


    Auf dem Pi siehts so aus:

    python-smbus und die i2c-tools sind installiert (und der rapsi wurde neu gebootet).

    Allerdings wird der MCP23017 nicht gefunden:

    Ich bin jetzt eher der Informatiker als der Elektroniker und weis nicht so recht wie ich rausfinden kann, warum das nicht klappt. Die Verdrahtung habe ich mehrfach überprüft, jeder Pin vom MCP ist wie oben beschrieben mit dem Raspi verbunden. Die vom Raspi bereitgestellte Spannung liegt (nachgemessen) bei 3.26V, also alles gut. Das ganze hab ich dann an einen Raspi B rev. 2 auch noch versucht, gleiches Ergebnis. Der MCP wurde nicht gefunden.

    Ich habe schon einige Zeit zu dem Thema gegoogelt, habe aber nicht wirklich etwas gefunden das mir weiter hilft. Wie finde ich raus, worans liegt? Könnte evtl. der MCP23017 deffekt sein?

    Für alle Tipps und Hinweise bin ich sehr dankbar ;)

    Viele Grüße,
    HaegarDerSchreckliche

  • Hi,
    bitte möglichst immer eine Zeichnung mit Fritzing o.ä. dazu anfertigen ... (einfach Steckplatinen-Ansicht, Bauteile platzieren, verdrahten und als JPG oder PNG exportieren).
    Diese verbalen Beschreibungen funktionieren erfahrungsgemäss nicht und lassen meist zu viel raum für Spekulationen ...

    Wie versorgst Du den Baustein?
    Massen verbunden?
    ...
    cu,
    -ds-


  • Aufbau sieht so aus:

    Code
    Pin (MCP23017) | Zweck     | (Pin Raspi)
    9 (Vdd)        | 3.3V      | 1
    10 (Vss)       | GND       | 6
    12 (SCL)       | SCL       | 3
    13 (SDA)       | SDA       | 5
    18             | NOT RESET | 1 (also high Pegel)
    15             | A0        | 6 (also low Pegel)
    16             | A1        | 6 (also low Pegel)
    17             | A2        | 6 (also low Pegel)

    Sieht so aus als ob du SDA und SCL vertauscht hast ;)
    Pin 3 = SDA
    Pin 5 = SCL

    Grüße,
    Joh

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (19. Oktober 2014 um 20:25)

  • Hallo,

    dreamshader: Du hast vollkommen recht, ein Steckplan hilft sicherlich viel weiter. Hab oben mal einen, der meinen Aufbau wiederspiegelt, angehängt. Der MCP hängt direkt am Raspi, also keine externe Versorung o.Ä.

    joh.raspi: Entschuldige, das war ein Tippfehler von mir. SCL vom MCP23017 hängt am Pin 5 vom Raspi und SDA vom MCP23017 hängt am Pin 3. Habs oben ausgebessert.


    Viele Grüße,
    HaegarDerSchreckliche

  • i2cdetect -y 1 bei Rev 2 Board

    würde mit aber sorgen machen wegen der Fehlermeldung
    Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory
    Werde das zuhause mal probieren - wieso sollte das nicht gehen??


    Du könntest uns noch die Ausgabe von dmesg bzgl. i2c posten

    Einmal editiert, zuletzt von evil (20. Oktober 2014 um 08:29)

  • Hallo evil,

    ich hab mich bisher an diese Anleitung gehalten: http://www.raspberrypi-spy.co.uk/2013/07/how-to…erry-pi-part-1/
    Da steht bei "Testing the Hardware" dabei, dass mit Rev2 eben der i2c-bus 1 und nicht 0 genutzt werden muss (hat sich offenbar geändert).

    Hier die gewünschten Ausgaben:

    Folgendes finde ich gerade auch sehr interessant:

    Code
    pi@surt ~ $ i2cdetect -l
    i2c-1   unknown         bcm2708_i2c.1                           N/A

    Eigentlich sollte da doch der Bus gefunden werden, oder nicht?

    Edit:
    Nach einem Reboot des Raspi siehts wieder so aus:

    Code
    pi@surt ~ $ sudo i2cdetect -l
    i2c-1   i2c             bcm2708_i2c.1                           I2C adapter

    Grüße,
    HaegarDerSchreckliche

  • Hi,
    also Verdrahtungsfehler habe ich jetzt keinen entdeckt ... schon irgendwie sonderbar.
    Dass der Bus verschwindet ist auch etwas mysteriös ... ok, Bus 0 ist nicht auf die GPIO-Leiste herausgeführt ... er sollte aber trotzdem da sein.
    So was mit einem verschwundenen Bus hatten wir aber hier schon mal ... mal suchen ...

    Ich hab' so etwas noch bei keinem meiner RPi beobachten können:


    Was hast Du denn sonst so angestöpselt? Vielleicht Spannungseinbruch?
    Wackler auf dem Breadboard? Kurzschluss? ...

    Wirklich sehr geheimnisvoll ...

    cu,
    -ds-

  • Hallo -ds-,

    am Raspi hängt sonst nur noch ein EDIMAX EW-7811UN Dongle. Auch wenn ich den wegnehme und per LAN-Kabel den Raspi ans Netzwerk hänge ist's das gleiche Phänomen.

    Spannungseinbrüche glaube ich ausschließen zu können. Wenn ich mit dem Messgerät das Potential zwischen Pin 1 (3,3V) und 6 (GND) am Raspi messe während das Breadboard mit dem Aufbau dran hängt, lese ich immer 3,26V (evtl. auch mal kurz 3,25V) ab.

    Würde bei einem Kurzschluss dann nicht die Spannung komplett wegbrechen und der Raspi abstürzen / Schlimmeres passieren?

    Wackler weis ich nicht so rechtwie ich das rausfinden soll. Hab mal mit dem Messgerät alle Leitungen durchgemessen (mit dem Diodentesterteil das Pfeift wenn Strom fließt; Entschudligt, ich weis echt nicht wie das heißt). Da hat alles gepasst.

    Zu deinen Ausgaben von i2cdetect:

    Mein Raspi B+ gibt folgendes aus, wenn alles angeschlossen ist:

    Code
    pi@surt ~ $ sudo i2cdetect -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    Mein Raspi B rev 2 folgendes:

    Code
    pi@fenrir ~ $ sudo i2cdetect -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    Beide(!) geben jedoch beim Aufruf mit Bus 0 die Fehlermeldung aus dass die entsprechenden Devices nicht gefunden werden konnten.

    Was auf dem an 0x3B hängt weis ich nicht genau, aber meiner Verdrahtung nach sollte der MCP23017 ja an Andresse 0x20 gefunden werden.


    Rein interesse halber, ihr habt eure Raspis schon auf dem neusten Stand oder?
    Nicht das da was gibt....

    Code
    pi@fenrir ~ $ uname -a
    Linux fenrir 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux
    
    
    pi@surt ~ $ uname -a
    Linux surt 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux

    Grüße,
    HaegarDerSchreckliche

  • Hm ...

    es gab, wie schon erwähnt, schon mal einen Thread zu I2C Bus 0 ( -> click <- ) ... da ist aber leider nix dabei rausgekommen.

    Kurzschluss: ich hatte gerade heute einen Arduino, bei dessen Beschaltung ich es geschafft hatte, einige Lötbrücken da zu erstellen, wo sie nix zu suchen haben. Das Teil lief anstandslos ... ich konnte ihn nur nicht neu flashen und dadurch blieb das angeschlossene TFT Display leer. Nach Entfernen der meisten Schlüsse klappte das flashen, aber das Display blieb immer noch leer ... als ich die letzte Falschverbindung gefunden und entfernt hatte, lief alles wie geplant.
    Auf den RPi übertragen würde ich sagen: kommt drauf an, was da (falsch) verbunden ist.So einen Kurzschluss merkt man evtl. nicht sofort.

    Spannungseinbruch: Auf der Platine gibt es zwei Testpunkte TP1 und TP1. Da mal messen ( -> click <- ).

    Fassen wir mal zusammen:

    1. Dir fehlt I2C-Bus 0
    2. Ein offensichtlich korrekt angeschlossener I2C Stein wird nicht erkannt
    3. Es kommt vor, dass plötzlich Bus 1 auch weg ist, der ...
    4. ... nach einem reboot wieder da ist
    5. Dieser Effekt ist sowohl auf einem B als auch auf einem B+ reproduzierbar
    6. OS Version ist aktuell
    7. Spannungseinbruch* kann vermutlich ausgeschlossen werden

    Ansonsten fällt mir nur noch ein:

    Gibt i2cdetect auf Bus 0 auch einen Fehler aus, wenn der RPi frisch rebootet ist und das Breadboard nicht angeschlossen ist?
    Gibt es evtl. in den Logs (/var/logs/) Hinweise auf Probleme mit I2C?
    Hast Du die Möglichkeit, mal was anderes mit I2C Interface anzustöpseln (anderer IC, Sensor, ...) und macht das auch Probleme?

    So langsam bin ich allerdings da mit meinem Latein am Ende ...

    cu,
    -ds-

  • Vielleicht ist einfach der IC hinüber - hast noch einen zum Testen?

    Vielleicht ist einfach der IC hinüber - hast noch einen zum Testen?


    dreamshader

    Hast du Erfahrungen mit dem B+?
    Wo ist der I2C0 bei B+?

    A quick note on the GPIO: There are actually 2 more pins in the connector – the original I2C bus that appeared on the Revision 1 boards, however this comes with a warning that the bootloader actively probes them, looking for an I2C eeprom device, to be used for further configuration by the bootloader, so connecting anything to them is not advised.

    Einmal editiert, zuletzt von evil (21. Oktober 2014 um 07:32)

  • Hi evil,


    ...
    dreamshader
    Hast du Erfahrungen mit dem B+?
    ...


    nö, leider nicht.
    Ich hab' da nur irgendwas im Hinterkopf dass da wohl ein EEPROM exisitert, das man wohl über Bus 0 auslesen/beschreiben kann ( hab' ich wohl irgendwo so nebenbei mal gelesen).
    Ansonsten sollte der I2C imho genauso wie beim B sein ... hat sich ja afaik sonst nix geändert. Bus 1 ist rausgelegt und Bus 0 wird wohl nach wie vor vom Videocore benutzt ...

    cu,
    -ds-

  • Hallo zusammen,

    ich hab mir heute einen zweiten MCP23017 geholt und siehe da, der wurde auf Anhieb erkannt und arbeitet korrekt. Habe dann nochmal den alten auf das Breadboard gesetzt, wieder nichts. Scheint so, als ob der wirklich defekt ist.

    Vielen Dank für eure Unterstützung! :danke_ATDE:

    Grüße,
    HaegarDerSchreckliche

  • Hi,
    naja ... viele Möglichkeiten hätte es eh nicht mehr gegeben.
    Bei so was merke ich, dass ich in der Regel von funktionsfähigen Bauteilen ausgehe ... hm ... scheinbar zu blauäugig :s

    Aber prima, dass der Fehler wenigstens lokalisiert ist.
    Viel Spass noch,
    -ds-

Jetzt mitmachen!

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