Hardware Reference
In-Depth Information
PID3
PID2
PID1
PID0
Bedeutung
0
1
1
1
DATA2 Datenpaket
1
0
0
0
SPLIT Transaktion
1
0
0
1
IN Transaktion Token
1
0
1
0
NAK Handshake
1
0
1
1
DATA1 Datenpaket
1
1
0
0
PRE (Präa bel)
1
1
0
1
SETUP Token
1
1
1
0
STALL Handshake
1
1
1
1 DATA
Nicht alle der möglichen Packet Identifier werden in der Beispielanwendung vom
Host gesendet, und von den gesendeten PIDs werden in der Software des Beispiel-
geräts nur diejenigen ausgewertet, die für die Anwendung erforderlich sind. Ein
guter Überblick zur Paketkennung mit PIDs und den zugehörigen Transaktions-
phasen findet sich in Abschnitt 2.2.7 des Buchs „USB2.0 Handbuch für Entwickler“.
Im Programmteil USB_init der Firmware des Beispielgeräts wird der gesamte Spei-
cherbereich der Buffer-Descriptor-Tabelle zunächst mit dem Wert 0x00 beschrie-
ben.DamitistfüralleEndpointsauchUOWNauf0gesetztunddieCPUhatdie
Kontrolle über alle Register. Nachfolgend ist diese Initialisierung dargestellt.
;clear the buffer descriptors
movlw 0x00
movwf FSR0L
movlw 0x04
movwf FSR0H
movlw 0x00
movwf DescriptorPointer
erase_next_byte1
movff WREG,POSTINC0
decfsz DescriptorPointer,F
bra
erase_next_byte1
5.2 USB Endpoint Control
Für jede Endpoint-Adresse von EP0 bis EP15 gibt es ein jeweils gemeinsames Kon-
trollregister UEP0 bis UEP15, dessen Initialisierung ebenfalls maßgeblich zur Funk-
tion des Endpoint-Paares beiträgt [DataSheet: 17.2.4]. Organisatorisch sind die
möglichen 32 Endpoints also zu 16 bidirektionalen Endpoints zusammengefasst.
Die 16 Kontrollregister sind alle identisch nach dem folgenden Schema aufgebaut:
 
Search WWH ::




Custom Search