PC<=USB=>FT4222<=SPI=>uC // USB SPI Bridge

OP #5209697
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???
Persönliche Seite
> 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".
OP
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?
Persönliche Seite
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.
Gast
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
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.