Forum: Mikrocontroller und Digitale Elektronik wer kennt sich aus mit Cypress EZ-USB FX1 (CY7C64713)?


von Jörg H. (idc-dragon)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Jörg H. (idc-dragon)


Lesenswert?

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

von Potter (Gast)


Lesenswert?

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.

von Jörg H. (idc-dragon)


Lesenswert?

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

von Potter (Gast)


Lesenswert?

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?

von Guido (Gast)


Lesenswert?

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

von Wolfgang R. (portside)


Lesenswert?

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.

von Jörg H. (idc-dragon)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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....

von Wolfgang R. (portside)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Jörg H. (idc-dragon)


Lesenswert?

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

von Wolfgang R. (portside)


Lesenswert?

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
Noch kein Account? Hier anmelden.