Forum: FPGA, VHDL & Co. I2C an ICE40UP5K, ACK-Bit wird nicht erkannt, Fehler bei der Hardware?


von Urs (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir ein ICE40UP5K-Evalboard gekauft und versucht ein EEPROM 
damit zu beschreiben.

Den Schaltplan der kleinen EEPROM-Platine habe ich im Bild oben 
angehängt.
Verbunden ist die über Litzen, die Geschwindigkeit beträgt 100 kHz.

Den VHDL-Core für den I2C (FPGA-RD-02201) habe ich von der 
Lattice-Webseite bezogen.

Dieser sendet soweit auch I2C-Signale, jedoch wird das Acknowledge-Bit 
nicht runtergezogen. Bei einem alten Temperatursensor-Board passiert mir 
das selbe.

Die internen Pullups sind aktiviert.
Liegt das daran, dass die FPGA-Pins im Grundegenommen keine richtigen 
Open-Drain sind?

Grüße
Urs

von Duke Scarring (Gast)


Lesenswert?

Urs schrieb:
> Die internen Pullups sind aktiviert.
> Liegt das daran, dass die FPGA-Pins im Grundegenommen keine richtigen
> Open-Drain sind?
Gut möglich. Aber da mal zwei 'echte' Widerstände mit 3 kOhm bis 10 kOhm 
ranzumachen, sollte doch kein Problem sein.
Außerdem würde ich mit einem Oszilloskop prüfen, ob die Leitungen vom 
Master auch wirklich freigegeben werden.

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Urs schrieb:
> Die internen Pullups sind aktiviert.
Und zudem sind noch 2k2 Widerstände am EEPROM...

> Dieser sendet soweit auch I2C-Signale
Wie sehen die Flanken und die Pegel aus?
Passt das Btimuster, das auf dem Bus zu sehen ist, zu dem, was das 
EEPROM erwartet?

von Urs (Gast)


Lesenswert?

Hallo,

jap, es sah gut aus, leider habe ich aktuell kein Oszillogramm 
verfügbar, da ich in der Arbeit bin.

Die Flanken waren nicht verschliffen, etc.
Auch die Timings mit den "vierteln" vom Takt wo es wechselt hat gepasst.


Kann man prinzipiell an jeden Pin den I2C anbringen?
Die OpenCollector-Struktur stellt ja der Slave zur Verfügung.

Grüße
Urs

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Urs schrieb:
> Kann man prinzipiell an jeden Pin den I2C anbringen?
An jedem Pin, der Tristate unterstuetzt.

> Die OpenCollector-Struktur stellt ja der Slave zur Verfügung.
Am Master brauchts auch OpenCollector. Oder was, was sich so verhaelt.
Also nur low aktiv treibt, und niemals high. Sondern statt high eben den 
Ausgangstreiber abschaltet (tristate).

Gruss
WK

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Noch eine typische Fehler Quelle: Manche Datenblaetter geben die Device 
Adresse in 7bit und andere in 8bit Darstellung an. Ist die Device 
Adresse evtl. nicht korrekt?

von Fpgakuechle K. (Gast)


Lesenswert?

Duke Scarring schrieb:
> Urs schrieb:
>> Die internen Pullups sind aktiviert.
>> Liegt das daran, dass die FPGA-Pins im Grundegenommen keine richtigen
>> Open-Drain sind?

Doch FPGA-Pins sind i.d.R Tristate-fähige Pins, da hilft ein Datenblatt 
um das zu klären. Und dann ist es auch eine Frage wie man die Ausgänge 
des I2C Controllers mit den IO-Pads des FPGA verbindet.


> Gut möglich. Aber da mal zwei 'echte' Widerstände mit 3 kOhm bis 10 kOhm
> ranzumachen, sollte doch kein Problem sein.


Die 2k sind schon 'echt' genug, 10k geht schon in die Richtung zu groß.

Aus dem zerstückelten Schaltbild wird nicht klar, ob beide IC am selben 
Ground liegen. Und die Funktion des Pins 'DAP' ist auch unklar. 
Vielleicht hängt ja der Speicher im Reset/Programming fest?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.