Hallo zusammen, ich habe ein bord mit einem FTDI232R gebaut: PC <-> FTDI <-> USART eines uC. Den Treiber hab ich installiert (D2XX). Windows erkennt das device, alles scheint zu ok zu sein. Was ich nicht gefunden habe ist ein einfaches Tutorial, in dem beschrieben wird, wie man mit dem Chip Daten austauscht. Die Programme auf der FTDI Internetseite sind immer gleich so umfangreich und modular, dass es fuer Anfaenger schwierig ist. Es muss doch ein einfaches C Programm geben, in dem der Chip initialisiert wird, baudrate angeben (evtl.), 2byte schreiben und 2byte lesen... Wer so etwas kennt und bereit ist es zB hier im Forum oder in der Codesammlung zu veroeffentlichen, wuerde sicher nicht nur mir sehr helfen. Vielen dank fuer Links, Tips oder sogar Code im Voraus. macht's gut, Johannes
Hallo! Warum möchtest Du dafuer unbedingt den Direct Treiber verwenden, diesen Treiber verwenden macht doch nur Sinn wenn Du den FTDI nicht als Com Port verwenden willst, sondern z.B. nur im Bit Bang Modus. Mit dem VCP Treiber kannst Du einfach mit jedem Terminel PRG oder RS232 Komponente aus deiner Software drauf zugreifen. mfg, Bjoern
Ja, so ist es. Du installierst einfach den VCP-Preiber am PC und bekommst einen neuen COM-Port, z.B. COM5 oder so. Damit steuerst Du den FT232R an (etwa mit einem Terminalprogramm, HyperTerm, oder HTerm von Tobias Hammer (www.der-hammer.info), als ob er ein UART im PC wäre; am Chip selbst erscheinen diese Daten so, als wäre deine uC-Platine über einen MAX232 mit dem PC verbunden; daß Du es mit USB zu tun hast, kommt dabei fast nicht zum Vorschein (außer durch ein etwas verändertes Timing). Viel Erfolg Günter
Der VCP ist aber langsam. Beim FTDI245 (den darf ich grad verwenden) kommt man damit kaum über 300kbit/s ... wenn das zu wenig ist braucht's den D2XX Treiber. Bei meiner Anwenung ginge es darum Daten über den FTDI möglichst schnell (3-4Mbit/s) in den PC zu pumpen...also nur unidirektional, aber selbst da braucht man dann ja ein Programm was den Datenstrom entgegennimmt. Hat jemand solch ein Prog schonmal geschrieben? Die uC Seite ist kein Problem... Gruß Fabian
Hi Wo hast du das denn her das du mit dem VCP-Treiber auf maximal 300kbit/s kommst? Ich komme hier mit einem FT245MB und dem VCP-Treiber auf 6MBit/s. Matthias
Datenblatt FT245BM Seite eins unter Features: - Transfer Data rate to 1M Byte / Sec - D2XX Drivers - Transfer Data rate to 300 Kilobyte / Sec - VCP Drivers stimmt... sind kbyte/s nicht kbit/s ... ist aber für meine Anwenung zu langsam; ich brauch eigentlich min 500kbyte/s! Darum muss es wohl mit dem D2XX gehen. Gruß Fabian
@Johannes Ich habe schon mit dem D2XX Treiber unter VS6 C++ programmiert. Das Projekt ist allerdings nicht Open Source, aber ich kann Dir helfen bzw. Tips geben wenn Du willst. Kontakt: michael AT mictronics DOT de /Michael
#include "FTD2XX.h" class Serial { protected: FT_HANDLE mFTHandle; FTDCB mFTDCB; FTTIMEOUTS mFTTimeouts; public: bool openFTDI(DWORD devID); }; bool Serial::openFTDI(DWORD devID) { FT_DEVICE_LIST_INFO_NODE* nodesP; DWORD flags, type, id, loc; char serial[256], desc[256]; mFTHandle = INVALID_HANDLE_VALUE; if (FT_CreateDeviceInfoList(&numDevs) == FT_OK) { nodesP = new FT_DEVICE_LIST_INFO_NODE[numDevs]; if (FT_GetDeviceInfoList(nodesP, &numDevs) == FT_OK) { for (DWORD i = 0; i < numDevs; i++) { // add type, serial number checks if required if (nodesP[i].ID == devID) { FT_GetDeviceInfoDetail(i, &flags, &type, &id, &loc, &serial, &desc, &mFTHandle); FT_Open(i, &mFTHandle); break; } } } } if (mFTHandle == INVALID_HANDLE_VALUE) return false; FT_W32_SetupComm(mFTHandle, 1024, 1024); if (FT_W32_GetCommState(mFTHandle, &mFTDCB)) { if (BuildCommDCB(parameter.c_str(), &mFTDCB)) { mFTDCB.BaudRate = 4800; // ... restliche Einstellungen im DCB FT_W32_SetCommTimeouts(mFTHandle, &mFTTimeouts); return FT_W32_SetCommState(mFTHandle, &mFTDCB); } } return false; } Das Einlesen/Schreiben läuft z.B. über die, dem Win32-API nachgebildeten, Funktionen in etwa so: DWORD bytesInQueue = 0, bytesRead = 0; FT_GetQueueStatus(mFTHandle, &bytesInQueue); if (FT_W32_ReadFile(mFTHandle, bufferP, bytesInQueue, &bytesRead, NULL)) { ... } Die Übertragungsraten sollten beim FT232R bis zu 3MBit/s betragen, egal welcher Treiber benutzt wird. Beim FT245R gibt FTDI 300kByte/s für VCP und 1MByte/s für den D2XX an.
Kleiner Nachtrag: Die maximale Datenrate des FT232R ist auf 3MBit/s begrenzt, da die internen 48MHz mindestens durch 16 geteilt werden.
Hallo, herzlichen Dank an alle fuer die Antworten. ehrlich gesagt, wollte ich den D2XX Treiber nur hernehmen um etwas Neues zu lernen. Dabei entdeckt man ja oft Sachen die einfacher oder besser (oder beides) sind als das was man bisher gemacht hat. In diesem Fall scheint es nicht ganz so zu sein :)... Jedenfalls mit dem "einfacher" ists scheinbar nicht so. @arc: vielen Dank fuer den Sourcecode. Ich werd ihn gleich mal ausprobieren. mg, Johannes
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.