Hi, habe mal eine Frage zum FX2LP USB-Controller von Cypress. Hiermit versuche ich digitalisierte Daten von einem AD-Wandler (500kHz) per USB zum PC zu übertragen. Hierfür nutze ich das paralelle Interface (2Ports = 16 Bits). Um das Timing für den ADC zu erstellen hab ich den GPIF Designer im GPIF Master Mode verwendet. Die Datenübertragung funktioniert bei mir zur Zeit wie folgt. Ein Windowsprogramm fordert Daten an. Das erstellte Timing wird auf dem USB-Controller abgelaufen und speichert seine Daten in den internen FIFO Buffer. Zur Übertragung der Daten nutze ich den EP6 im Bulk-Transfer-Modus. Die Daten werden korrekt übertragen und in meinen Programm ausgegeben. Anschließend werden neuen Daten vom Controller angefordert. Dieser Ablauf wiederholt sich bis zum manuellen Programmende. Leider musste ich feststellen das ich fast 90% der möglichen digitalisierten Daten nicht erhalte. Die Frage ich nun wieso? Was könnte eurer Meinung nach das Problem sein oder was mache ich falsch? Jeder Tip kann hilfreich sein. Danke schonmal.
Erkläre doch bitte etwas genauer was das Problem ist. Zu Einen schreibst Du "Die Daten werden korrekt übertragen und in meinen Programm ausgegeben" zum Anderen "Leider musste ich feststellen das ich fast 90% der möglichen digitalisierten Daten nicht erhalte". Da sehe ich einen Widerspruch, der es ggf. auch den Anderen hier eine Antwort verunmöglicht. Gruß Ekehard
Hallo, der erste Beitrag war wirklich etwas unklar. Es geht um folgendendes....Soweit ich das erstelle Timing für den AD-Wandler mittels Oszi nachprüfen kann, sollte dies korrekt sein. Diese Daten sollten dann in den internen FIFO Puffern des USB-Controllers gespeichert werden und anschließend an den PC gesendet werden. Am PC muss ich jedoch feststellen, das nur ca. 10% der erwarteten Daten eintreffen. Nun ist die Frage wo kann dieser Datenverlust passieren und hat einer von euch vll. eine Idee wo ich ansetzen kann zu suchen. Ist mein erstellter Ablauf (erster Beitrag) so einsetzbar, oder sollten andere alternativen probiert werden, z.B. Streaming. Ich hoffe jetzt ist es klarer und ihr könnt mir vll. wertvolle Tips geben.
Hallo, war im Urlaub, deshalb erst jetzt eine Antwort. Daten können verloren gehen wenn sie nicht ins FIFO eingetragen werden (im Async mode Datenrate > 5MHz, im Sync mode Timing nicht eingehalten) oder nicht aus dem FIFO abgeholt werden. Um Deine SW zu prüfen solltest Du eine Firmware schreiben, die nichts Anderes macht als den verwendeten Endpunkt zu "laden" scharf machen) um sicher zu stellen, das die SW auch die erwartete Datenrate hat (suche mal nach Bulkloop Demo hier im Forum). Falls Du eine programmierbare Logik hast, kannst Du vielleicht ein Testmuster generieren, damit Du siehst ob einzelne Worte fehlen oder ganze Blöcke. Letzteres würde auf fehlerhaftes Abholen schließen lassesn, ersteres auf die o.a. Timingproblematik. BTW, über welche Datenmenge reden wir denn? Gruß Ekkehard
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.