STM32F4 Discovery Ethernet

Im Rahmen einer Studienarbeit galt es das STM32F4 Discovery-Board von ST mit einem Ethernet-Add-On auszustatten und eine kleine Webapplikation auf dem Controller laufen zu lassen um über einen Browser ein paar IOs anzusprechen bzw. abzufragen.

Da es von ST schon diverse Beispielapplikationen vorgefertigt gibt, bestand die Hauptaufgabe darin, die Hardware zu entwickeln sowie ein Beispielprogramm auf den Controller zu bringen und eine mittels objektorientierter Programmierung (UML) erstellten Firmware zu realisieren. Auf die Umgestaltung des strukturiert programmierten Quellcodes von STMicroelectronics in Objektorientierte UML-Darstellung soll hier nicht weiter eingegangen werden. Wen dieses Thema interessiert, dem kann ich gern meine Studienarbeit zukommen lassen.

Im Weiteren soll es um die Hardwareentwicklung, das Aufsetzen einer Ethernet-Applikation sowie das Erstellen eigener Webserver auf dem Discovery-Board mit der freien Entwicklungsumgebung CooCox gehen.

Gegebene Hardware:

Das Discovery Board STM32F4 ist die fünfte Version eines Entwicklungsboards aus dem Hause STMicroelectronics. Ausgestattet mir einem Cortex-M4 Mikrocontroller der Serie STM32F4x7 bietet das Discovery Board neben dem Controller internen 1Mbit Flash Speicher bereits ein paar Peripherieobjekte wie einen Audio-Decoder sowie vier LEDs, zwei Taster, einen USB Port und einen Beschleunigungssensor auf der Platine an. Sämtliche IOs des Controllers sind auf Stiftleisten ausgeführt um diese durch externe Beschaltung nutzen zu können. Die vom Hersteller angebotenen Firmware Beispiele sind als Bibliotheken für diverse freie und kostenpflichtige Entwicklungsumgebungen (z.B. Atollic True Studio, CooCox IDE, Keil MDK-ARM, Eclipse) nutzbar.


Discovery Board mit ErweiterungsplatinenAbbildung 1 - STM32F4 Discovery Board mit Erweiterungsplatinen

Das STM32F4 Discovery-Board hat als MCU einen STM32F407-VGT6 Chip verbaut. Dieser besitz intern schon einen 10/100 MBit Ethernet MAC mit separaten DMA-Controller welcher per MII oder RMII mit einen externen Ethernet-PHY angebunden werden kann.

OSI-Schichten ModellAbbildung 2 - Aufgabe des PHY im OSI-Schichtenmodell


gewählter Ethernet-PHY:

Der Ethernet PHY DP83848CVV aus dem Hause Texas Instruments bzw. ehemals National Semiconductor, ist ein Single Port 10/100Mb/s Ethernet Physical Layer Tranceiver mit integriertem 100BASE-TX Protokoll. Damit wird die Kommunikation und Kompatibilität mit allen anderen Standard Ethernet Lösungen realisiert. Für die Kommunikation mit einem MAC besitzt der PHY eine MII/RMII Schnittstelle. Da sich alle käuflich erwerbbaren Ethernet-PHYs vom aufbau her ähneln, meist sogar Pinkompatibel sind, kann auch ein anderer IC gewählt werden (z.B. DM9162 von Davicom).

Ethernet Phy PinoutAbbildung 3 - Pinbelegung DP83848C im TQFP32 Package

Hardwareentwicklung:

Das STM32F4 Discovery Board stellt dem Nutzer 80 GPIOs über Stiftleisten zum direkten Anschluss zur Verfügung. Nahezu alle dieser GPIOs können zu einer bestimmten alternativen Funktion [1] umgeschaltet werden, so dass z.B. GPIO PC4 als ETH_RMII_RX_D0 (RX Bit 0 für Ethernet Modus RMII) belegt wird. Für die RMII Schnittstelle werden mindestens 8 Signalleitungen benötigt (Abbildung 4). Aufgrund der benötigten Taktfrequenz von 50Mhz für diese Schnittstelle und dem Wunsch, möglichst viele Optionen für andere Peripherien und Aufgaben auf dem Mikrocontroller freizuhalten, ist es nötig einen externen Taktgeber für die RMII Schnittstelle zu verwenden. Mit dem „Clock Configuration Tool“ von STMicroelectronics [2] ist es möglich sämtliche Taktfrequenzen und Prescaler zu simulieren. Dauraus ergibt sich bei einer Frequenz von 50Mhz aus dem Mikrocontroller für den PHY, dass z.B. die USB Schnittstelle nicht mehr genutzt werden könnte, da kein ausreichend genaues Taktteilerverhältnis eingestellt werden kann. Deshalb wird ein externer 50Mhz CMOS Oszillator verwendet. Um den MAC und den PHY zu synchronisieren, sind beide mit dem Taktgeber verbunden (OSCIN).

BlockschaltbildAbbildung 4 - Blockschaltbild

Den Ethernet PHY gibt es ausschließlich im LQFP48 Gehäuse, so dass auch die übrigen Bauelemente wie Stützkondensatoren und Widerstände in SMD Bauform ausgeführt wurden. Um die Schaltung möglichst einfach manuell aufbauen zu können, wurden die passiven Bauelemente in der Chip-Baugröße 1206 (3,2x1,6 mm) gewählt. Diese sind noch recht gut von Hand lötbar und unter den Bauelementen können bis zu 3 dünne Leiterbahnen hindurchgeführt werden. Für den Entwurf des Schaltplans in der CAD-Software „Target 3001!“ mussten einige Symbole als Bibliothek neu angelegt werden. So zum Beispiel für den Ethernet-Übertrager und RJ45 Ethernet Buchse [4]. Wesentlich für den Schaltungs- und später für den Layoutentwurf sind die Design-Rules aus dem Datenblatt des Tranceiver ICs [3]. Demzufolge sind mehrere Stützkondensatoren am IC für den Power-Feedback Regelkreis sowie Abblockkondensatoren in unmittelbarer Nähe des Ethernet-Übertragers als auch an den Datenleitungen am IC nötig (siehe Abbildung 5 - Schaltplan). Auf eine Schutzbeschaltung der Datenleitungen kann verzichtet werden, da im Transceiver-IC Schutzdioden integriert sind. Um die Masse der Schaltung gegen hochfrequente Störungen von dem Schirm des Ethernet-Kabels zu schützen, ist der Shield der RJ-45 Buchse nur mittels eines HV-Suppressor Kondensators gegen die Schaltungsmasse geschalten. Dadurch werden auch Überspannungsspitzen vom Schirm gegenüber der Schaltungsmasse abgefangen [5].

SchaltplanAbbildung 5 - Schaltplan

Als Spannungsversorgung wurde ein separater 3,3V Low Drop Spannungsregler eingesetzt.

zu geringe Spannung am OszillatorAbbildung 6 - VDD3 vom Discovery Board

Dieser zusätzliche Linearregler ist notwendig, da der C-MOS Oszillator eine möglichst genaue Spannung benötigt und die Spannung des Discovery Boards teilweise bis auf 2,8V absinkt (Abbildung 6). Mit dem TS1117-3.3 Spannungsregler ist die Versorgungsspannung für den Transceiver-IC und den Oszillator im Nennspannungsbereich und etwas stabiler (Abbildung 7).

3,3V mit SpannungsreglerAbbildung 7 - VDD3.3 hinter TS1117-3.3

Damit der Takt eventuell auch vom Mikrocontroller erzeugt werden kann, ist ein Jumper (K3) zur Auswahl der Taktquelle vorgesehen.

Platine LötseiteAbbildung 8 - Ethernet-Add-On Prototyp

