Hallo Leute, ich möchte mich gerne in die Datenübertragung über USB einarbeiten. Als Versuchsaufbau möchte ich Daten über USB an den Baustein FT4222 übertragen, der die Daten dann über SPI weiter an einen Micro Controller sendet. Ich versteh noch nicht so ganz wie ich mit einem C-Programm, geschrieben in Code::Blocks auf die USB Schnittstelle zugreifen kann. So wie Ich das verstanden habe bietet FTDI die Möglichkeit, mit Hilfe der DLL und der Bibliothek(LibFT4222.h) die Daten zu schreiben/lesen. Das bedeutet ich müsste nur die Treiber installieren und die Bibliotheken in mein C-Programm einbinden und ich könnte dann schon Daten über USB senden/empfangen..? nun weiß ich nicht ob das so richtig gedacht ist, kann mir bitte jemand weiterhelfen???
:
Verschoben durch User
Hast du schon was ausprobiert und bist damit auf ein konkretes Problem gestoßen? Oder sitzt du vor einem Blatt Papier und theoretisierst nur rum?
> So wie Ich das verstanden habe bietet FTDI die Möglichkeit, mit Hilfe > der DLL und der Bibliothek(LibFT4222.h) die Daten zu schreiben/lesen. *.h ist keine "Bibliothek". Das ist eine "Include-Datei" oder eine "Header-Datei". In der stehen nur Deklarationen der Dinge drin, die in der tatsächlichen Bibliothek resp. Library enthalten sind. Die Bibliothek resp. Library ist hier die DLL. Das ist bereits compilierter Programmcode. Um die DLL einfach nutzen zu können, stellt FTDI eine Importlibrary LibFT4222.lib zur Verfügung, die enthält den nötigen Kram, um die Verbindung zwischen Deinem Programm und der DLL herzustellen. Auf diese Importlibrary kannst Du verzichten, wenn Du mit den Win32-API-Funktionen LoadLibrary und GetProcAddress arbeiten willst. Das aber ist nur in bestimmten Fällen sinnvoll. Du musst also in Deinem Programm einerseits die Headerdatei per #include einbinden und andererseits mit* der Library LibFT4222.lib linken. > Das bedeutet ich müsste nur die Treiber installieren und die > Bibliotheken in mein C-Programm einbinden und ich könnte dann schon > Daten über USB senden/empfangen..? Ja. *) besonders coole Menschen sagen hier "gegen".
ok, super danke für die schnelle Antwort ich habe den Treiber installiert und mir von ftdi ein Beispiel Projekt geholt die Header Datei ftd2xx.h und Lib FT4222.h sind eingebunden. Bei dem ausführen des Programms kommt die Fehlermeldung das FTD2XX.dll nicht gefunden wurde. Muss ich die .dll noch irgendwie einbinden? wenn ja wie?
Erik A. schrieb: > Muss ich die .dll noch irgendwie einbinden? Nein, die muss entweder im gleichen Verzeichnis wie Dein Programm oder aber im Pfad liegen (der Pfad ist eine Liste aus Verzeichnisnamen, die in der Environmentvariablen %PATH% drinsteht). Üblicherweise sollte die DLL in c:\windows\system32 oder in c:\windows\syswow64 liegen. Wenn es eine 64-Bit-Windows-Version ist, liegt im ersten Verzeichnis* die 64-Bit-DLL, und die 32-Bit-DLL liegt im zweiten Verzeichns. Auf 32-Bit-Windows-Versionen gibt es nur das erste Verzeichnis, und in dem liegt dann die 32-Bit-DLL. Das jeweilige Verzeichnis steht aber in der Verzeichnisliste in %PATH% standardmäßig drin, daher ist anzunehmen, daß Du nicht den richtigen FTDI-Treiber installiert hast. Es gibt zwei Varianten der FTDI-Treiber, die, die einen virtuellen seriellen Port anbieten, und die, die die FT2xx-Programmierschnittstelle bieten. Vielleicht hast Du ja nur die serielle Variante installiert, dann fehlt die FT2xx-DLL. http://www.ftdichip.com/Drivers/D2XX.htm *) das klingt völlig gaga, ist aber so.
:
Bearbeitet durch User
Du kannst auch im Treber den VCP (virtual COM-Port) aktivieren und dann ohne die FTDI-DLL über sie serielle Schnittstelle senden empfangen. Windows API : CreateFile , SetComState , ReadFile , WriteFile ... oder portabel : open , tcsetattr , read , write ... Stefan
Hier geht es um die SPI-Schnittstelle, die sich doch etwas anders verhält als eine asynchrone serielle Schnittstelle, insofern ist es wohl sinnvoll, bei der FTDI-API zu bleiben.
Rufus Τ. F. schrieb: > Hier geht es um die SPI-Schnittstelle, die sich doch etwas anders > verhält als eine asynchrone serielle Schnittstelle, insofern ist es wohl > sinnvoll, bei der FTDI-API zu bleiben. Für 95% der Leute hier ist das sicher sinvoll. Der Rest kann sich bei OpenOCD anschauen wie man MPSSE zu Fuß bedient. JTAG ist ein naher Verwandter von SPI. Das hat allerdings den Schönheitsfehler dass man den FTDI Treiber nicht verwenden kann - OpenOCD will WinUSB sehen.
also habe die .dll in c:\windows\system32 gefunden und in das Verzeichnis von meinem Programm kopiert und das hat dann funktioniert. dank für die Hilfe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.