Foto von Dr. S. Salewski

Homepage von Stefan Salewski

USB -- Universal Serial Bus

Auf dieser Seite wird eine Experimentierplatine vorgestellt, die es ermöglicht den AVR-Mikrocontroller AT90USB (1287) über den USB mit einem PC zu verbinden. Hauptzweck der Platine war die Entwicklung freier und quelloffener (GPL) USB-Firmware für diesen Controller und deren Erprobung unter GNU/Linux. Die Platine lässt sich jedoch für unterschiedliche Experimente und Mess-, Steuerungs- und Regelungsaufgaben einsetzen.

(Ich muss zugeben, dass der Schaltplan der Platine nicht gerade schön und übersichtlich ist. Das war die erste Platine, die ich mit der freien gEDA-Software erstellt hatte, und da habe ich auf die Details nicht so viel Wert gelegt. Die Platine selbst hat recht grobe Strukturen -- das war beabsichtigt, damit man sie bei Bedarf auch zuhause selbst herstellen kann.)

Weitere Informationen zum Controller und die Beschreibung der USB-Firmware (USB-Device-Stack) finden Sie hier:

Experimentierplatine für den AT90USB (1287)

Der AT90USB (1287) gehört zur Familie der AVR-Mikrocontroller und unterstützt die USB-Geschwindigkeiten Low- und Full-Speed, jedoch kein High-Speed. Der 8-Bit-Controller kann mit bis zu 16 MHz Taktfrequenz betrieben werden und führt architekturbedingt die meisten Instruktionen in nur einem Taktzyklus aus. Er besitzt bis zu 128 kByte Programmspeicher (Flash) und bis zu 8 kByte Arbeitsspeicher (RAM) und verfügt wie die anderen AVRs über viele Zusatzfunktionen wie UART, ADC, Timer und einen Komparator.

Neben dem Device-Modus unterstützt der von mir verwendete Typ 1287 auch (eingeschränkte) Host-Funktionalität (USB OTG), meine Platine wie auch meine Firmware sind jedoch nur für den Device-Modus ausgelegt. Prinzipiell sollten die Platine und die Firmware mit den Typen 1286, 647 und 646 kompatibel sein -- dies wurde jedoch nicht getestet. (Mit den neuen, kleineren Typen AT90USB162 und AT90USB82 ist die vorgestellte Platine nicht kompatibel, und die Firmware muss für diese Typen vermutlich etwas angepasst werden.)

Die Schaltung

Schaltplan AT90USB (PNG)

Die Schaltung wird über den USB mit elektrischer Energie versorgt. Die Programmierung des AT90USB kann per SPI (Serial-Programming-Interface, 6-polig) oder per USB-Bootloader erfolgen. Eine mit einem MAX232A realisierte Serielle Schnittstelle erleichtert das Debugging. Da der AT90USB bereits vom Hersteller mit einem USB-Bootloader versehen wird, kann Firmware direkt über die USB-Schnittstelle aufgespielt werden. Dafür ist die von Atmel erhältliche Software "FLIP" nötig (ursprünglich nur für Windows, seit einiger Zeit wird wohl auch Linux unterstützt), oder es kann unter Linux das freie Programm dfu-programmer von Weston Schmidt verwendet werden.

Die Platine

Platine mit AT90USB (PNG)

Das Layout der Platine wie auch der Schaltplan wurden mit der freien gEDA-Software (gschem, gsch2pcb und pcb) unter GNU/Linux (Gentoo AMD64) erstellt. Der AT90USB1287 ist im 64-poligen TQFP- und QFN-Gehäuse verfügbar -- verwendet wurde das TQFP-Gehäuse, das sich mit etwas Übung und geeignetem Lötwerkzeug noch ganz gut von Hand einlöten lässt. Die Fertigung der Platinen erfolgte aus den Gerber-Dateien bei einem Leiterplattenservice. Hier ein Foto der (von Hand) bestückten Platine:

Platine mit AT90USB (JPEG)

Die Bauteile

