Forum: Mikrocontroller und Digitale Elektronik Cypress FX2LP USB-Controler-Datenübertragung


von Gast (Gast)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?

Keiner eine Idee?

von Ekkehard D. (ekkehard)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

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.

von Ekkehard D. (ekkehard)


Lesenswert?

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