Servus, Ich verwende einen AT91 und versuche über den Bulk - IN Endpunkt Daten an den Host zu verschicken, was allerdings nicht funktioniert (CDC ACM). Verwendeter Treiber ist usbser.sys. Senden vom PC zum USB - Device ist problemlos möglich. Holt der Host die Daten selbstständig aus dem Bulk - IN - Endpunkt, oder muss man zuerst über den Interrupt - IN - Enpunkt eine Information an den Host verschicken dass Daten im Bulk IN bereit stehen? Vielen Dank schon mal für Eure Hilfe, Florian
Im Bulk-IN-Transfer muss die Serielle Schnittstelle geöffnet werden und Daten von der Schnittstelle abgefragt werden. Erst dann fühlt sich der USB-Treiber veranlasst den Bulk-Puffer abzufragen. Ob das ganze auch auf usbser.sys zutrifft kann ich allerdings nicht garantieren. BTW: Beim AN2131 musste man noch das Byte-Count-Register schreiben, damit der Controller wusste jetzt sind alle Daten zum Verschicken im Buffer sind
Nach meinem bescheidenen Wissen ist USB ein Single-Master Bus und der Host muss JEDEN Datentransfer initiieren.
Die ankommenden Daten der seriellen Schnittstelle wurden in den Bulk - IN FiFo gelegt. Anschließend wird mit dem Flag "AT91C_UDP_TXPKTRDY" signalisiert, dass der FiFo beschrieben wurde und Daten zum abholen bereit liegen. Woher bekommt der Host nun die Information, dass die Daten abgeholt werden müssen? Ist hierzu eine spezielle "Notification" über den Interrupt IN Endpunkt notwendig? Laut CDC ACM Spezifikation wird lediglich der Interrupt IN Endpunkt von Seiten des Host zyklisch gepollt.
Hallo Florian, ich mache gerade etwas ähnliches, allerdings mit einem PDIUSBD12. Den Interrupt-In-Endpunkt kannst Du völlig außen vor lassen. Das entspricht zwar nicht der Spezifikation aber es funktioniert trotzdem. Ich selbst habe bisher auch nur GET_LINE_CODING, SET_LINE_CODING und SET_CONTROL_LINE_STATE implementiert. Wenn ich neue Daten in den Bulk-In geschrieben habe, dann muß ich lediglich über den Befehl ValidateBuffer() meinem D12 mitteilen, daß die Daten gültig sind und verschickt werden können. Beim nächsten In-Token holt sie dann der Host ab. Wie es aussieht liegt Dein Problem an anderer Stelle. Gruß RalfH.
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.