BauteilWertGehäuseLieferantBest-Nr.
U101 (Quarz)16 MHzXTAL_HC-49UReichelt16-HC49U-S
U102 (Controller)AT90USB1287TQFP64_14ER-Tronik8061010
U103 (RS232)MAX232ASO16ReicheltMAX 232 ACSE
LED101,LED1021206ReicheltSMD-LED 1206
C1011 uF1206CSD115-12R001
C102,...,107,110,...,112100 nF1206ReicheltX7R-G1206 100N
C108,C10915 pF0805ReicheltNPO-G0805 15P
R101,R10222 Ohm1206ReicheltSMD 1/4W 22
R103,R104,R1051 k1206ReicheltSMD 1/4W 1,0K
R10650 k1206ReicheltSMD 1/4W 51K
L10110 uH0805ReicheltJCI 2012 10u
J101CON_HDR-254P-3C-2R-6N Molex_8624ReicheltSL 2X40G 2,54
J102, ..., J107CON_HDR-254P-5C-2R-10N Molex_8624ReicheltSL 2X40G 2,54
J108CON_HDR-254P-2C-1R-2N Mill-Max_800ReicheltSL 2X40G 2,54
S101,S102 (Taster)LSH1301ReicheltTaster 9315
CONN101 (USB_B)CON_USB_TYPEB _Keystone_924ReicheltUSB BW
CONN102 (RS232)CON_DSUB_9F_AMP_747844ReicheltD-SUB BU 09EU
F101250 mAFUSE__Littelfuse_154ReicheltSMD-HASF 0,25A

(Die Bauteile kosten etwas über 20 Euro pro Platine, die Fertigung von vier Platinen aus den Gerber-Dateien ca. 60 Euro für vier Stück (Bilex)).

Auf drei Dinge sollte ich an dieser Stelle noch hinweisen: Mit normalen USB-Kabeln (ca. 2 Meter Länge) funktioniert die vorgestellte Platine problemlos. Allerdings bekomme ich sehr viele Übertragungsfehler, wenn ich ein (preiswertes) 5 Meter Kabel verwende. Abhilfe schafft ein 1 uF Keramikkondensator, der zwischen der Versorgungsspannung (VBus) und der Masse der Platine angeordnet wird. (Ich habe den Kondensator bei mir einfach nachträglich auf die Steckerleiste aufgesteckt oder auf dem Lochrasterfeld untergebracht. Man könnte auch einen der an VBus bereits vorhandenen 100 nF Kondensatoren durch ein Exemplar mit höherer Kapazität ersetzen -- besser wäre wohl diesen zusätzlich einzuplanen. Bei den ersten Platinen hatte ich außerdem auch den Pullup-Widerstand an Pin PE2 (HWB) vergessen -- fehlt dieser, so springt der Controller bei einem Reset manchmal unbeabsichtigt in den Bootloader. Diesen Pullup habe ich im Schaltplan und im Platinenlayout nachträglich ergänzt, auf dem Foto der Platine fehlt er aber. Außerdem gibt es in der USB-Spezifikation die Empfehlung, das Gehäuse der USB-Buchse eines USB-Devices nicht direkt mit der Masse des Gerätes zu verbinden. Bei einer Überarbeitung der Platine sollte man daher die Verbindung auftrennen und eine Lötbrücke oder einen (unbestückten) 0-Ohm Widerstand an ihrer Stelle vorsehen.

Über den folgenden Link können Sie sich die Schaltpläne und Platinenlayouts im gEDA Dateiformat inklusive einiger von mir generierter Schaltplan-Symbole und Footprints ("Lötflächen") als komprimiertes Tar-Archiv herunterladen. Zusätzlich sind die Schaltpläne als PostScript- und PDF-Dateien verfügbar -- für den Fall dass jemand gEDA nicht installiert hat aber dennoch die Schaltpläne ausdrucken möchte.

Um mit den gEDA-Dateien arbeiten zu können, ist außer einem (Linux)-Rechner mit einer aktuellen gEDA-Version auch die Footprint-Bibliothek von John Luciani erforderlich.

Das Schaltplan-Symbol für den AT90USB1287 und andere eventuell benötigte Symbole sind, in aktualisierter Form, auch auf www.gedasymbols.org zum freien Download verfügbar.

Zum Schluss noch einige nützliche Links: