MINIATURIZED HIGH-SPEED SDIO-WLAN INTERFACE FOR MOBILE ROBOTS

MINIATURIZED HIGH-SPEED SDIO-WLAN INTERFACE FOR MOBILE ROBOTS eingereichtes Projektpraktikum von Dinh Le Tuan Le Hai Thai Lehrstuhl für STEUERUNGS- UN...
6 downloads 0 Views 3MB Size
MINIATURIZED HIGH-SPEED SDIO-WLAN INTERFACE FOR MOBILE ROBOTS eingereichtes Projektpraktikum von Dinh Le Tuan Le Hai Thai Lehrstuhl für STEUERUNGS- UND REGELUNGSTECHNIK Technische Universität München Univ.-Prof. Dr.-Ing../Univ. Tokio Martin Buss Univ.-Prof. Dr.-Ing. Sandra Hirche

Betreuer/-in: Beginn: Zwischenbericht: Abgabe:

Prof. Dr. sc. nat. Jörg Conradt 27.10.2010 13.12.2010 31.01.2011

1

Zusammenfassung Während der Verlauf des Projektpraktikums haben wir nicht nur neue Kenntnisse über Mikrocontroller und WLAN Modul sondern allgemeine Erfahrungen gesammelt. Um die Aufgabe des Praktikums zu erfüllen, haben wir zuerst von der Installation des Mikrocontrollers, Herstellung der Verbindung zwischen Mikrocontroller und WLAN Modul über SDIO, Testen der Datenübertragungsrate und der Verbindung mit Access Point, stand-alone Platinenentwurf bis zur Herstellung der „stand-alone“ Platine praktisch durchgeführt. Wir sind der Meinung, dass die Studenten außer der Sammlung ihre praktische Erfahrungen und neue Kenntnisse noch ihre Orientierung selbst finden können.

2

INHALTSVERZEICHNIS

3

Inhaltsverzeichnis 1 Einleitung.......................................................................................................................5 1.1 Problemstellung........................................................................................................5 1.2 Aufgabenstellung......................................................................................................5 2 Softwareentwicklung.....................................................................................................7 2.1 Installation der Firmware..........................................................................................7 2.1.1 Struktur der Firmware.......................................................................................7 2.1.2 Firmware kompilieren.......................................................................................8 2.1.3 Firmware laden..................................................................................................8 2.1.4 Zusätzliche Bemerkungen.................................................................................8 2.2 Verbindungsaufbau über SDIO Schnittstelle...........................................................9 2.3 Ansteuerung des gesamten Moduls per RS232........................................................9 2.3.1 AT-Befehle........................................................................................................9 2.3.2 Eingabe unter Windows.....................................................................................9 2.3.3 Eingabe unter Linux........................................................................................10 2.3.4 Zusätzliche Bemerkungen...............................................................................10 2.4 Verbindungsaufbau zum Access Point...................................................................10 2.4.1 Verbindung zum AP ohne Verschlüsselung....................................................10 2.4.2 Verbindung zum AP mit Verschlüsselung......................................................10 2.5 Testen der Datenübertragung..................................................................................10 2.5.1 TCP/UDP.........................................................................................................10 2.5.2 Datenübertragung per TCP..............................................................................11 2.5.3 Datenübertragung per UDP.............................................................................12 2.6 Bewertung und Diskussion.....................................................................................13 3 Hardwareentwicklung.................................................................................................15 3.1 Aufgaben und Ziele................................................................................................15 3.2 Funktionale Blocks.................................................................................................15 3.2.1 Prozessor..........................................................................................................15 3.2.2 Interner Flashspeicher......................................................................................15 3.2.3 Signalgenerator................................................................................................15 3.2.4 Stromversorgung und Reset-Funktion.............................................................16 3.2.5 USB Schnittstelle.............................................................................................16 3.2.6 USART Schnittstellen.....................................................................................17 3.2.7 SDIO Schnittstelle...........................................................................................17 3.3 Schaltplan und Layout............................................................................................18

4

INHALTSVERZEICHNIS

3.3.1 Schaltplan........................................................................................................18 3.3.2 Layout entwerfen.............................................................................................18 3.4 Leiterplatte herstellen.............................................................................................19 3.5 Platine testen und in Betrieb nehmen.....................................................................20 3.6 Bewertung und Diskussion.....................................................................................21 4 Ausblick........................................................................................................................23 5 Danksagung..................................................................................................................24 Anhang............................................................................................................................25 Abbildungsverzeichnis..................................................................................................30 Literaturverzeichnis......................................................................................................32

5

1 Einleitung 1.1 Problemstellung Die kabellose Datenübertragung spielt in der heutigen Technikindustrie eine wichtige Rolle. Am Fortschritt dieser Technik wird in der Zukunft kein Weg vorbei führen. Daher gewinnt sie immer mehr an Bedeutung. Die Schwierigkeit besteht darin eine kabellose Übertragung mit hoher Datenrate und geringer Verzögerung zu gewährleisten. Eine weitere Herausforderung beim Bau eines Roboters ist die technischen Bestandteile so klein wie möglich zu halten und gleichzeitig die hohe Leistungsqualität beizubehalten. Das Ziel unseres Projektpraktikums ist es daher, ein miniaturisiertes Modul zur kabellosen Datenübertragung zwischen Roboter und Host-PC zu bauen, das all die obigen Kriterien so gut wie möglich erfüllt.

1.2 Aufgabenstellung Die Aufgabe besteht aus dem Entwurf eines in einem mobilen Roboter integrierten Modules für die Datenübertragung zwischen Roboter und Host-PC. Das auf einer standalone Platine miniaturisierte Modul besteht aus folgenden Komponenten: − Mikrocontroller Typ „Atmel SAM3U“ − WLAN-Modul Typ „WhizNets Whiz-Fi-SPI-SDIO-bgn “ Zusätzlich muss eine Softwarebibliothek für die Datenübertragung des Mikrocontrollers entwickelt werden. Hierbei geht es um folgenden Komponenten: − Infrastruktur (TCP/UDP) − Ad-Hoc (Punkt-zu-Punkt Kommunikation) Zum Schluss folgt die Bewertung der Leistung des Systems.

6

EINLEITUNG

2 Softwareentwicklung 2.1 Installation der Firmware Die Softwareentwicklung für das WLAN Modul erfolgt mit Hilfe eines Host-PC. Auf diesem Computer werden Quelltexte der zu erstellenden Firmware für dieses WLAN Modul editiert und kompiliert. Der ausführbare Binärcode wird dann in den Flash der Mikrocontroller SAM3U4E geladen und dort ausgeführt.

2.1.1 Struktur der Firmware Die wichtigen Komponenten der Firmware sind die WLAN Bibliothek, der Treiber für die Schnittstelle SDIO, UART, die Komponente für Datenübertragung per TCP oder UDP und die AT Parser zur Konfiguration des Moduls durch die AT-Befehlen. Außerdem gibt es spezifische Funktionen für den Mikrocontroller, für den Speicher und für den Interrupt Controller. Der Hersteller des WLAN Moduls WhizNets bietet ein WLAN TCP Paket. In diesem Paket liegen alle Quelltexte aus der Sprache C und die kompilierten Daten vor. Die Struktur der Pakete wird in folgender Tabelle beschrieben: Ordner

Beschreibung

WLAN-TCP\Source\apps

TCP Applikation, AT Parser

WLAN-TCP\Source\arch

Die spezifische Daten für Mikrocontroller

WLAN-TCP\Source\bsp

Die Quelltexte für Treiber UART, SDIO, usw...

WLAN-TCP\Source\common

Die Quelldaten für generelle Zweck

WLAN-TCP\Source\compiler

Die kompilierte Dateien für AT91SAM3U4E-EK

WLAN-TCP\Source\driver

Die Quelltexte für Treiber von WLAN und Speicher

WLAN-TCP\Source\tcpuip

Die Quelltexte für die Datenaustausch im Netzwerk

* wurde von Dinh Le und Hai Thai dokumentiert

8

SOFTWAREENTWICKLUNG

Eine Liste der wichtigsten Quelltexte für die Firmware liegt in dem Anhang [1] der Dokumentation.

2.1.2 Firmware kompilieren Zum Kompilieren muss der GNU-C-Compiler (GCC) auf dem Host-PC installiert werden. Hier wurde das „Code Sourcery G++“ Programm benutzt. In dem Ordner WLAN-TCP\Source gibt es die „Makefile“-Datei. Diese Datei teilt dem GCC mit, aus welchen Quelltexten die Firmware gebaut werden soll. Diese „Makefile“ kann geändert werden, um einen neue Komponenten zur Firmware hinzuzufügen oder sie zu entfernen. Im Ordner WLAN-TCP\Source liegt die Datei „Buildall.bat“. Wenn man diese Datei ausführt, dann wird der Befehl „CS-make-B“ von Code Sourcery G++ aufgerufen, um eine neue Firmware zu erzeugen.

2.1.3 Firmware laden Hierbei wird das SAM-BA Tool von Atmel benutzt, um die Firmware auf dem SAM3U4E-EK Board zu laden. Der Host-PC ist dabei mit dem Board durch USB oder UART verbunden. •

Zuerst wird das SAM3U4E-EK Board angeschaltet. Dann wird der Jumper JP1 in 2 Sekunden gesetzt um die Daten auf dem Flashspeicher zu löschen.



Der Jumper JP1 wird wieder entfernt. Das SAM-BA Tool startet.



Die richtige Verbindung zu dem Host-PC und ein richtiges Board müssen gewählt werden. Hier ist das Board „at91sam3u4-ek“.

Danach öffnet sich ein Fenster. In der Option „Sendfile“ kann man hier die Firmware wählen, um die Binär Datei auf den Flash zu laden. Wenn die Datei „TBINFILE.BIN“ auf dem Mikrocontroller versandt wurde, muss man die Option „ Boot from Flash“ auswählen.

2.1.4 Zusätzliche Bemerkungen Um die Firmware zu ändern, kann alles in der „Makefile“-Datei editiert werden. Anstelle von „Code Sourcery G++“ kann auch „WINARM“ benutzt werden. Man muss hier nur die Datei „Buildall.bat“ ändern. Wenn man den Host-PC mit Windows XP benutzt, sollt man den Treiber für das USB Gerät installieren. Beim Laden der Firmware sollte darauf geachtet werden, dass das SAM3U4E-EK Board nicht nur einen internen Flashspeicher enthält, sondern auch PSRAM und externen NANDFLASH. Zuerst sollte man das Board „at91sam3u-ek“ wählen. Für die spätere Anwendungen sollte man das Skript „at91sam3u4-ek.tcl“ ändern (siehe Anhang [2]). *

9

2.2 Verbindungsaufbau über SDIO Schnittstelle Das WLAN Modul von WhizNets kann sowohl per SPI als auch per SDIO mit dem SAM3U4E-EK Board verbunden werden. Um die Verbindung aufzubauen und danach die Übertragungsrate zu testen, wird die SDIO Schnittstelle benutzt. Die SDIO Schnittstelle zwischen Mikrocontroller und WLAN Modul besteht aus Leitungen für Stromversorgung, Daten, Befehl, Takt-Signal, Reset-Signal und GND. Die zehn Leitungen wurden mit dem Mikrocontroller folgendermaßen verbunden (siehe Abbildung [3.3])

2.3 Ansteuerung des gesamten Moduls per RS232 In diesem Abschnitt wird die Steuerung des gesamten Modul durchgeführt. Dazu wird das gesamten Modul per RS232 als von Hersteller gewählte USART mit PC verbunden. Dieses kann durch die AT-Befehle mit Hilfe von Programmen wie „HyperTerminal“, „Terminal 1.9“, „minicom“ oder „gtkterm“, usw... gesteuert werden.

2.3.1 AT-Befehle Die Anleitung für die AT-Befehle, mit denen das gesamte Modul angesteuert wird, befindet sich in der Datei „AT_Command_Reference_Guide“. Um die Verbindung mit einem Access Point (AP) z.B: „Cotesys“ zu konfigurieren, sollte man z.B. folgende AT-Befehlsreihe eingeben: No.

AT-Befehl

Erklärung

1

AT

Aktivieren der AT-Befehle

2

ATV1

3

AT#WLANSSID=“Cotesys“

Änderung der SSID

4

AT#WLANENABLE

Aktivieren der automatischen Verbindungsfunktion

5

AT#SERCURITYMODE=4

Auswahl der Verschlüsselung mit WPA2

6

AT#WPA2PSKKEY1=“password“ Eingabe des Passworts

7

AT#DHCP=1

Aktivieren des DHCP Clients

8

AT#RESET

Neustart

9

AT#WLANCONNECT

Herstellen der Verbindung

2.3.2 Eingabe unter Windows •

„HyperTerminal“: Als Testzweck hat der Hersteller das „HyperTerminal“ Programm empfohlen, damit man mit AT-Befehle durch dieses Programm

10

SOFTWAREENTWICKLUNG

das Gesamtmodul steuern kann. Mit diesem Programm kann die Verbindung zwischen Host-PC und dem SAM3U4E-EK Board durch serielle Schnittstelle hergestellt werden. •

„Terminal 1.9“: Das Programm funktioniert gleich wie „HyperTerminal“ und erfüllt die Funktion eines Terminalemulation-Programm.

2.3.3 Eingabe unter Linux •

„minicom“ ist eine textbasierendene Terminalemulation für Modem- und serielle Kommunikation für Linux.



„gtkterm“ ist ein kleines schnelles Terminal. Es unterstützt mehrere Terminals innerhalb eines Fensters in sogenannten Reitern.

2.3.4 Zusätzliche Bemerkungen Es ist nicht empfehlenswert, mit „HyperTerminal“ das Gesamtmodul zu steuern. Es gab Fehler bei der Text-Darstellung der Rückmeldung. Das Programm ist auch manchmal hängen geblieben. Mit „Terminal 1.9“ war die Text Darstellung der Rückmeldung besser, das Programm ist wenige Mal hängen geblieben. „minicom“ und „gtkterm“ brachte die besten Ergebnisse unter Linux.

2.4 Verbindungsaufbau zum Access Point 2.4.1 Verbindung zum AP ohne Verschlüsselung Die Verbindung zwischen dem Gesamtmodul und dem AP ohne Verschlüsselung war immer erfolgreich. Getestet wurden die AP von „Linksys WRT110“, „HP MSM442“ und „HP MSM310“.

2.4.2 Verbindung zum AP mit Verschlüsselung Die Verbindung zum einem AP von „Cotesys“-Netzwerk war sowohl für WPA1 als auch für WPA2 nicht möglich. Der Fehler liegt im MIC-Verfahren. Nur mit dem TestAP „Linksys WRT110“ konnte eine Verbindung aufgebaut werden.

2.5 Testen der Datenübertragung 2.5.1 TCP/UDP TCP ist ein Transportprotokoll mit aufwendigen Regeln für die fehlerfreie Datenübertragung. Es gewährleistet den sicheren und fortlaufenden Datentransfer zwischen zwei Kommunikationspartnern. TCP bietet eine Datenflusskontrolle, Fehlererkennung und Fehlersicherung. Deswegen läuft ein Paket per TCP im Netzwerk sicher aber langsamer als per UDP Transport. UDP ist ein einfaches Transportprotokoll,

11 welches die Nutzdaten als simple Datentelegramme versendet. Es gibt bei diesem Protokoll für die Sender keine Rückmeldungen, ob ein verschicktes Datengramm an einen Empfänger erreicht hat. Das TCP Protokoll wird für e-mail, http, usw... benutzt und UDP Protokoll sind für die Übertragung von Multimedia geeignet.

2.5.2 Datenübertragung per TCP 2.5.2.1 Datensenden und Empfangen von PC In diesem Abschnitt wird das Senden und Empfangen von Daten von einem Host-PC zu anderem Computer beschrieben. Mit der AT-Befehle und das „minicom“ Programm und ein aktiviertes „zmodem“. Hier werden AT-Befehle zur Konfiguration den TCP Server auf dem SAM3U4E-EK Board verwendet. Folgende Befehle müssen angegeben werden: No.

AT-Befehl

Erklärung

1

AT#TCPPORT=1,3000

TCP Server des WLAN Moduls öffnet sich den Port 3000

2

AT#TCPSERV=1,“192.168.0.101“ „192.168.0.101“ ist IP vom Test-PC

3

AT#DLEMODE=1,0

4

AT#TCPTXDELAY=1,0

5

AT#TCPAUTOLISTEN=0

6

AT#AUTOCONNECT=0

7

AT#WLANCONNECT

8

AT#CONTERMINATE=1

9

AT#LTCPSTART=1

Nach dem Ausführen der Befehle wartet das WLAN Modul auf eine TCP-Verbindung vom Test-PC

Folgender Befehl wird in das Terminal des Test-PCs eingegeben: sz -- tcp-client : z.B. : sz -- tcp-client 192.168.0.102:3000 ein_text Wegen der langsamen RS232 Verbindung konnte der Datendurchsatz nur bis 115200 bps erreicht werden.

2.5.2.2 Datensenden vom das Gesamtmodul Um der tatsächliche Datendurchsatz der Verbindung zu messen, müssen einige Änderungen im Quelltext der Firmware von WhizNets durchgeführt werden (siehe Anhang [3]). Zuerst muss das WLAN Modul auf eine TCP-Verbindung warten. Eine „Telnet“Verbindung zwischen dem WLAN Modul und Test-PC wird aufgebaut. Folgender Befehl wird in das Terminal des Test-PCs eingegeben: telnet

12

SOFTWAREENTWICKLUNG

z.B. : telnet 192.168.100.104 3000 Nach einer erfolgreichen Verbindung wird das Programm auf dem Mikrocontroller eine Datei an den Test-PC senden. Die Information über gebrauchte Zeit für die Übertragung wird gemessen, dadurch wird ein Datendurchsatz berechnet. Mit dem AT-Befehl: AT#WLANDATARATE=AUTO (oder 11, 12, 24, 36, 48, 54) kann die Datenrate vom WLAN Modul geändert werden. Das Ergebnis sieht folgendermaßen aus: Einstellung des WLAN Moduls

Mittlere Datendurchsatz

11Mbps

1,5Mbps

24Mbps

1,7Mbps

36Mbps

1,8Mbps

48Mbps

1,9Mbps

54Mbps

Das Programm ist hängen geblieben

Allerdings sind die erreichten Datenraten noch nicht bei dem, was die Firma WhizNets uns versprochen hatte (6-8Mbps Datendurchsatz).

2.5.3 Datenübertragung per UDP 2.5.3.1 Datensenden und Empfangen mit PC Neben dem TCP Protokoll wird die Datenübertragung per UDP Protokoll auch untersucht. Zuerst wird der UDP Server auf dem SAM3U4E-EK Board konfiguriert. Folgende Befehle müssen angegeben werden: No.

AT-Befehl

Erklärung

1

AT#UPDPORT=3000

UDP Server des WLAN Moduls öffnet sich den Port 3000

2

AT#UDPSERV=“192.168.0.101“

„192.168.0.101“ ist IP vom Test-PC

3

AT#UDPDLMODE=1

4

AT#UDPTXDELAY=20

5

AT#WLANCONNECT

6

AT#CONTERMINATE=1

7

AT#LUDPSTART=3000

Nach dem Ausführen der Befehle wartet das WLAN Modul auf eine UDP-Verbindung vom Test-PC

Auf dem Test-PC wird das Programm „Comm Operator Pal“ benutzt, um eine UDP Verbindung herzustellen. Die Konfiguration für „Comm Operator Pal“ sieht folgendermaßen aus: Nach der Konfiguration können die Daten übertragen werden.

13

2.5.3.2 Daten Senden und Empfangen mit Mikrokontroller Um der tatsächliche Datendurchsatz der Verbindung zu messen, müssen einige Änderungen im Quelltext der Firmware von WhizNets durchgeführt werden (siehe Anhang [4]). Das Ergebnis sieht folgendermaßen aus: Einstellung des WLAN Moduls

Mittlere Datendurchsatz

Datenempfang

11Mbps

2,59Mbps

122Kbytes

24Mbps

3,27Mbps

122Kbytes

36Mbps

3,27Mbps

60Kbytes

48Mbps

3,37Mbps

86Kbytes

54Mbps

3,36Mbps

121Kbytes

auto

3,22Mbps

122Kbytes

2.6 Bewertung und Diskussion Während der Beschäftigungszeit mit der Softwareentwicklung hatten wir einige Schwierigkeiten im Vergleich unserer Erwartung. Die Schwierigkeiten waren vor allem, dass man den Skripten von WhizNets lang einarbeiten sollte, um den Test der Datenübertragung durchführen zu können. Allerdings sind die erreichten Datenraten noch nicht bei dem, was die Firma WhizNets uns versprochen hatte (6-8Mbps Datendurchsatz). Es könnte uns erleichtern, wenn die entsprechende Firmware rechtzeitig vorhanden würde. Beispielweise traten die Firmwareprobleme sowohl in der Version 1.0 mit Software-Handshake der Datenflusssteuerung als auch in der Version 3.0 mit dem MIC Verfahren auf. Da die Firmware die entsprechende Codes für die Datenaustausch über TCP und UDP schon enthält, haben wir uns auf die Messung und die Auswertung der Geschwindigkeit der Datenübertragung konzentriert. Um das Projektpraktikum besser durchzuführen, sollte man bei einem Problem der Firmware die Fehler zuerst vorsichtig interpretieren und dann korrigieren, also nicht in nächste Schritt weiterspringen. Damit das Modul einwandfrei betrieben werden kann.

14

SOFTWAREENTWICKLUNG

3 Hardwareentwicklung 3.1 Aufgaben und Ziele Die Aufgaben der Hardwareentwicklung war es, eine möglichst einfache Schaltung mit allen notwendigen Komponenten zu entwerfen, um eine „stand-alone“ Platine herzustellen. Wir haben EAGLE gewählt, weil das Programm einfach zu bedienen ist und einen guten Support bietet.

3.2 Funktionale Blocks 3.2.1 Prozessor Die Hauptkomponente des Boards ist ein Atmel Cortex-M3 SAM3U4E Mikrocontroller im 144-pins LQFP Gehäuse. Der Vorteil ist vor allem, dass der Mikrocontroller viele Kommunikationsinterfaces besitzt. Außerdem besitzen die SAM3 MCUs die Fähigkeit, dass das komplette Flash und die zugehörigen „Security/Lockbits“ ohne zusätzlich Hardwaretools über die USB oder Debug UART programmiert werden können.

3.2.2 Interner Flashspeicher Der SAM3U4E Chip enthält einen 256 Kbytes Flashspeicher, welches die Software von WhizNets voraussetzt. Das Schreiben der Software erfolgt mit Hilfe von dem SAM-BA Tool von Atmel über serielle Schnittstelle wie USB oder UART.

3.2.3 Signalgenerator Der Signalgenerator besteht aus zwei wichtigste Quellen: 1. einem „on-chip“ RC Oszillator (die Frequenz kann zwischen 4/8/12 MHz ausgewählt werden. Die Voreinstellung beträgt 4 MHz), 2. einem externen 3-20 MHz Quarzoszillator (für die Anwendung der „highspeed“ USB Schnittstelle wird einen 12 MHz benötigt).

* wurde von Tuan Le dokumentiert

16

HARDWAREENTWICKLUNG

Abbildung 3.1: Signalgenerator Diagramm

3.2.4 Stromversorgung und Reset-Funktion Da das WLAN Board ein Teil des „miniaturized autonomous flying vehicles“ Projekts ist, wird das Board mit einer +5V Spannung vom z.B. Mikrocontroller des Helikopter versorgt. Der Spannungsregler MIC5219 von Micrel sorgt für die +3.3V Eingangsspannungen des Mikrocontrollers SAM3U und des WhizNets WLAN Moduls. Um die Programmierung zu erleichtern, wird außerdem der Jumper JP2 für die Stromversorgung über USB gesetzt. Wenn der Jumper JP2 zwischen USB(+) und +5V gesetzt ist, dann wird das ganze Board über USB mit Strom versorgt. Um den Flashspeicher zu löschen, Security-Bit und General Purpose NVM Bits (GPNVMx) des Mikrocontrollers zurückzusetzen, wird der Jumper JP1 gesetzt. Es benötigt hier keinen pull-down Widerstand, weil es einen internen 15kOhm vom SAM3U4E gibt. Der Löschjumper muss länger als 220ms gesetzt werden. Die RESET Taste S1 bietet eine „power-on“ Reset-Funktion. Dadurch wird sowohl der Chip als auch die Backup-Region neu gestartet.

3.2.5 USB Schnittstelle Die schnellste Kommunikationsmöglichkeit, die der Mikrocontroller SAM3U bietet, ist eine „high-speed“, „plug-and-play“ USB 2.0 Schnittstelle mit einer Geschwindigkeit bis zu 480 Mbps. Der Eingangsspannung des Mikrocontrollers sollte großer als 3V sein, um die USB Schnittstelle zu aktivieren. Das Booten mit USB vom Mikrocontroller erfolgt durch eine Schwingung mit 12 MHz Signal, das der Quarz oszilliert.

17

Abbildung 3.1: Stromversorgung aus USB

3.2.6 USART Schnittstellen Bei der aktuellen Firmware von WhizNets wird der Mikrocontroller beim Booten USB automatisch deaktiviert. Die USART Schnittstelle benötigen wir für die Konfiguration des WLAN Boards. Für spätere Anwendungen bietet das WLAN Board insgesamt 4 USART Schnittstellen mit TXD, RXD Signale und Steuerleitungen RTS, CTS mit Software Handshake an. Die Datenübertragung erfolgt mittels RS232-Standard.

3.2.7 SDIO Schnittstelle Für die Kommunikation zwischen dem Mikrocontroller und dem WLAN Modul sorgt eine 4 Bits SDIO Schnittstelle. Die Pinbelegung sieht folgendermaßen aus:

Abbildung 3.2: Whiz-Fi-SDIO Verbindungen

18

HARDWAREENTWICKLUNG

3.3 Schaltplan und Layout 3.3.1 Schaltplan Nach dem wir die notwendigen Blocks definiert und alle benötigen Komponenten ausgewählt haben, erstellen wir das Schematic, das den symbolischen Schaltplan darstellt. Als erstes wurde eine Bibliothek für den Mikrocontroller Atmel SAM3U mit dem Package LQFP144 entworfen. Die Darstellung des Bauteils wird in zwei Bereiche geteilt: einen Block für die Ein-/Ausgang und einen Block für den Stromversorgungseingang und Ausgang. Für Testzwecke wird zusätzlich ein Adapter für den Mikrocontroller benutzt. Da viele Pins des SAM3U Mikrocontroller nicht gebraucht wurden, wurde die Bibliothek angepasst (siehe Anhang [5]).

Abbildung 3.3: LQFP144 zu PGA144 SMT Adapter und die angepasste Pins

3.3.2 Layout entwerfen Nach der Schaltplan wird das Platinenlayout angefertigt. Der Entwurf des Platinenlayout erfolgt durch 2 Schritte: 1. Anordnen der Bauteile auf der Platine Zunächst sollten die Bauteile so angebracht werden, dass die Verbindungen einfach zu finden sind. Kondensatoren sollten möglichst nahe der Bauteile zur Glättung der Versorgungsspannung verbaut werden. Außerdem wurde es auch versucht, die Anzahl der Durchkontaktierung so gering wie möglich zu halten. 2. Festlegen des Verlaufs der Leiterbahnen Der Abstand zwischen den Leiterbahnen wird optimiert. Quarz und USB-Buchse werden so nahe wie möglich an die Pads gebracht. Weil es dort viele Signale mit hohen Frequenzen gibt, und diese nicht über lange Leitungen geführt werden dürfen. Die Leiterbahnen werden in 2 Layer geroutet (siehe Anhang [6]).

19

3.4 Leiterplatte herstellen Die Herstellung der Leiterplatte wird mithilfe des Fräsbohrplotters LPKF ProtoMat C30s durchgeführt. Zuerst wird das Layout mit verschiedenen Schichten in GERBER_R274- (Layoutdaten) und EXCELLON- (Bohrdaten) Datei exportiert. Dabei wird der CAM-Prozessor von EAGLE zur Ausgabe der Dateien benutzt. Der Gerber-Job besteht aus 2 Einzelschritten, für Oberseite und Unterseite der doppelseitigen Kupfer-Platine. Die Dateien werden danach in CircuitCAM zu Produktionsdaten aufbereitet und als LMD-Datei exportiert. Danach werden die Konturen und Stege generiert. Die Isolationsflächen, in denen das Kupfer zwischen den Leiterbahnen entfernt wird, werden definiert. Auch die Konturen der Leiterbahnen werden entfernt. Beim Exportieren wird für die Produktion mit dem LPKF-Fräsbohrplotter die LMD-Datei benötigt. Produktionsphase

Arbeitsschritte

Bearbeitete Materialseite

1. MarkingDrills

Bohrung körnen

2. DrillingPlated

Löcher für Unterseite Durchkontaktierung bohren

3. MillingBottom

Fräsen

Unterseite

4. MillingTop

Fräsen

Oberseite

Abbildung 3.4: Untere Lötseite der gebohrten Platine

Unterseite

20

HARDWAREENTWICKLUNG

3.5 Platine testen und in Betrieb nehmen In nächsten Schritt wird die Experimentierplatine mit Hilfe des Bestückungsplans bestückt. Dann werden Verbindungen zu Nachbarpins durch überschüssiges Lot überprüft. Der Mikrocontroller wird erst dann gesteckt, wenn die Schaltung unter Spannung auf Fehlerfreiheit getestet ist. Zum Testen wird die Versorgungsspannung von 5V an die beiden Eingangspins gelegt und zunächst einmal über ein Amperemeter im höchsten Messbereich. Wenn die Stromstärke 0mA angezeigt wird, kann man noch empfindlichere Messbereiche ausprobieren. Auch hier sollte die Stromstärke 0mA betragen.

Abbildung 3.5: Fertige Platine mit Mikrocontroller

21 Da das Booten mit USB nicht funktionierte, werden alle Versorgungsspannungen gemessen und mit den Spannungen vom Atmel SAM3U4E-EK Board im Betrieb verglichen: Pin No.

Gemessene Spannung

Beschreibung

VDDIN

3.2V

Eingangsspannung des Mikrocontroller

17,51,85,104,127 VDDIO

3.2V

Versorgungsspannung der Peripheriegeräte

3

Signal

40

VDDUTMI

3.2V

Versorgungsspannung der UTMI+ Schnittstelle

73

VDDANA

3.2V

Versorgungsspannung des ADC

139

VDDBU

3.2V

Versorgungsspannung des slow-clock Oszillators

VDDOUT

1.7V

Ausgangsspannung der Mikrocontroller

1.7V

Versorgungsspannung des Kernes, Speicher, usw...

1.7V

Versorgungsspannung der PLLA, UPLL und des 12 MHz Oszillators

2

16,44,50,86,125 VDDCORE 34

VDDPLL

37

DHSDP

3.2V/0V*

38

DHSDM

0V/0V*

39

VBG

41

DFSDM

0V/0V*

42

DFSDP

3.2V/0V*

0V/1.25V*

* jeweils vor und nach dem Anlegen der USB-Versorgungsspannung

3.6 Bewertung und Diskussion Eine große Schwierigkeit bei der Hardwareentwicklung ist vor allem, dass die USB Schnittstelle von vielen Komponenten abhängig ist und es recht viel Zeit kostet, die Ursache herauszufinden. Die Anfertigung von Platinenlayout war einerseits gut im NSTWiki dokumentiert, andererseits könnten wir den Arbeitsablauf viel beschleunigen, wenn die neuen Werkzeugen für den Fräsbohrplotter uns zur Verfügung stehen würden. Die Hardwareentwicklungsphase ist im Allgemein erfolgreich abgeschlossen. Die Firmware von WhizNets konnte bisher über USB mithilfe vom SAM-BA Tool installiert werden. Das Testboard kann künftig erweitert und für vielen mobilen Anwendungen angepasst werden. Die Arbeit bietet uns die Möglichkeit an, selbständig die Funktion eines Mikrocontrollers und seinen vielfältigen Zusammenhang mit anderen Komponenten zu

22

HARDWAREENTWICKLUNG

verstehen. Unsere Kenntnisse über verschiedene Arbeitsschritte sowie Einblick in die Platinenproduktion wurden dadurch verbessert.

23

4 Ausblick Nach der Beschäftigung mit diesem Projekt, würde unserer Meinung nach, die Software sich in folgender Richtung entwickeln können: um die Geschwindigkeit der Datenübertragung zu erhöhen, sollte die „high-speed“ USB Schnittstelle zwischen dem Modul und dem Roboter genutzt werden. Es könnte für eine automatische Konfiguration des Moduls ein eigenes Skript entwickelt und optimiert werden. Dadurch kann man die Kommunikation zwischen dem Roboter und WLAN Modul vereinfacht werden. In der Zukunft könnte das Testboard noch mehr an Größe reduzieren. Weiterhin könnte das WLAN Modul in dem Board integriert werden, um die Funktionsqualität der Bestandteile in dem von uns entwickelten Modul weiter zu verbessern Wir hoffen mit dieser Dokumentation einen Beitrag zur Reduzierung der Einarbeitungszeit mit dem Modul leisten zu können.

5 Danksagung An dieser Stelle möchten wir uns Herr Prof. Conradt bedanken, der uns bei der Anfertigung dieses Projektpraktikums durch seine hilfreichen Anregungen und seine Geduld immer wieder unterstützt hat.

25

Anhang

26

ANHANG

[1] Eine Liste der wichtigen Quelltexten für die Firmware No.

Dateiname

Ordner

1

main.c

Source \apps\

2

common.c

Source \common\

3

commonheaderfile.h Source \common\

4

flash_opp.h

Source \common\

5

wln_config.c

Source \common\

6

uip.c

Source \tcpuip\

7

uip_arp.c

Source \tcpuip\

8

uip_split.c

Source \tcpuip\

9

at_cmd_handler.c

Source \apps\atparser

10

at_cmd_handler.h

Source \apps\atparser

11

at_cmd_interface.c

Source \apps\atparser

12

at_wlan.c

Source \apps\atparser

13

bsd_port_lib.c

Source\apps\tcpapp\bsdportlib\

14

spi_mmc.c

Source \drivers\memory\serialflash\

15

uart.c

Source \bsp\AT91SAM3U\common\uart\

16

WLAN_Interface.c

Source \bsp\AT91SAM3U\common\Wlan_Interface

17

wlan.a

Source \drivers\wlan\WhizFi\

18

WLAN_ext.h

Source \drivers\wlan\WhizFi\

19

AT91SAM3U4.h

Source \arch\AT91SAM3U

Eine kurze Erklärung über die Aufgabe der Quelltexten: Die Quelltext (bsd_port_lib.c, uip.c, uip_arp.c, uip_split.c) spielt eine große Rolle bei der Datenübertragung durch TCP und UDP. „WLAN.a“ ist eine kompilierte Datei von WhizNets für die WLAN Bibliothek. „AT91SAM3U4.h“ definiert die Register, die PIO, das Taktsignal von dem Mikrocontroller SAM3U4E. Die Daten in dem Ordner „atparser“ sind für die AT Befehle.

27

[2] Anpassen des Skripts für die angepasste Platine array set memoryAlgo { "SRAM"

"::at91sam3u4_sram0"

"SRAM 1"

"::at91sam3u4_sram1"

"Flash 0"

"::at91sam3u4_flash0"

"Flash 1"

"::at91sam3u4_flash1"

#"PSRAM"

"::at91sam3u4_psram"

#"NandFlash"

"::at91sam3u4_nandflash"

"Peripheral"

"::at91sam3u4_peripheral"

"REMAP"

"::at91sam3u4_remap"

} Ein Skript und ein Applets für Flash befindet sich im CD unter „at91sam3u4-ek“.

28

ANHANG

[3] Änderung der Quelltext für die Datendurchsatz-Messung per TCP Diese Änderung der Quelltexten wird in der Datei „bsd_port_lib.c“ durchgeführt. Wenn eine TCP-Verbindung zwischen dem WLAN Modul und dem Test PC erfolgreich gebaut wurde. Dann erzeugt der Block Code jedes Mal ein Daten von 1456 Byte und mit Hilfe der Funktion „uip_send()“ wird die Daten versendet. Der Block Code wird 100 mal ausgeführt. -----------------------------------------Block Code für TCP----------------------------------------if(a==0) // die Uhrzeit wird gezaehlt { INFO_MSG("\r\n%d\r\n",(uint32_t)Timer1ms);b=Timer1ms; // Der Zeitpunkt der

Anfang zu senden.

} // Wenn nach 100 mal den Paket gesendet wurde, dann StopUhr wird gedrueckt. if(a==100) { INFO_MSG("\r\n%d\r\n",v); INFO_MSG("\r\n%d\r\n",a); INFO_MSG("\r\n Ingesamt Zeit:%d\r\n",(uint32_t)(Timer1ms-b)); // dieser Codeline dient die Mitteilung des Zeitpunkt von Ende von Datensenden. uip_close(); // Beende der UIP verbindung. readfun(TCP,TCPPORT1,(uint8_t *)&stopport); stop(stopport);// Gleiche Bedeutung wie der Befehl : at#ltcpstop=1; operate_mode=CMD_MODE; // ändern von Datamode zur Command Mode } uip_send("a",(int)1456); a++; ------------------------------------------------------End------------------------------------------------

29

[4] Die Änderung der Quelltexten für die Datendurchsatz-Messung per UDP Wenn eine UDP-Verbindung zwischen dem WLAN Modul und dem Test PC erfolgreich gebaut wurde. Dann erzeugt der Block Code jedes Mal ein Daten von 1256 Byte und mit Hilfe der Funktion „uip_send()“ werde die Daten versendet. Der Block Code wird 100 mal ausgeführt. -----------------------------------------Block Code für UDP---------------------------------------if(a==0) // die Uhrzeit wird gezaehlt { INFO_MSG("\r\n%d\r\n",(uint32_t)Timer1ms);b=Timer1ms; // Der Zeitpunkt der Anfang zu senden. } if(a==100) // Wenn nach 100 mal den Paket gesendet wurde, dann StopUhr wird gedrueckt. { INFO_MSG("\r\n%d\r\n",a); INFO_MSG("\r\n Ingesamt Zeit:%d\r\n",(uint32_t)(Timer1ms-b)); // dieser Codeline dient die Mitteilung des Zeitpunkt von Ende von Datensenden. Ludpstop(); operate_mode=CMD_MODE; } afterack(); uip_send("Y",(int)1256); a++; ----------------------------------------------------End----------------------------------------------------

30

ANHANG

31

32

ABBILDUNGSVERZEICHNIS

Abbildungsverzeichnis Abbildung 3.1: Stromversorgung aus USB..................................................................17 Abbildung 3.2: Whiz-Fi-SDIO Verbindungen.............................................................17 Abbildung 3.3: LQFP144 zu PGA144 SMT Adapter und die angepasste Pins........18 Abbildung 3.4: Untere Lötseite der gebohrten Platine...............................................19 Abbildung 3.5: Fertige Platine mit Mikrocontroller...................................................20

33

34

LITERATURVERZEICHNIS

Literaturverzeichnis [1] [2] [3] [4]

Dokumentation von der Firma WhizNets „SAM3U-EK Evaluation Kit User Guide“ von Atmel „AT91ARM Cortex M3-based Microcontroller Summary“ von Atmel „EAGLE 4.1 Referenz-Handbuch“ von CadSoft

35

Suggest Documents