I2C an ICE40UP5K, ACK-Bit wird nicht erkannt, Fehler bei der Hardware?

Gast #6949209
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
Angehängte Dateien:
Gast #6949231
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
Gast #6949350
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
#6949381
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
Gast #6953391
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren