Forum: Mikrocontroller und Digitale Elektronik FTDI MPSSE - USB to I2C - ACK zu spät?


von Martin (Gast)


Lesenswert?

Hallo zusammen,

ich habe es nun geschafft meinen AD7147 über das FTDI Kabel, das einen 
FT232H enthält, zu verbinden und es werden zumindest bereits schon mal 
Daten übertragen.

Beim Schreiben sieht das Signal auf dem Oszi richtig aus und beim Lesen 
bis nach dem 1. Byte auch.
Dann kommt aber das ACK Signal genau gleichzeitig mit einer steigenden 
Taktflanke. Anschließend bleibt SDA immer auf high, da vermutlich der 
AD7147 keine Daten mehr schickt, weil er das ACK nicht richtig erkannt 
hat.

Wie kann ich dies beheben? Hat jemand eine Idee?
Ich verwende die libMPSSE.dll aus der original LibMPSSE-I2C. Hier gibt 
es noch eine weitere Version im File mit dem Source-Code, aber das 
Problem bleibt gleich.

Grüße,
Martin

von Jim M. (turboj)


Lesenswert?

Martin schrieb:
> Beim Schreiben sieht das Signal auf dem Oszi richtig aus und beim Lesen
> bis nach dem 1. Byte auch.
> Dann kommt aber das ACK Signal genau gleichzeitig mit einer steigenden
> Taktflanke.

Vergessen, das auch SCL nur als Open-Drain betrieben werden muss?
Schau Dir SCL auf dem Oszi sehr genau an, der Slave darf das auf Low 
ziehen für Clock-Stretching. Das müsste man eigentlich auch dann sehen, 
wenn der FTDI dort irrtümlich nicht auf Open Drain steht.

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe deine Antwort nicht 100%ig verstanden, aber sie hat mich 
zumindest so weit gebracht, dass ich folgendes festgestellt habe:

Es scheint so zu sein, dass der AD7147 versucht, den Clock noch etwas 
hinauszuzögern, was aber nicht richtig klappt, oder? An der markierten 
Stelle auf dem Bild erscheint ein Glitch der vielleicht schon als High 
durchgeht.
Wie kann ich das lösen? Ein Kondensator möglicherweise?

Grüße,
Martin

von Jim M. (turboj)


Lesenswert?

Martin schrieb:
> Wie kann ich das lösen? Ein Kondensator möglicherweise?

Nö. SCL darf nur durch den Widerstand nach high gezogen werden, bei Dir 
ist aber offensichtlich der FTDI aktiv ("scharfe" Ecke bei 0->1, das 
muss genau so rund wie bei SDA aussehen).

Ich sehe grade das SDA dasselbe Problem hat. Kennt der FTDI keinen 
vernünftigen Open Drain Mode in der Pin Konfiguration?

Clock Streching kann MPSSE übrigens gar nicht. Versuche es mal einfach 
deutlich langsamer.

von Kommunikator (Gast)


Lesenswert?

Jim M. schrieb:
> Clock Streching kann MPSSE übrigens gar nicht. Versuche es mal einfach
> deutlich langsamer.
Das ist aber schlecht! Wie soll der denn dann das ACK vernüftig handeln? 
Immerhin entsteht ja ein Delay durch die Wandlung auf USB!

Oder macht das der ACK selber und legt die Daten in einen Buffer?

von Lukas K. (carrotindustries)


Lesenswert?

Ich hatte auch mal das 'Vergnügen' mit der MPSSE I²C zu machen und hab 
es am ende vom Tag sein gelassen bzw. Bitbanging mit der MPSSE gemacht. 
Effektiv ist die MPSSE nur ein Schieberegister, mit dem man prima SPI 
und wohl auch JTAG machen kann. I²C wird mangels Open-Drain-Ausgängen 
und mehr oder minder manueller Erzeugung von Start- und Stop-Bedingung 
doch sehr wackelig.

Wenn du nicht auf den FT232H festgenagelt bist, nimm den FT4222H, der 
kann anständiges I²C und in der Revision B auch Repeated Start.

von Martin (Gast)


Lesenswert?

Hallo,

ich habe mir leider gleich das ganze Kabel C232HM-DDHSL-0 bestellt, wo 
dieser Chip verbaut ist und ja eigentlich im Datenblatt steht, dass 
dieses I2C kann. Daher wäre es schon toll, es damit zum laufen zu 
bekommen.
Es läuft ja nahezu alles, bis auf das ACK.
Im Source Code der MPSSE Lib gibt es mehrere Vorschläge 'to solve the 
glitch issue'. Es ist nur leider nicht ganz klar, ob damit dieser Glitch 
gemeint ist


Beste Grüße,
Martin

von Martin (Gast)


Lesenswert?

Hallo,

es funktioniert nun. Danke euch allen.

Ich habe eben direkt von FTDI eine Antwort erhalten mit einem Link zu 
einer Beta-Version (LibMPSSE-I2C_v0.6_BetaRelease _WindowsOnly.zip), die 
wohl diesen Fehler behebt und mit der auch weitere Bytes empfangen 
werden können.

Ich glaube nicht, dass ich das hier hochladen darf, daher schreibt 
einfach an den Support von FTDI und fragt nach dieser Version, falls ihr 
mal ähnliche Probleme habt.

Beste Grüße,
Martin

von Jack (Gast)


Lesenswert?

Hallo Martin,

Ich habe dieses Problem auch bekommen. Könnten Sie bitte die 
Beta-Version verschicken
(LibMPSSE-I2C_v0.6_BetaRelease _WindowsOnly.zip) für mich, das würde mir 
viel helfen.
Meine E-Mail ist jackpeng20060531@gmail.com

Freundliche Grüße,
Jack

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Martin schrieb:
> Ich glaube nicht, dass ich das hier hochladen darf, daher schreibt
> einfach an den Support von FTDI und fragt nach dieser Version, falls ihr
> mal ähnliche Probleme habt.

@Jack
Was meinst Du, was Martin oben dazu geschrieben hat?
Genau: Er ist sich nicht sicher, ob er die FW weiter geben darf und Er 
möchte, daß Du Dich selber an den Support wendest, um dort die FW zu 
bekommen, da Er keinen Ärger haben möchte.

Aber ja, Deutsch ist gar nicht so einfach, obwohl Da Großbuchstaben und 
Satzzeichen, meiner Meinung nach in ausreichender Menge und an passender 
Stelle, verbastelt wurden.

Dann noch viel Erfolg hier beim Warten, kannst Es gebrauchen.

MfG

von Arnaud (Gast)


Lesenswert?

Hallo Jungs,

Bitte ich habe, das selbe Problem und benötige dringend diese beta 
version.
Kann jemand mir es zur Verfügung stellen?

Mit VG

Arnaud

von Arnaud (Gast)


Lesenswert?

Hallo Jungs,

Bitte ich habe, das selbe Problem und benötige dringend diese beta
version.
Kann jemand mir es zur Verfügung stellen?

meine E-mail: ouandjas@yahoo.fr

Mit VG

Arnaud

von hedak (Gast)


Lesenswert?

Wer suchet, der findet! Hier kann man libMPSSE__0_6_Beta.zip 
herunterladen (aber nicht von mir getestet)

http://www.ftdicommunity.com/index.php?topic=23.0

Gruß

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.