Hallo Zusammen, Ich betreibe den USB zu Parallel Wandler FT245BM von www.ftdichip.com. Diesen Chip betreibe ich im BitBang Mode(Ohne berücksichtigung der Handshakeleitugnen). Ist es möglich, trotzdem die Handshakeleitungen RXF und TXE entsprechend zu setzen? Mein Problem ist, dass ich die Datenrichtung herausfinden muss. Oder gibt es eine andere Möglichkeit? danke für eure Hilfe chrigu
Hallo Chrigu, ja das Problem kenne ich. Ich bin zum schluss gekomen das dieser FTDI Chip eher icht das Gelbe vom Ei ist. Martin
Danke für deine Antwort! Leider bringt diese mich nicht sehr weiter! Im Programmers guide DXX2 ist der Befehl ft_SetRTS (Request to send). Setzt dieser Befehl die RXF Leitung? Und funktioniert das ganze auch im BigBang mode? Bin schon lange am programmieren, aber ich bekomme das mit den Handshakeleitungen nicht geregelt! gruss chrigu
Hi Chrigu, die Angaben, welche Du aus dem Programmers-Guide zitierst, beziehen sich auf den FT232BM. Der 245 hat ja keine RTS-Leitung. Im Bit-Bang-Modus sind die Statusleitungen ausgeschaltet. Mit dem FT2XX-Treiber kann man die Statusleitungen ansteuern. Der Bit-Bang-Modus stellt nur die 8-Portleitungen zur Verfügung. Gruß Stefan
Hallo Stefan, du hast recht gehabt, man kann die RXF und TXF Leitungen nicht selbst setzen. Leider habe ich nun ein weiteres Problem enteckt: Wenn ich 1 Byte einlesen will, und mit dem KO die Handshakeleitungen kontrolliere (WR und TXF), wird der Übergabe Zyklus nicht einmal durchlaufen, sondern ein vielfaches, vieleicht 1000 oder 10000 mal! Laut FTDI liegt das daran, dass der uC "das signal "too hard" treibt"(keine Ahnung was sie damit aussagen wollen). Sie empfehlen, ein Widerstand von 20-40 Ohm in Serie zur RD/WR leitung zu schalten. Mit dem RD hatte ich keine Probleme, leider jedoch mit dem WR:( Ich habe das mit dem Widerstand ausprobiert, leider funktionierte das nicht. Hat jemand ähnliche Probleme mit dem 245 erlebt? Wenn ja bin ich um jede Hilfe dankbar! Besten Dank! chrigu
Hi chrigu, Du redest aber immer noch vom Bit-Bang-Mode, oder? In welchem PDF von FTDI hast Du die Empfehlung zu diesem Widerstand gelesen? Und was ist ein KO? Gruß Stefan
Tschuldigung, jetzt rede ich nicht mehr vom BitBang Mode! Tut mir leid, dass ich mich nicht genug genau ausgedrückt habe. www.ftdichip.com/Support/Knowledgebase/index.html ->Technical Support -> Hardware -> General -> Why do I get repeated data when I read from the FT245BM? Das WR Signal das ich erzeuge sieht sauber aus. Das heisst ich habe kein Überschwingen. @Stefan hast du eventuell einmal ein Programm für den FT245BM geschrieben, welches im FIFO Modus ein einzelnes Byte einliest? Ich bin fast sicher, das meine Software stimmt. Aber so 100% kann man ja nie sicher sein! Besten Dank für deine Hilfe! gruss chrigu
Hallo, ich glaube ich habe das Problem "gefunden". Wenn ich den FT_Read befehl schicke, werden immer 62 Byte in den Buffer eingelesen. Ist das richtig so? Kann ich das irgendwie vermeiden? Ich habe auch noch die Frage, wie genau das mit der FIFO funktioniert. Wie sieht der Ablauf aus, die FIFO zu beschreiben und wie werden die Bytes wider ausgelesen? Und dann noch die Frage wenn man FT_Purge (RX_Buffer) benuzt, warum setzt dieser Befehl die Handshakeleitungen? gruss chrigu
Hallo Das mit den 62 Byte ist mir nicht bekannt. Wenn ich den Read-Befehl über den PC ausgebe, dann habe ich genau so viele Zeichen im Buffer wie der µC ausgesendet hat. Auch, dass der FT_Purge-Befehl die Handshakeleitungen setzt habe ich noch nicht gehört. Es kann aber sein, dass durch das Löschen des Buffers der Baustein wieder bereit ist Daten zu empfangen oder zu senden. Aber ich hatte auch das Problem mit den WR und RD-Leitungen. Ich erhielt ab und zu mal ein Zeichen doppelt. Mir wurden Pull-Up und Pull-Down-Widerstände geraten: Die WR-Leitung erhält einen 10K Pull-Down und die RD-Leitung einen 10K Pull-Up und alles funktionierte prächtig. Tschüss Martin
Das mit den 62 Bit steht im Kapitel 3.1: http://www.ftdichip.com/Documents/AppNotes/AN232B-04_DataLatflow.pdf Soweit ich das verstanden habe, werden grundsätzlich immer 62 byte in den Buffer eingelesen. Bei mir sieht das folgendermassen aus: 1. Ich führe auf Konpfdruck der Befehl FT_Read aus für 1 Byte wenn ich auf Knopfdruck 1 Byte lese, werden 62Byte inden Buffer geladen. Danach kann ich noch 55 mal 1 Byte lesen bis dann wider 62 Byte in den Buffer geladen werden. Bei dieser Methode bleibt der Inhalt des Buffer immer auf 0-> liest also die Daten nicht richtig ein. 2. Ich führe auf Knopfdruck den Befehle FT_Purge (RX) - FT_Read (1Byte) aus. Dadurch werden am Bildschirm die richtigen Daten angezeigt. Aber das Problem: FT_Purge liest 63488 byte ein. Und dort liegt das Problem, ich weiss nicht, warum er so viel Byte einlesen will, und vorallem wo er damit hingeht. (ps das handshake Signal generiere ich mit einem Monoflop, das heisst das WR Signal wird immer erzeugt sobald TXE auf Low geht) gruss chrigu
So, ich habe mich mal an den FTDI Support gewendet. Ich habe einen groben Denkfehler gemacht! Also soblad ich ein FT_Purge mache, wird der Buffer gelöscht. Er ist nun leer und kann neu beschrieben werden. Das sind die 65kbyte die ich eingelesen habe. Mit dem FT_Read wird dieser Buffer dann ausgelesen. Das heisst die Daten werden nicht direkt mit FT_Read eingelesen. FT_Read liest die Daten aus einem Buffer auf dem PC aus. Ich denke nun, dass wenn man weniger Daten auslesen will, muss man FT-SetUSBParameters benutzen. Gruss chrigu
Wie Was? Das ist doch egal, wo der Buffer ist, hauptsache er ist mit FT_Purge gelöscht. Ich hole immer so viele Daten ab, wie im Buffer stehen mit: FT_GetQueueStatus(Handle,RXQueue); Dadurch weiß ich wieviele Bytes im Buffer sind und kann sie dann entsprechend mit dem Read-Befehl abholen. Tschüss Martin
Die Standartgrösse für den RXBuffer ist 64KB, das heisst man hat 63488 Bytes nutzdaten. Mit dem Befhel FT_SetUsbParameters kann man den Buffer anpassen, das heisst verkleingern. Im D2XX Programmers Guide ist sogar ein Beispiel drin. Ich habe den Befehl ausprobiert, aber die Buffergrösse hat sich nicht verändert. Hat jemand schon erfolgreich den Befehl ausführen können? Gibt es tips? danke chrigu
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.