Des einseitigen Platinenlayouts wegen sind einige Drahtbrücken notwendig. Da es sich hier um einen Prototypen hält, der ursprünglich auf Lochraster aufgebaut werden sollte, ist die Lösung mit der einseitigen Layout Platine dennoch die bessere Wahl. Problem bei der Ausführung auf einer einseitigen Platine ist die fehlende durchgehende Massefläche um Übersprechen zu verhindern und die EMV Belastung verschlechtert. Daher wurde das Ethernet-Modul in ein kleines Gehäuse verbaut und großzügig mit Alufolie abgeschirmt. Um allen Design-Rules der Datenblätter gerecht zu werden kommt man eigentlich nicht um ein doppelseitiges Layout hinweg. Daher ließ ich die zweite Version des Ethernet-Add-Ons von einer Firma fertigen.

Inbetriebnahme mit CooCox Projekt:

Nach Fertigstellung der Hardware wurde das Beispielprogramm von STMicroelectronics mittels CooCox IDE kompiliert und auf den Controller übertragen (mehr dazu unter Software). Um eine Verbindung zwischen PC und dem Discovery Board herstellen zu können, muss der Netzwerkadapter des PC auf eine statische IP konfiguriert werden (hier z.B. 192.168.0.100). Die Kabelverbindung erfolgt über ein Twisted-Pair Netzwerkkabel Typ CAT.5e oder mit Hilfe eines Switches über zwei Patchkabel. Nach Einschalten der Spannung benötigt der Controller ca. 30 Sekunden um den Initialisierungsprozess zu durchlaufen und die Verbindung mit dem PC aufzubauen. Um nun vom PC auf den Webserver des Controllers zugreifen zu können, öffnet man einen Browser und gibt in die Adressleiste die Zieladresse ein (hier: 192.168.0.111). Der erste Ladezyklus der Hauptseite dauert knapp 14 Sekunden, wobei die längste Zeit für das Laden des großen JPG Bildes benötigt wird (Abbildung 9).

Ladezeit der HauptseiteAbbildung 9 - Ladezeit der Hauptseite


Theoretisch sollte die Verbindung 100MBit/s unterstützen können, allerdings limitiert hier der interne Flashspeicher des Mikrocontrollers sowie die Rechenzeit die benötigt wird, um die als Binärwerte hinterlegten Bilder in das JPG-Format zu konvertieren. Wenn der Cache im Browser des PCs aktiviert ist, dauert der nächste Aktualisierungszyklus der Hauptseite nur noch knapp 1,3s.

Software:

Für eine Ethernetanbindung wird eine Beispielanwendung [6],[7] von ST zur Verfügung gestellt, welche sich in der freien Entwicklungsumgebung CooCox IDE erweitern und kompilieren lässt. Im Wesentlichen wird auf dem STM32F4 Core ein kleiner Webserver hinterlegt, welcher mit statischer IP Adresse abrufbar ist und auf dem LwIP TCP/IP Stack aufsetzt. Dem Nutzer werden bei Aufruf der Seite einige Informationen über den Core geliefert. Des Weiteren bietet sich die Möglichkeit auf einer Unterseite des Webservers die 4 LEDs des Boards zu aktivieren und wieder zu deaktivieren. Zusätzlich lässt sich unter der Seite "ADC" der Analog-Digital-Wandler an GPIO PC3 auslesen und als Spannungswert in mV anzeigen. Diese Seite beinhaltet einen Auto-refresh in einem Abstand von einer Sekunde. Das Beispiel ist als Standalone Anwendung (ohne RTOS) mit einem Webserver, TFTP Server sowie TCP / UDP Echo-Cient und Echo-Server Anwendung ausgestattet.

Das vorkompillierte CooCox-Projekt gibt es von mir hier zum runterladen (siehe Anhang weiter unten).

Entwickeln eigener Webseiten / Webserverapplikationen:

Sehr Interessant ist auch das Entwickeln eigener Webserverapplikationen um z.B. den STM32F4 als Heimautomationsserver zu nutzen.
Erstellt werden können eigene Seiten indem man sich neue HTML-Quelldateien anlegt. Hier am Beispiel von der Index.html. Überschreibt man die Index.html des Beispielprojekts mit einem eigenen Code der z.B. so aussieht:

simpler HTML QuellcodeAbblidung 10 - HTML-Quellcode Index.html

Um die eigens erstellten HTML-Resourcen in den C++ Code zu übertragen wurde von STMicrielectronics ein Parser mitgeliefert. dieser versteckt sich in der Datei Makefsdata.exe, welche dem LwIP-Stack beiliegt. Um die Dateien nun zu übersetzen muss zuerst die neue Index.html in das /fs-Verzeichnis gelegt werden. Die Makefsdata.exe muss im Wurzelverzeichnis des Projekts liegen (eine Ebene über /fs) damit der Parser die HTML-Dateien findet. Nachdem die Makefsdata.exe ausgeführt wurde befindet sich eine neue Datei "fsdata.c" im Projektordner. Diese muss in den Ordner "ethernet/source" kopiert werdne, bzw. die dortige alte "fsdata.c" mit der neuen Datei überschrieben werden. Durch erneutes Übersetzen des Projekts im CooCox und übertragen auf den Controller befindet sich nun die eigene Webseite zum abrufen bereit.

Der Möglichkeiten eigene Seiten zu erstellen sind nahezu keine Grenzen gesetzt. Außer bei großen Bildern, welche die Ladezeiten erheblich verlängern (siehe Abschnitt Inbetriebnahme), können mit dem Controller als Webserver vor allem kleine Automationsaufgaben mit Bravur gelöst werden. Ich habe dies mal versucht und eine kleine Applikation erstellt mit welcher ich 16 GPIOs über das Webportal ansteuern  und zusätzlich 4 Analoge Eingänge einlesen [8] kann. Weitere Projekte werden mit Sicherheit folgen. So z.B. ein FTP-Server mit angeschlossener SD-Karte als kleiner Datenserver und einiges mehr...

Quellenverzeichnis:

Hinweise zur den Links von ST: Nach Umstellung deren Webseite Anfang des Jahres 2013 sind die Tools und Libaries nicht mehr ohne Registrierung verfügbar. Daher kann es sein, dass einige der Links hier nicht mehr funktionieren.

[1]. STMicroelectronics. Datenblatt STM32F4 Discovery. [Online] 09.01.2013. http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/DM00039084.pdf
[2]. STMicroelectronics. Clock Configuration Tool. [Online] 09.01.2013. http://www.st.com/internet/com/SOFTWARE_RESOURCES/TOOL/CONFIGURATION_UTILITY/stm32f4_clockconfig.zip
[3]. Texas Instruments. Datenblatt DP83848CVV. [Online] 09.01.2013.
http://www.farnell.com/datasheets/1668041.pdf
[4]. Amphenol. Datenblatt LMJ199 882X 110DTLX39J. [Online] 09.01.2013. https://www.it-wns.de/data/datenblatt_0000204_1.pdf
[5]. Matthes, Wolfgang. Embedded Electronics 1 - Passive Bauelemente
aktualisierte Auflage, Aachen: Elektor Verlag GmbH 2008.
[6]. STMicroelectronics. STM32F4V07VG. [Online] 18.04.2013. http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1577/LN11/PF252140?s_searchtype=partnumber#
[7]. STMicroelectronics. STM32F4 Discovery Tools. [Online] 18.04.2013. http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419#
[8]. Aimagin Co. Ltd. aMG F4Connect [Online] 09.01.2013.
http://www.aimagin.com/tgr/tgr12/amgf4connect/doc/HTML/index.html?webpage_configuration.htm

Dieses Projekt gibt verkürzt die Studienarbeit des 5. Semesters des Elektrotechnik Studiums (2012) von Stefan Franke wieder.

Attachments:
Download this file (STM32F4_Ethernet_www.stefan-franke.net.rar)STM32F4_Ethernet_www.stefan-franke.net.rar[fertiges CooCox Projekt]1814 kB