Hallo, ich habe mir die bulkloop FW für meine Zwecke umgeschrieben und alles funktioniert super. Ich habe zwei EPs (EP2 und EP6). Ich sende nun Befehle an mein USB device lege diesen in EP2 ab. Wenn EP6 "leer" ist und EP2 "voll", dann wird der Befehl ausgeführt und in EP6 die dazugehörigen Daten abgelegt. Sollten ich für solche Befehle ehr einen Control EP verwenden oder kann ich das ruhig so lassen? Der unterschied zwischen Control und Bluk Transfer ist ja eigentlich nur, dass bei jedem Control befehl jeweils der Empfänger und der Sender diesen quitieren. Beim Bulk-Transfer habe ich ja aber auch den CRC und das dreimalige wiederholen, somit sind meine Daten ja auch gesichert. Was würdet ihr mir raten bzw. was findet ihr "schöner" und somit auch korrekter. Grüße Tom
Normalerweise nimmt man die Control Endpoints für die Steuerung des USB Devices selber. Siehe auch Set Feature usw. Kannst es ruhig so lassen, wir arbeiten auch mit 2 BULK Endpoints für den Datentransfer zum/vom FPGA.
mh... bei dem Control-Transfer hat mich halt abgeschreckt, dass er die strucktur hat und dann hab ich mir halt quasi meine eigenen Befehle gemacht ;) Das ist jetzt eben ungeschickt ;) Gibt es den eine andere Begründung außer die Flexibilität die für den bulk transfer spricht?
Die Paketgröße. Der Control EP hat ja nur 64 Byte, bei NULK gehen 512 Byte. Für Steuerbefehle ohne viel Datenaufkommen ist Control OK, aber für Datenübertragung ineffizient.
mh... meine Pakete sind eigentlich nie größer als 64 kByte. Im DevKit ist aber leider kein Beispiel zu einer Übertragung mit control. Wenn ich nur ein Dev. mit einem EP erstelle, welcher vom typ Control ist. Kann ich mit der API nicht mehr auf das Device zugreifen und es kommt eine fehler meldung. Es gibt von Cypress kein Beispiel wie man Befehle an den FX2 schickt oder? Weil ich hatte damals eigentlich schon vergeblich gesucht, aber nichts gefunden und es auch nicht zum laufen bekommen. Hast du das vll. mal gemacht? Oder hast du ein mal Beispiel gesehen? Tom
Tom A. schrieb: > Wenn ich nur ein Dev. mit einem EP erstelle, welcher vom typ Control > ist. > Kann ich mit der API nicht mehr auf das Device zugreifen und es kommt > eine fehler meldung. Klar, weil es nur einen Control EP und zwar EP0 geben kann:
1 | Endpoint zero is the only CONTROL endpoint supported by the EZ-USB. |
Wenn du also unbedingt einen CONTROL EP benutzen willst, dann nur den EP0. Alles andere muss BULK oder ISO oder INTERRUPT sein. Ich frage mich, wieso du unbedingt CONTROL Transfers für deine Daten machen willst. Steckt da ein bestimmter Sinn dahinter?
Ich habe mir halt auf der µC Seite eine State-Machine aufgebaut, welche das erste Byte auswertet und dann darauf hin den Befehl (mit oder ohne Argumente, welche hinter dem Befehl kommen) auswertet und ausführt. Bei machen Befehlen werden dann Daten zurück gesendet und bei anderen eben nicht. Die Daten sind aber mit Sicherheit NIEMALS länger als 64 Byte! Hierbei dreht es sich um die Ansteuerung von ein paar digital Potis und das auslesen von Temperatursensoren. Dadruch das die Daten eben so gering sind hätte ich halt dazu tendiert, den Control zu verwenden. Außerdem sind es Steuerungen=Control und die Beschreibung vom Control-Transfer trifft halt mehr zu als BLUK, weil ich einfach keine großen Datenmengen habe. Allerdings das ganze jetzt noch nachträglich um zubauen könnte einen größeren Aufwand geben so wie ich das sehe. Ist bei JEDEM USB-Device NUR EINEN EP0, welcher vom Typ Control ist? Ich dachte, es ist so, dass es mindestens einen geben muss und das auch der EP0 sein muss. Oder ist das spezielle bei Cypress der Fall? Weil es ist ja schon sinnvoll die Daten/Befehle von mir und die ganze Numeration zu trennen. Also zwei EP zu verwenden. Vielen Dank für die Infos. Tom
Ob es immer nur einen Control Endpoint geben darf, weiß ich grade nicht, müsste man mal in die Spec schauen. Mach doch einfach, wie du es denkst und wie es funktioniert. Wir haben auch über den EP0 noch verschiedene Steuerungs-Funktionen implementiert, um an den BULK Pipes vorbei was machen zu können.
Ja, ich glaube ich werde es jetzt so lassen. Das irgendwas während dem BULK-Transfer verloren geht ist ja unwahrscheinlich. Außerdem habe ich auch einfach nicht mehr die Zeit dafür. Leider wird meine Argumentation, falls ich dazu gefragt werde halt nicht so gut sein. Die einzige Begründung ist halt, dass ich gedacht habe gut. So kritisch ist es nicht, wenn was verloren geht und das ist ja eh unwahrscheinlich. Danke für die Infos. Tom
Ist doch vollkommen korrekt. Control EP ist eigentlich für die Konfiguration, Enumeration des USB Devices an sich da. Nutzdaten werden durch die anderen EP übertragen. Und da deine Befehle eindeutig Nutzdaten sind, sehe ich da keinerlei Schwierigkeiten das zu vertreten. Verloren geht da nix, jedenfalls haben wir das auch im industriellen Umfeld bisher nicht geschafft.
Hi, das beruhigt mich jetzt aber ungemein :) Vielen Dank Chris, dann kann ich jetzt ganz beruhigt meine Präsentation vorbereiten ;) Grüße, Thomas
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.