Mikrocontrollertechnik
2010
Firmware AT90USBKEY
Kurze Beschreibung der Firmware
1
Der AT90USBKEY ist eine billige kleine Entwicklungsplatine von ATMEL mit einem
AT90USB1287Controller.
Die Firmware besteht aus 2 Dateien (Hauptprogramm, USBBibliothek).
Es wird nur eine Konfiguration und ein Interface verwendet. Es stehen neben dem
zwingend vorgeschriebenem Endpunkt Null (EP0) noch zwei weitere Endpunkte zur
Verf gung. Ein OUTEndpunkt (EP1) erlaubt dem PC Daten zum Gerät zu senden. Ein IN
Endpunkt (EP2) ermöglicht es dem PC Daten vom Gerät zu lesen.
Hauptprogramm
:
Eine blinkende LED zeigt, dass die Firmware läuft. Mit einem Flag kann das Blinken
abgestellt werden.
USB-Bibliothek
Treiberfunktionen:
Nach dem Anstecken f hrt der PC (Host) ein Reset das Gerät (device) aus. Der USBTeil
und die interne PLL des AT90USB1287 werden eingeschaltet und initialisiert. Tritt dann ein
End of Reset Interrupt (EORSTI) auf, so kann der bei jedem USBGerät vorhandene
bidirektionelle Control Endpunkt 0 (EP0) initialisiert und aktiviert werden.
Als nächstes sendet der PC ein SETUPPaket an Endpunkt 0, das durch ein Received SETUP
Interrupt (RXSTPI) erkannt wird.
Enumeration:
Standard Requests werden vom PC mittels SETUPPaketen erfragt.
Get_Deskriptor
Das erste SETUPPaket (
) des PC erfragt (Adresse Null, Endpunkt 0) 64
Byte des GeräteDeskriptor um die maximale Paketgröße von Endpunkt 0 zu ermitteln.
Nach 8 Byte (hier befindet sich die bMaxPacketSize) bricht der PC ab und f hrt ein neues
Reset des Gerätes aus.
Set_Adress
Mit dem folgenden SETUPPaket (
) sendet der PC eine GeräteAdresse. Diese
wird von der Firmware dem Gerät zugewiesen. Das dritte SETUPPaket erfragt die 18 Byte
des GeräteDeskriptors. Dann werden mit einem vierten SETUPPaket die 9 Byte des
KonfigurationsDeskriptors erfragt. Dieses vermittelt die Gesamtlänge des Konfigurations,
Interface und aller EndpunktDeskriptoren. Ein f nftes SETUPPaket erfragt all diese
Deskriptoren (hier 5) in einer Aktion. Weitere SETUPPakete erfragen erfragen die 4 String
Deskriptoren.
Der PC kann jetzt anhand von VendorID und ProductID und der ".INF" Datei den
1 Siehe auch „usb_einfuehrung.pdf"
Firmware AT90USBKEY
1