-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Problem mit PCF8575

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2007
    Beiträge
    5

    Problem mit PCF8575

    Anzeige

    Hallo zusammen,

    im Rahmen eines kleinen Projektes muss ich als Interface zu einem Flash von Atmel (AT49BV322DT, ebenfalls insgesamt 16I/O ports) den I2C Expander PCF8575 von TI verwenden, da mein µC nicht genug I/Os besitzt.
    Nun geschiecht folgendes: möchte ich Daten schreiben, funktioniert dies einwandfrei (von den Spannungsleveln her gesehen).
    Möchte ich nun aber Daten lesen vom Flash, so liegen die korrekten Daten lediglich am Port P0 des I2C Expanders an, nicht aber an P1. Eine Messung der Spannung an den einzelnen Pins ergab (mit 330Ohm Pull Up an 5V) ca. 1.8V. Ich habe einen der Pins von P1 mal wieder getrennt während ein High Pegel vom Flash aus gesehen anlag, und es ergaben sich 3.7V.
    Hat jemand evtl. dieselbe Erfahrung gemacht wie ich oder kann mir sonst einige Tips geben?
    Betreiben tu ich die beiden ICs übrigens jeweils mit 3.3V. (=Vccq = Vpp, für Atmel Flash).

    Vielen Dank,
    Christoph

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo CGrom!

    Ich blicke Deine Schaltung mit zwei Versorgungspannungen ohne Schaltplan nicht durch. Kannst Du ein vereifachtes Schaltplan (Skizze) für ein Signal in jede Richtung posten ?

    MfG

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2007
    Beiträge
    5
    Also, wenn ich Daten in Richtung des Flashs schreiben will, habe ich wie im Schaltplan beschrieben mit 330R Pull Up an +5V eine Spannung von 4V für den High Pegel und ca. 0.3V für Low Pegel.
    Funktioniert aber auch komplett ohne Pull Ups, dann eben 0 und 3.3Volt.

    Jedoch wenn ich Daten vom Flash lesen möchte,
    funktioniert die Sache für den Port P1x vom PCF nicht mehr. Port P0x funktioniert noch korrekt, aber für den Port P1 brauche sehr starke Pull Ups, wie hier jetzt 330R um überhaupt irgendwie in den Bereich zu kommen, wo zumindest die Bitreihenfolge auch messbar an den Pins anliegt.
    Jedoch erreiche ich damit gerade mal 1.8V, und manchmal erkennt der PCF eben das als High Level an und manchmal nicht. Macht also sehr große Probleme, da eigentlcih der High Level mit 0.8xVcc spezifiert ist, also 2.64V.
    Ich habe eine high Leitung mal in vom Flash aus geschalteten Zustand getrennt, da habe ich dann 3.7V am Flash Output gemessen.
    Liegt also meiner Meinung nach ziemlcih eindeutig am PCF dass der die Signallevel runterzieht.
    Wie kann sowas sein?

    MFG Christoph
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken flash_interface.jpg   flash_interface.jpg  

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Hallo Christoph,

    hast du dir das Datenblatt angesehen ?

    The I/Os should be HIGH before being used as inputs. After power-on
    as all the I/Os are set HIGH all of them can be used as input.
    Es müssen also alle Port's, die als Eingang benutzt werden sollen mit "1" beschrieben werden.
    Erst dann können sie ausgelesen werden.

    Und das funktioniert auch ohne externe Pullupwiderstände.

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo!

    Genau auf das gleiche bin ich gekommen nach "Studieren" des Datenblates vom PCF8575, das ich von

    http://www.datasheetarchive.com

    heruntergeladen habe. Seite 8 des PDF vom Philips.

    Der albundy war aber schneller.

    MfG

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2007
    Beiträge
    5
    Hi Al,

    Ja, ich habe das so verstanden, dass ich wenn ich von Output nach Input umschalte, erst alle Output Ports high schalten muss und dann umschalten nach Input. Habe ich das falsch verstanden?
    Muss ich evtl. zuerst von der Flashseite aus gesehen alles auf High schalten und dann umschalten? Aber dann stehen sich kurzfristig 2 Ausgänge gegenüber, und das kann ins Auge gehen!

    Meine Vorgehensweise von der Programmierseite her gesehen:

    Power Up: Device ist in Input Modus
    Anschließend möchte ich aber sofort Daten schreiben:

    => Sende Befehl, Daten schreiben wie im Datenblatt beschrieben.

    Nun möchte ich ein Status Bit vom Flash abfragen, also Daten vom PCF lesen:

    => Sende Befehl, dass alle Ports (noch im Output Mode) high sind.
    => Sende Befehl, dass Ports jetzt input und Daten gelesen werden sollen.

    Ist das etwa falsch?

    MFG

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Ich würde es so machen:

    1. Flasch auf Eigänge schalten
    2. PCF auf Ausgänge schalten
    3. diese Ausgänge auf High setzen
    4. PCF auf Eigänge schalten
    5. Flasch auf Ausgänge schalten.

    Hoffentlich ist es richtig.

    MfG

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2007
    Beiträge
    5
    Coole Sache, habe den Fehler gefunden:

    Lag doch an diesem Befehl mit Ausgänge erst HIGH setzen dann umschalten.
    Ich hab das zwar getan, jedoch dummerweise an der falschen Stelle.
    Ich habe die Ausgänge HIGH gesetzt und anschließend den Befehl
    I2CTXD(OxFF00) an den I2C Expander geschickt, der den Flash in den Lesemodus versetzt. Deswegen (0xFF00) haben auch zufälligerweise die eine Seite der Ports funktioniert und die andere nicht!! Hab mich an der Stelle wohl ein wenig verhaspelt.

    Vielen Dank für eure Hilfe!
    Jetzt funktioniert die Sache hier, auch wenn ich nicht ganz auf die Pull Ups verzichten kann. Messe für High ohne die Pull Ups nur 1.9V aber mit den Pull Ups klappt das jetzt einwandfrei! Denke, da werden auch so 10k oder so reichen.
    Vielen Dank nochmal! Jetzt muss nur ncoh der Rest laufen

    MFG Christoph

  9. #9
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Ich habe die ganze Zeit an Dich geglaubt, weil wenn für jemanden das ein kleines Projekt ist, dann muss er schon was können !

    Es wäre wahrscheinlich besser die pull-up´s auf 3,3 V anzuschliessen.

    Viel Spass und Erfolg mit Deinem kleinen Projekt !!!

    MfG

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2007
    Beiträge
    5
    Ja ok, klein ist schon ein wenig untertrieben, wobei es wirklich keine große Sache gewesen wäre, hätt ich nicht usw. Ihr kennt das alle.
    Das mit den 3.3V an den Pull Ups habe ich schon umgesetzt.

    Thx to all!
    Christoph

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •