Hardware Reference
In-Depth Information
Control-InEndpointsenden.EsisteinemGerätjedocherlaubt,wenigerByteszu
senden, als wLength gestattet. In der Gegenrichtung teilt wLength immer die exakte
AnzahlvonBytesmit,dieinderDatenphase übermittelt wird [USB 2.0: 9.3.5].
7.2 Empfang eines Standard Device Requests
Die vorstehend beschriebenen 8 Bytes werden vom Host in den Control-OUT End-
point des Geräts übertragen. Die USB-Schnittstelle des Beispielgeräts erzeugt einen
Transaction Complete Interrupt, wenn die Übertragung von Daten in den Control-
OUT Endpoint abgeschlossen ist [DataSheet: 17.5.1]. Im Buffer Descriptor Status
Register des Endpoints steht nach dem Interrupt unter anderem der Packet Identi-
fier (PID), der mit dieser Datenübertragung gesendet worden ist [DataSheet:
17.4.1.3]. Die Firmware muss den PID auswerten. Wenn er ein SETUP Token
Packet anzeigt, dann sind die empfangenen Daten darauf zu untersuchen, ob ein
Standard Device Request empfangen wurde [USB 2.0: 8.3.1 und Tabelle 8-1, 9.3.1].
;last transaction was an OUT or SETUP token
transcmplOUT_0
; test Packet Identifier (reference: USB2.0 Table 8-1)
movlw 0x00
movwf FSR0L
movlw 0x04
movwf FSR0H
movff INDF0,TINKER
movlw 0x3C
andwf TINKER ;isolate PID
movlw 0x34
cpfseq TINKER ;PID is SETUP Token
bra transtest_over_ctl_out ;if not SETUP
; compute a SETUP Token
call
getSETUP ;transfer request to RAM
bcf
UCON,PKTDIS ;clear packet transfer disable
movlw 0x00
cpfseq bmRequestType
bra reqTypeTest_2
bra requestType_00
reqTypeTest_2
movlw 0x01
cpfseq bmRequestType
bra reqTypeTest_3
bra requestType_01
reqTypeTest_3
movlw 0x02
cpfseq bmRequestType
bra
reqTypeTest_4
bra
requestType_02
Search WWH ::




Custom Search