Forum: PC-Programmierung FTDI unter QT


von Olaf (Gast)


Lesenswert?

Sagt mal Leute, hat es schon einer geschafft einen UMFT200XD

http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_UMFT200XD.pdf

unter QT ans laufen zu bekommen?

Dabei wird kein virtueller Comport sondern die MPSSE genutzt. Also

 QLibrary d2xx("FTD2XX.DLL");
 QLibrary lib("libMPSSE.dll");

Interessanterweise kann ich mit der FTD2XX reden. Ein Aufruf von

status = p_func_FT_CreateDeviceInfoList(&NumDevs);

liefert mir z.B eine 1 zurück wenn der Adapter angesteckt ist und 0 wenn 
nicht.

Aber bereits das hier:

   p_func_Init_libMPSSE();  //ueberfluessig?
   status =  p_I2C_GetNumChannels (&NumOfChannel);

schlägt fehl. Der Status ist FT_OK, aber NumOfChannel bleibt immer 0, 
obwohl jetzt ja eigentlich ein I2C-Channel da sein sollte.

Eigentlich denke ich, das ich da nicht mehr viel falsch machen kann, 
leider scheint die Praxis gegen mich zu sein. :-)

So sieht die Typendefinition aus:

typedef FT_STATUS (__stdcall *pfunc_I2C_GetNumChannels)(uint32_t * 
numChannels );

Wie kann es sein das die Basislibary FT2D2XX funktioniert, aber die 
darauf aufbauende Libray MPSSE nicht? Liegt das an QT? Oder muss man die 
noch irgendwie verbinden?

Olaf

von Philip K. (philip_k)


Lesenswert?

Ich kann Dir zwar nicht sagen, was da schief läuft aber mit Qt hat das 
sehr wahrscheinlich nichts zu tun. Schonmal die statischen libs 
versucht?

Ich würde Dir empfehlen zuerst einen Beispielcode von FTDI zum Laufen zu 
bringen und darauf Applikation aufzubauen. Nur mit der Doku bei 0 zu 
starten kann sich als ziemlich frustrierend erweisen...

von Olaf (Gast)


Lesenswert?

> Ich kann Dir zwar nicht sagen, was da schief läuft aber mit Qt hat das
> sehr wahrscheinlich nichts zu tun.

Jain..

> Schonmal die statischen libs versucht?

Noch nicht. Teste ich vielleicht morgen mal.


Ich vermute mal das ganze hat irgendwas mit der Uebergabe der Parameter 
an die Libary zu tun. Ich wuerde wetten das irgendwas mit den 
Aufrufkonventionen nicht stimmt. Allerdings kann man ja kaum mehr machen 
als __ccdecl, __stdcall und __fastcall auszuprobieren. Letzeres fuehrt 
zum absturzt, die beiden fuehren beiden nicht zum gewuenschten Ergebnis. 
Aber interessanterweise zu keinem Absturz.

Allerdings kann man im Internet ein paar Leute finden die keine guten 
Worte ueber libMPSSE verloren haben:

http://www.eevblog.com/forum/projects/ftdi-2232h-in-mpsse-spi-mode-toil-and-trouble-example-code-needed/

Die nutzen zwar SPI, aber es gibt wohl zumindest Anhaltspunkte das die 
Libary selber nicht so doll ist. Wobei es mich aber wundert das dies 
kaum einer nutzt. So ein USB-I2C/SPI Konverter waere ja eine tolle Sache 
um schnell mal was zu testen. Wenn denn die Libary funktionieren wuerde.

> Ich würde Dir empfehlen zuerst einen Beispielcode von FTDI zum Laufen zu
> bringen und darauf Applikation aufzubauen.

Laden der Libary und aufruf der ersten Funktion aus der Lib ist im 
Prinzip das einfachste was man dem Beispielcode entnehmen kann. Das 
zweiteinfachste, das auslesen der Seriennummer aus dem FTDI klappt im 
uebrigen auch nicht. Genauer gesagt laesst micht das vermuten das die 
Aufrufkonventionen nicht stimmen weil man jedesmal eine andere Antwort 
bekommt. Vermutlich interpretiert das der Compiler Stack oder Register 
falsch.


Olaf

von Philip K. (philip_k)


Lesenswert?

Olaf schrieb:
> Allerdings kann man im Internet ein paar Leute finden die keine guten
> Worte ueber libMPSSE verloren haben

Braucht man die denn überhaubt? Ich habe bisher nur was mit MPSSE und 
JTAG gemacht, das ging aber auch allein mit der ftd2xx lib. Es git zwar 
auch eine libJTAG, aber die habe ich nie verwendet.

von Olaf (Gast)


Lesenswert?

> Braucht man die denn überhaubt?

Naja, es besteht die Hoffnung damit ein einfaches Leben zu haben. :-)

Es geht vermutlich mit mehr Arbeit auch anders. Braucht man FTDI 
überhaubt? Das ist ja auch nur ein Microcontroller der einem das Leben 
einfacher macht. Könnte man ja auch alles selber programmieren.


Ich hab es im uebrigen gerade mal mit der statischen Library probiert. 
Das klappt auch nicht. Obwohl der Linker die libMPSSE.a findet, er 
findet die Funktionen darin nicht. Als wenn das System mit dem Format 
der Datei nichts anfangen koennte. Dabei ist die Libray angeblich sogar 
mit einem gcc 4.6.x erstellt und mein Qt verwendet 4.8.

Olaf

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.