Kann mir vielleicht jemand die Zusammenhänge mit diesem Chip, seiner Firmware und PC-Treiber(n) erklären? Hintergrund meiner Frage: Im Welec-Oszilloskop ist so einer drin, bestimmt auch in vielen anderen Geräten und Entwicklungen. Er ist dort als serielle Schnittstelle und JTAG-Interface angeschlossen. Mit einer geeigneten Firmware kann man per JTAG das Gerät umprogrammieren, aber im Normalfall über die serielle mit ihm kommunizieren. Das geschieht merkwürdigerweise mit 57600 Baud, wir hätten's aber gern schneller (>115200). USB gibt ja durchaus mehr her. Wie sage ich das der Firmware, oder brauche ich eine andere? Was für Firmwaren gibt es denn so? Sollte sich ja idealerweise gegenüber dem PC als normale USB CDC ausgeben und dort keine weiteren Treiber benötigen? Jörg
Das ist ja ein frei programmierbarrer Full-Speed USB Controller. Du kannst bei Cypress das Entwicklungspaket laden und dann deine eigene Firmware schreiben. CDC geht natürlich auch, musst du halt in der Firmware implementieren. Es gibt von Cypress auch jede Menge Beispiel-Firmware Projekte.
Danke, aber so tief wollte ich vorerst und möglichst nicht einsteigen. Gibt es nicht irgendwelche Firmware für solche Standardaufgaben? Das Entwicklungspaket habe ich mir dann doch in der Tat installiert. Was dort an Beispielen zu finden war sieht mir noch deutlich rudimentärer aus. Bin also immer noch an Tipps und Erfahrungen interessiert! Jörg
Dein Problem stellt sich nicht. Wenn der USB-Chip einen virtuellen COM-Port zur Verfügung stellt, dann werden die Daten über USB mit max. Speed übertragen. Die Baudraten-Angabe ist nur interessant, falls wieder auf RS232 zurück synchronisiert werden muss (z.B. bei einem Konverter). Es macht ja auch keinen Sinn, nur weil die COM-Schnittstelle 9600 Baud vorgibt, den USB-Kanal herunterzudrosseln.
Der CY7C64713 ist ein Konverter, bzw. wird als solcher eingesetzt. Das Gerät hat intern ein (bidirektionales) serielles Interface, das der Chip auf USB zum PC umsetzt. Es geht mir um die Baudrate dieser internen Schnittstelle. Jörg
Ein Konverter funktioniert folgendermaßen: virtueller COM-Port am PC sendet über USB mit max. USB-Datenrate (egal, ob da 9600 Baud oder 250000 Baud eingestellt sind). Die Baudrate wird quasi nur als Parameter im Bulk-Transfer eingebettet mitübergeben. Der Konverter (also Dein Mikrocontroller) liest dann den Parameter und setzt dann die reale UART - über die es dann weiter geht - auf diese Baudrate (das gilt nat. auch für Parität, usw.). Ist Deine Frage damit beantwortet, oder verstehe ich Deine Frage falsch?
Hallo Jörg, es gibt im SFN unter Welec die Firmware von Slog, die das Oszi in ein Altera-Developement-Board "umwandelt". Das funktioniert und sein Programm (8051er Code) ist offen verfügbar, kann also nach Belieben geändert werden. Ich habe bisher nur unter Linux probiert, denke aber, dass es unter Win eher leichter ist. Gruß, Guido
Wie die RS232 Übertragung in etwa über USB läuft und welche Einschränkungen die USB Zeitscheiben von 1ms bei der Übertragungsgeschwindigkeit verursachen hat FTDI für seine USB Controller in www.ftdichip.com/Documents/AppNotes/AN232-04.pdf einigermassen anschaulich dargestellt. Die Firmware auf dem Cypress Chip wird nicht wesentlich bessere Lösung bringen, solange auf einer Seite serielle RS232 steht, dies ist und bleibt eben eine byteweise Übertragung. Wenn das ganze schneller gehen soll hilft nur FX Firmware und PC-Treiber selbst schreiben auf einander abstimmen, d.h immer möglichst koplette Datenblöcke mit mindestens 64 byte über USB senden.
Hallo Guido, beim Stöbern im SVN hatte ich vorgestern auch diese JTAG-Firmware gefunden, und eine weitere, "uart2usbbridge ". Sie entspricht einem SDK-Beispiel namens Bulk Loop, nur die ID Strings sind geändert. Keine Ahnung ob die schon funktionieren soll oder nur eine rohe Ausgangsbasis ist. Muß ich mir noch mal genauer anschauen, und USB lernen... Jörg
Jörg H. schrieb: > Muß ich mir noch mal genauer anschauen, und USB lernen... Das schöne an den FX1/FX2/FX3 Controllern ist, dass man kein USB können muss. Man stellt nur ein paar Register ein und dann landen die Daten in den Endpoint Buffern. Ich bilde mir ein, bei Cypress eine Appnote für einen virtuellen COM Port mit den FX Chips gesehen zu haben....
Christian R. schrieb: > Das schöne an den FX1/FX2/FX3 Controllern ist, dass man kein USB können > muss. genau und dies führt dann zu jenen Lösungen wo immer nur ein Byte pro Frame übertragen wird um danach über den fehlenden Durchsatz zu diskutieren. Die uralt Cypress App-Note reicht auch nur zum Tastaturanschluss. Wenn man dann USB, auch die PC Treiber Seite, verstanden hat wird man sehen dass Blöcke mit 131072 Bytes die Übertragung mit den geringsten Latenzzeiten haben. Nur so kommt man auf spezifizierten Datenraten.
Jo, das ist natürlich klar. Wenn es aber unbedingt ein virtueller COM Port sein muss, und dann auch noch nach CDC, gibts halt die CDC-Klasse und die muss dann implementiert werden. Natürlich bremst man damit alles aus, aber sonst wirds halt kein COM-Port. Wir benutzen den FX2 im reinen BULK Modus mit dem Slave FIFO Interface und erreichen bei großen Blöcken die volle Geschwindigkeit von knapp über 40MB/s.
Es muß aus Sicht des PC nicht unbedingt ein serieller Port sein. Randbedingung ist nur, daß der FX1-Chip seine Daten per UART empfängt und sendet (also auf der Platine), damit wir mit der vorhandenen Schaltung arbeiten können. Jörg
Jörg H. schrieb: > Es muß aus Sicht des PC nicht unbedingt ein serieller Port sein. Dann wirkt eine neue Firmware auf dem FX1 Wunder. Verschiedene Firmware lässt sich ja jederzeit in den FX1 laden. Für die Entwickung reicht der SDCC vollkommen aus.
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.