<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=176.94.41.122</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=176.94.41.122"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/176.94.41.122"/>
	<updated>2026-04-16T11:45:05Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Infineon_XMC&amp;diff=83457</id>
		<title>Infineon XMC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Infineon_XMC&amp;diff=83457"/>
		<updated>2014-07-03T08:30:28Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Entwicklungsumgebung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die XMC-Mikrocontroller von [http://www.infineon.com/cms/en/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/channel.html?channel=db3a30433c1a8752013c3e221b9d004f Infineon] basierend auf dem [[ARM|ARM Cortex M]]-Kern (M0 und M4).&lt;br /&gt;
[[Bild:Logo_XMC.jpg|180px|right]]&lt;br /&gt;
== Entwicklungsumgebung ==&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich können alle für die ARM Cortex-Prozessoren geeigneten Compiler verwendet werden (siehe [[ARM#Compiler &amp;amp; Software]]).&lt;br /&gt;
&lt;br /&gt;
Von Keil gibt es kostenlos eine spezielle Version der Entwicklungsumgebung MDK für XMC1000-Controller, welche im Gegensatz zur normalen MDK Lite-Version bis zu 128 kB Code unterstützt [http://www2.keil.com/infineon/mdk/].&lt;br /&gt;
&lt;br /&gt;
Infineon bietet mit DAVE eine eigene Entwicklungsumgebung an.&lt;br /&gt;
&lt;br /&gt;
Das UML Tool SiSy unterstüzt neben AVR und STM32 ebenfalls XMC Controller. Die [http://sisy.de/index.php?id=59 SiSy-DEMO] hat keine Codebegrenzung.&lt;br /&gt;
&lt;br /&gt;
== XMC1000 ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/cms/en/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/32-bit-xmc1000-industrial-microcontrollers-arm-registered-cortex-tm-m0/channel.html?channel=db3a30433c1a8752013c1aa35a6a0029 XMC1000] ist der Cortex M0 basierende uC von Infineon.&lt;br /&gt;
&lt;br /&gt;
Starterkits:&lt;br /&gt;
* [[Infineon XMC 2Go]]&lt;br /&gt;
&lt;br /&gt;
== XMC4000 ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/cms/en/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/32-bit-xmc4000-industrial-microcontrollers-arm-registered-cortex-tm-m4/channel.html?channel=db3a30433580b3710135a03abaf9385e XMC4000] ist der Cortex M4 basierende uC von Infineon.&lt;br /&gt;
&lt;br /&gt;
* [[XMC4500|Artikel zum XMC4500]]&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.myXMC.de XMC Tutorial]&lt;br /&gt;
*[http://embeddedplaygroup.wordpress.com/2012/12/12/its-relax-time-blinky-led/ It’s Relax Time]&lt;br /&gt;
*[http://emguide.wordpress.com/category/xmc4500-arm-cortex-m4/ Button Example and LED Flashing]&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
Die ICs der XMC4000-Reihe gibt es bei diversen Distributoren, z.B. Digikey. ICs der XMC1000-Reihe sind mittlerweile auch u.a. bei Digikey auf Lager.&lt;br /&gt;
&lt;br /&gt;
Entwicklungskits und Boards bekommt man bei&lt;br /&gt;
* [http://www.ehitex.de/shopware.php/sViewport,search/sSearch,xmc Hitex]&lt;br /&gt;
* MyAVR ([http://shop.myavr.de/ARM-Produktlinie/XMC%202Go.htm?sp=article.sp.php&amp;amp;artID=200128 XMC2GO], [http://shop.myavr.de/ARM-Produktlinie/XMC1100%20Boot%20Kit.htm?sp=article.sp.php&amp;amp;artID=200119 XMC1100 Boot Kit], [http://shop.myavr.de/ARM-Produktlinie/XMC4500%20Relax%20Lite%20Kit.htm?sp=article.sp.php&amp;amp;artID=200120 XMC4500 Relax Kit Lite])&lt;br /&gt;
* div. Distributoren (Mouser, Farnell, Digikey)&lt;br /&gt;
* div. [http://www.mikrocontroller.net/link/ebay/xmc Anbietern auf Ebay]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:Infineon XMC]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Infineon_XMC&amp;diff=83456</id>
		<title>Infineon XMC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Infineon_XMC&amp;diff=83456"/>
		<updated>2014-07-03T08:27:27Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Bezugsquellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die XMC-Mikrocontroller von [http://www.infineon.com/cms/en/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/channel.html?channel=db3a30433c1a8752013c3e221b9d004f Infineon] basierend auf dem [[ARM|ARM Cortex M]]-Kern (M0 und M4).&lt;br /&gt;
[[Bild:Logo_XMC.jpg|180px|right]]&lt;br /&gt;
== Entwicklungsumgebung ==&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich können alle für die ARM Cortex-Prozessoren geeigneten Compiler verwendet werden (siehe [[ARM#Compiler &amp;amp; Software]]).&lt;br /&gt;
&lt;br /&gt;
Von Keil gibt es kostenlos eine spezielle Version der Entwicklungsumgebung MDK für XMC1000-Controller, welche im Gegensatz zur normalen MDK Lite-Version bis zu 128 kB Code unterstützt [http://www2.keil.com/infineon/mdk/].&lt;br /&gt;
&lt;br /&gt;
Infineon bietet mit DAVE eine eigene Entwicklungsumgebung an.&lt;br /&gt;
&lt;br /&gt;
== XMC1000 ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/cms/en/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/32-bit-xmc1000-industrial-microcontrollers-arm-registered-cortex-tm-m0/channel.html?channel=db3a30433c1a8752013c1aa35a6a0029 XMC1000] ist der Cortex M0 basierende uC von Infineon.&lt;br /&gt;
&lt;br /&gt;
Starterkits:&lt;br /&gt;
* [[Infineon XMC 2Go]]&lt;br /&gt;
&lt;br /&gt;
== XMC4000 ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/cms/en/product/microcontrollers/32-bit-industrial-microcontrollers-based-on-arm-registered-cortex-tm-m/32-bit-xmc4000-industrial-microcontrollers-arm-registered-cortex-tm-m4/channel.html?channel=db3a30433580b3710135a03abaf9385e XMC4000] ist der Cortex M4 basierende uC von Infineon.&lt;br /&gt;
&lt;br /&gt;
* [[XMC4500|Artikel zum XMC4500]]&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.myXMC.de XMC Tutorial]&lt;br /&gt;
*[http://embeddedplaygroup.wordpress.com/2012/12/12/its-relax-time-blinky-led/ It’s Relax Time]&lt;br /&gt;
*[http://emguide.wordpress.com/category/xmc4500-arm-cortex-m4/ Button Example and LED Flashing]&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
Die ICs der XMC4000-Reihe gibt es bei diversen Distributoren, z.B. Digikey. ICs der XMC1000-Reihe sind mittlerweile auch u.a. bei Digikey auf Lager.&lt;br /&gt;
&lt;br /&gt;
Entwicklungskits und Boards bekommt man bei&lt;br /&gt;
* [http://www.ehitex.de/shopware.php/sViewport,search/sSearch,xmc Hitex]&lt;br /&gt;
* MyAVR ([http://shop.myavr.de/ARM-Produktlinie/XMC%202Go.htm?sp=article.sp.php&amp;amp;artID=200128 XMC2GO], [http://shop.myavr.de/ARM-Produktlinie/XMC1100%20Boot%20Kit.htm?sp=article.sp.php&amp;amp;artID=200119 XMC1100 Boot Kit], [http://shop.myavr.de/ARM-Produktlinie/XMC4500%20Relax%20Lite%20Kit.htm?sp=article.sp.php&amp;amp;artID=200120 XMC4500 Relax Kit Lite])&lt;br /&gt;
* div. Distributoren (Mouser, Farnell, Digikey)&lt;br /&gt;
* div. [http://www.mikrocontroller.net/link/ebay/xmc Anbietern auf Ebay]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:Infineon XMC]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=XMC4500&amp;diff=83455</id>
		<title>XMC4500</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=XMC4500&amp;diff=83455"/>
		<updated>2014-07-03T08:21:17Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Weblinks und Quellenverzeichnis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Wettbewerb Header}}&lt;br /&gt;
Die Controller XMC4500 von Infineon basieren auf einem [http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php ARM Cortex M4] Kern und verfügt über eine große Auswahl an On-Chip Peripherie.  Die Controller laufen entweder auf einem internen Systemtakt oder auf einer von einer PLL generierten Frequenz, normalerweise 120MHz. In diesem Artikel soll dieser Controllertyp mit Hilfe des &amp;quot;XMC4500 Relax Kit/ Lite Kit&amp;quot;, welches beide Developmentboards von Infineon sind, vorgestellt werden. Auch die von Infineon dazu angebotene Entwicklungsumgebung DAVE3 wird kurz vorgestellt. &lt;br /&gt;
= Technische Daten im Überblick =&lt;br /&gt;
[[Bild:Relaxed (Lite) Kit.JPG|thumb|rechts|500px|&amp;quot;Relax Kit&amp;quot; (oben) und &amp;quot;Relax Lite Kit&amp;quot; (unten)]]&lt;br /&gt;
Ein kurzer Überblick über die On-Chip Peripherie mit den wichtigsten Merkmalen&lt;br /&gt;
*3.3V Operating Voltage &lt;br /&gt;
*32-Bit Architektur ARM Cortex M4 CPU&lt;br /&gt;
*FPU&lt;br /&gt;
*120MHz Systemtakt&lt;br /&gt;
*512kB-1024kB Flashmemory, je nach Typ&lt;br /&gt;
**Auf den &amp;quot;XMC4500 Relax (Lite) Kits&amp;quot; ist die Variante mit 1MB Flash verbaut.&lt;br /&gt;
*128kB oder 160kB RAM&lt;br /&gt;
**Auf den &amp;quot;XMC4500 Relax (Lite) Kits&amp;quot; ist die Variante mit 160KB RAM verbaut.&lt;br /&gt;
*Maximal 1GB RAM über natives externes RAM-Interface adressierbar &lt;br /&gt;
*Zwei Programmstacks &lt;br /&gt;
**Verwendung umschaltbar, Verwendung eines OS einfacher.&lt;br /&gt;
*JTAG&lt;br /&gt;
*Interrupt-Level Controller mit 64 Leveln&lt;br /&gt;
*Interne RTC&lt;br /&gt;
*Ethernet MAC On-Chip&lt;br /&gt;
**PHY nicht integriert, Anbindung über RMII-Interface&lt;br /&gt;
**Der komplette Frame wird von der Hardware generiert&lt;br /&gt;
*USB2.0, sowohl als Host, als auch als Slave&lt;br /&gt;
*5 USIC: Universeller Serieller Interface Kanal für SPI, I²C,UART, etc.&lt;br /&gt;
**Einstellbare Framelänge von bis zu 64-Bit&lt;br /&gt;
**Flexibles CRC-Modul, Prüfsummen können von der Hardware generiert werden&lt;br /&gt;
*multiCAN On-Chip&lt;br /&gt;
**11-Bit oder 29-Bit Objekt Indentifier &lt;br /&gt;
**maximal 64 Objekt Indentifier definierbar&lt;br /&gt;
**3 eigenständige CAN Module &lt;br /&gt;
*SD/MMC-Card Interface mit internem 512Byte FIFO&lt;br /&gt;
**4-Bit Interface&lt;br /&gt;
*Bis zu 12 DMA Kanäle&lt;br /&gt;
*4 12-Bit 8 Kanal ADCs  &lt;br /&gt;
**OVP durch Komperatoren an den Eingängen&lt;br /&gt;
**Programmierbarer Gain&lt;br /&gt;
**Verbindung mit dem DMA möglich &lt;br /&gt;
*12-Bit DAC mit FIFO&lt;br /&gt;
*Delta-Sigma Demodulator&lt;br /&gt;
*2 Timer-Module mit jeweils 4 Modulen mit jeweils 4 Timern &lt;br /&gt;
**Intsgesamt 32 Timer&lt;br /&gt;
**Diverse verschiedene Modi, unter anderem Compare-und Capture Mode, kopplung an externe Signale möglich&lt;br /&gt;
**Bis zu 64-Bit PWM (HRPWM)&lt;br /&gt;
**Eigener Prescaller für jeden Kanal &lt;br /&gt;
**Deadtime Modus für Brückensteuerungen &lt;br /&gt;
*POSIF: Position Interface Unit für Drehencoder&lt;br /&gt;
**Kopplung an Timer-Module möglich&lt;br /&gt;
*GPIOs mit anpassbarem Schaltverhalten, bzw Flankencharakteristik&lt;br /&gt;
**Push-Pull oder Open Collector&lt;br /&gt;
**Pull Up oder Pull Down Widerstand zuschaltbar&lt;br /&gt;
**Tri-State Modus&lt;br /&gt;
Dies sind die wesentlichen Merkmale des XMC4500 Controllertypes, weiter sollen diese hier nicht aufgelistet werden, da allein das für einen ausführlichen Artikel reicht. Das [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] hat nicht ohne Grund über 2000 Seiten. Zudem gibt es eine zusätzliche [http://www.infineon.com/dgdl/xmc4500_ds_v1+0_2013_01.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a304335b504400135bdca7ed86742 Dokumentation] über die allgemeinen Eigenschaften der XMC4500 Controllerserie und die unterschiedlichen Varianten.&lt;br /&gt;
&lt;br /&gt;
= Das XMC4500 Relax Kit/Relax Lite Kit =&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
[[Bild:Wichtige Elemente XMC4500.JPG|thumb|rechts|250px|Die wesentlichen Elemtente auf dem XMC4500 &amp;quot;Relax (Lite) Kit&amp;quot;]]&lt;br /&gt;
Beide Boards verfügen über zwei rote Low-Current LEDs, zwei Taster und einen RESET-Button. Zudem kann über Micro-USB eine Verbindung zum PC aufgebaut werden, die dafür notwendige Hardware ist auf beiden Boards vorhanden. Praktischerweise kann das jeweilige Board über den USB-Port mit Strom versorgt werden, dafür befindet sich auf dem Abschnitt des Programmers/Debuggers ein LDO, der die 3.3V für die Controller bereitstellt. &lt;br /&gt;
Der sich auf der linken Seite befindliche Debugger/Programmer kann, wenn wenig Platz zur Verfügung steht, auch von der restlichen Platine getrennt werden, dafür ist eine Sollbruchstelle vorgesehen. Über einen 2*5 poligen Header kann die Verbindung zum Programmieren oder Debuggen wiederhergestellt werden. &lt;br /&gt;
&lt;br /&gt;
Das Abtrennen empfiehlt sich jedoch nicht, da sonst auch der LDO mit abgetrennt wird und das Board dann extern mit 3.3V versorgt werden muss.  &lt;br /&gt;
&lt;br /&gt;
Alle GPIOs sind auf zwei zweireihige Stift-oder Buchsenleisten herrausgeführt, die jedoch selbst bestückt werden müssen. An diesen Headern sind auch die analogen Eingänge zu finden, genau so wie AREF für den DAC/ADC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bezugsquellen und Kosten==&lt;br /&gt;
Die beiden Developmentboadrs sind leider schwer erhältlich, nur wenige der großen Distributoren haben welche auf Lager. Folgende Distributoren haben die Boads zu den normalen Preisen von etwa 10€+MwSt. für das &amp;quot;Relax Lite Kit&amp;quot; und etwa 30€+MwSt. für das &amp;quot;Relax Kit&amp;quot; bei diesen Distributoren:&lt;br /&gt;
*Mouser: [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_V1/?qs=sGAEpiMZZMsPA1KxyASVZLKMJHcHfbVb &amp;quot;Relax Kit&amp;quot;] [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_LITE_V1/?qs=sGAEpiMZZMsPA1KxyASVZDJJB6HCuCyi &amp;quot;Relax Lite Kit&amp;quot;] &#039;&#039;Stand 3/2013&#039;&#039;&lt;br /&gt;
*myAVR: [http://shop.myavr.de/ARM-Produktlinie/XMC4500%20Relax%20Lite%20Kit.htm?sp=article.sp.php&amp;amp;artID=200120 &amp;quot;Relax Lite Kit&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
Hat man die Möglichkeit, als Firma und/oder mit Gewerbeschein zu bestellen, so kann man bei dem von Infieon vorgeschlagenen Distributor hitex bestellen: &amp;lt;br&amp;gt;&lt;br /&gt;
*[http://www.ehitex.de/cortex-development/xmc4000/448/xmc4500-relax-kit &amp;quot;Relax Kit&amp;quot;][http://www.ehitex.de/cortex-development/xmc4000/447/xmc4500-relax-lite-kit &amp;quot;Relax Lite Kit&amp;quot;]&lt;br /&gt;
Aus urheberrechtlichen Gründen können die Schaltpläne und das Layout hier nur verlinkt werden:&lt;br /&gt;
*[http://www.infineon.com/dgdl/Board_Users_Manual_XMC4500_Relax_Kit-V1_R1.1_released.pdf?folderId=db3a3043133ffd30011343fd894b018d&amp;amp;fileId=db3a30433acf32c9013adf6b97b112f9 User&#039;s Manual]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://www.infineon.com/dgdl/PCB_Sources_Eagle_XMC4500_Relax_V1.zip?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433afc7e3e013afe95a5a40e7a PCB-Dateien im eagle-Format]&lt;br /&gt;
&lt;br /&gt;
== Unterschiede zwischen dem &amp;quot;Relax Kit&amp;quot; und dem &amp;quot;Relax Lite Kit&amp;quot; ==&lt;br /&gt;
Die Unterschiede zwischen dem &amp;quot;Relax Kit&amp;quot; und dem &amp;quot;Relax Lite Kit&amp;quot; kurz zusammen gefasst:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;| Unterschiede zwischen dem &amp;quot;Relax Kit&amp;quot; und dem &amp;quot;Relax Lite Kit&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#e8e8ff&amp;quot;&lt;br /&gt;
! Hardware || &amp;quot;Relax Kit&amp;quot; || &amp;quot;Relax Lite Kit&amp;quot; || Nachbestückbar?&lt;br /&gt;
|-&lt;br /&gt;
|Ethernet ||align=&amp;quot;center&amp;quot;|Ja ||align=&amp;quot;center&amp;quot;| Nein ||Schwer bis unmöglich, da der Ethernetcontroller im QFN24 Gehäuse verbaut ist.&lt;br /&gt;
|-&lt;br /&gt;
|Micro-SD|| align=&amp;quot;center&amp;quot;| Ja||align=&amp;quot;center&amp;quot;|Nein ||Gut möglich, jedoch müssen Bauteile in Baugröße 0603 und 0402 verlötet werden.&lt;br /&gt;
|-&lt;br /&gt;
|RTC-Quarz||align=&amp;quot;center&amp;quot;| Ja ||align=&amp;quot;center&amp;quot;|Nein ||Der Quarz ist leicht zu verlöten, es müssen jedoch zwei 0402 Kondensatoren verlötet werden.&lt;br /&gt;
|-&lt;br /&gt;
|32-Mbit SPI-Flash||align=&amp;quot;center&amp;quot;|Ja ||align=&amp;quot;center&amp;quot;| Nein|| Der Flash selber ist bei Farnell erhältlich und ist leicht zu verlöten, da SOIC8 Gehäuse, jedoch sind auch 0402 und 0603 Bauteile zu verlöten.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Nachbestückung==&lt;br /&gt;
Wenn man gerne das native SD-Card Interface oder die RTC nutzen will, aber für das Ethernet überhaupt keine Verwendung hat, so sind mehr als 30€ für ein vollbestücktes &amp;quot;Relax Kit&amp;quot; ziemlich viel, da die Bauteile für das was verwenden will nur etwa 5€ kosten.&lt;br /&gt;
Selbiges gilt für den 32Mbit SPI-Flash. Mit etwas Lötgeschick ist es ohne weiteres möglich ein &amp;quot;Relax Lite Kit&amp;quot; aufzurüsten. Die dafür notwendigen Bauteile beschränken sich im wesentlichen auf Standardbauteile:&lt;br /&gt;
*micro-SD Card: [[Bild:MicroSD-SPI-Flash.jpg|thumb|300px|rechts|Der alternative SD-Card Halter und der SPI-Flash sind nachbestückt worden.]]&lt;br /&gt;
**microSD Halter: Der originale Molex-Halter, welcher auf dem Board vorgesehen ist, ist entweder nicht erhältlich oder kostet 6€+MwSt. Ein anderer Halter von Digikey passt fast genau so gut und kostet weniger als die Hälfte: [http://www.digikey.de/product-detail/de/5040771891/WM9315CT-ND/3635129 Alternativer Slot], siehe Bild.&lt;br /&gt;
**Hühnerfutter: Des weiteren werden für die SD-Card noch 5 0402 10K Widerstände benötigt. Diese liegen alle sehr nah nebeneinander und sind deshalb etwas frickelig zu löten.&lt;br /&gt;
*RTC-Quarz:&lt;br /&gt;
**Der Quarz ist bei Digikey erhältlich, allerdings nicht immer auf Lager: [http://www.digikey.de/product-detail/de/MC-306%2032.768K-E3:ROHS/SER2417CT-ND/1532560 Quarz]&lt;br /&gt;
**Die üblichen Anschwingkondensatoren sind auch hier vorhanden, zwei 0402 15pF Kondensatoren.&lt;br /&gt;
*SPI-Flash:&lt;br /&gt;
**Der Flash ist unter anderem bei Farnell erhältlich:[http://de.farnell.com/jsp/displayProduct.jsp?sku=1972442&amp;amp;action=view&amp;amp;CMP=GRHB-FINDCHIPS1-1006506 SPI-Flash]. Dabei handelt es sich um einen NOR-Flash von Spansion &amp;quot;S25FL032P0XMFI011&amp;quot;. [http://www.spansion.com/Support/Datasheets/S25FL032P_00.pdf Datenblatt]&lt;br /&gt;
**Dazu kommt das übliche Hühnerfutter, in diesem Fall ein 0402 100nF Kondensator und 3 0402 10K Widerstände.&lt;br /&gt;
&lt;br /&gt;
Diese drei Funktionsgruppen sind mit wenig Aufwand nachträglich bestückbar, was für die Ethernet-Baugruppe leider nicht gilt. Verfügt man über professionels Equipment und lässt sich von Würth eine Ethernetbuchse schenken, so ist eine Nachbestückung möglich. Der Vollständigkeit halber wird diese Baugruppe trotzdem behandelt. &lt;br /&gt;
*Bauteile:[[Bild:Gehäusevergleich QFN24 und 0402.JPG|thumb|400px|rechts| Gehäusevergleich ziwschen dem QFN24 Gehäuse des Ethernetkontrollers und einem normalen 0402 Gehäuse]] &lt;br /&gt;
**Ethernetcontroller: [http://www.micrel.com/_PDF/Ethernet/datasheets/ksz8021rnl_8031rnl.pdf KSZ8031RNL] von Mircel, erhältlich bei allen großen Distributoren, aber sehr schwer zu verlöten, da 0.5mm Pin-Pitch (QFN24).&lt;br /&gt;
**Ethernetbuchse: [http://katalog.we-online.de/pbs/datasheet/7499010211A.pdf Würth 7499010211A], nicht käuflich oder nur sehr schwer erwerbbar. Jedoch scheint Würth auf Sampleanfragen sehr kullant zu sein, sofern man ehrlich schreibt, wofür man die Bauteile benötigt. Bei Digikey kostet die Buchse [http://www.digikey.de/product-search/de?vendor=0&amp;amp;keywords=7499010211A knapp acht Euro]. Alternativ kann man auch eine kompatible Nonamebuchse ohne LEDs verwenden, beispielsweise [http://www.digikey.de/product-detail/de/54602-908LF/609-1046-ND/1001360 eine fuer 46 cent].&lt;br /&gt;
**Quarz: 25MHz Quarz, es passt zum Beispiel der [http://www.reichelt.de/index.html?ACTION=3;ARTICLE=101043;SEARCH=25,000000-MT Quarz von Reichelt]&lt;br /&gt;
**Widerstände: &lt;br /&gt;
***2* 0603 120 Ohm  (R201,R207)&lt;br /&gt;
***2* 0402 1K  (R200, R203)&lt;br /&gt;
***1* 0603 6,49K (R&amp;lt;sub&amp;gt;BIAS&amp;lt;/sub&amp;gt;=R204)&lt;br /&gt;
**Kondensatoren: &lt;br /&gt;
***5  0402 100nF (C201,C203,C205,C208,C209)&lt;br /&gt;
***2  0402 22pF  (C206,C207)&lt;br /&gt;
***3  0805 22µF/10V (C200,C202,C204)&lt;br /&gt;
***1  0805 10µF/10V (C210)&lt;br /&gt;
**Sonstiges:&lt;br /&gt;
***2  BLM18PG600 (L200,L201)&lt;br /&gt;
***2  BAT54-02V  (D200,D201)&lt;br /&gt;
An die Standardbauteile werden keine speziellen Anforderungen gestellt, lediglich R204 sollte eine möglichst kleine Toleranz haben (&amp;lt;=1%).&lt;br /&gt;
&lt;br /&gt;
= DAVE3 =&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
[http://www.infineon.com/cms/en/product/microcontrollers/32-bit-xmc4000-industrial-microcontrollers-arm%EF%BF%BDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD-cortex!22-m4/xmc4000-development-tools,-software-and-kits/dave!22-3-%2013-auto-code-generation-and-free-tools/channel.html?channel=db3a30433580b3710135afc117a9563f DAVE3] ist die von Infineon bereitgestellte IDE unter anderem für die XMC4500 Controller und basiert auf Eclipse. Neben den Standardfunktionen bietet DAVE3 auch die Verwendung von so genannten Apps an. Grob gesagt handelt sich dabei um visuell konfigurierbare Codegeneratoren, mit denen schnell und effizient die Hardware des XMC4500 konfiguriert werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
Die IDE kann auf der Seite von Infineon [http://www.infineon.com/cms/en/product/promopages/aim-mc/DAVE_3_Download.html heruntergeladen] werden, zudem gibt es ein [http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Video] von Infineon über die Installation, die Erklärungen fallen jedoch recht dürftig aus. Die Größe des Installerpaktes beträgt in etwa 246MB.&lt;br /&gt;
&lt;br /&gt;
== DAVE Apps==&lt;br /&gt;
[[Bild:DAVE-APP Screenshot.JPG|thumb|rechts|200px|Die UART02-App, alle Einstellungen können in diesem Fenster gemacht werden.]]&lt;br /&gt;
Die sogenannten Apps sind ein wesentliches Merkmal der DAVE 3 IDE. Die Apps ermöglichen es dem Bediener, Teile der Hardware oder komplette Funktionen graphisch und nach Parametern zu konfigurieren. Der dazu gehörige Code wird dann automatisch generiert, zudem erfolgt eine Prüfung, ob mehr Hardwaremodule beansprucht werden, als wirklich vorhanden sind. Der wesentliche Vorteil dieser Programmierung ist, dass sie sehr schnell und effizient ist, da die Apps im wesentlichen gut dokumentiert und das Konfigurationsmenü übersichtlich und intuitiv ist. &amp;lt;br&amp;gt;&lt;br /&gt;
Eigene Apps können anscheinend nicht erstellt werden. Dies ist aber auch nicht unbedingt notwendig, da das Angebot von Apps sowohl im Bereich der Hardwarekonfiguration, zum Beispiel für die GPIOs, als auch im Bereich von fertigen Softwarelösungen, zum Beispiel für einen Webserver oder einen BLDC-Motorcontroller, gut ausgebaut ist.&lt;br /&gt;
Auf Beispiele wird in diesem Artikel verzichtet, da das Quickstart-Tutorial von Infineon bereits alle Fragen klärt und Ansätze bietet.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein Quick-Start-Tutorial für die Verwendung gibt es von Infineon [http://www.infineon.com/dgdl?folderId=db3a3043134dde6001134ef5f8ff0281&amp;amp;fileId=db3a304336797ff901367daea1a847d0 hier].&lt;br /&gt;
&lt;br /&gt;
== Programmieren und Debuggen des &amp;quot;XMC4500 Relax (Lite) Kit&amp;quot;==&lt;br /&gt;
Der On-Board Programmer und Debugger bietet für den Schnellstart und für die ersten Anwendungen alle notwendigen Funktionen, wie das Setzen von Breakpoints und das Beobachten der Variablen und Register während das Programm auf dem Controller ausgeführt wird. Auch bietet der Debugger alle normalen [[JTAG]]-Funktionen, wie das zeilenweise Ausführen des Codes oder den Code bis zu einer bestimmten Stelle auszuführen und dann zu stoppen, etc..&amp;lt;br&amp;gt;&lt;br /&gt;
Programmiert wird der Controller über [[JTAG]].&lt;br /&gt;
;&amp;lt;u&amp;gt;Nachteile des On-Board Programmers und Debuggers&amp;lt;/u&amp;gt;&lt;br /&gt;
Die Upload-Rate zum Controller ist gering, was bei kleineren Programmen noch nicht so tragisch ist, aber bei größeren Quellcodes wird dies schon zu einer suboptimalen Situation. Hier empfiehlt sich dann der Kauf eines besseren [[JTAG]]-Programmers/Debuggers. Da die DAVE 3 IDE den J-Link Treiber für die Programmierung verwendet, sollte eine große Bandbreite an möglichen Geräten zur Verfügung stehen. Der Debugger muss dann nur im Konfigurationsmenü passend eingestellt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;Für den On-Board-Debugger wird das [http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 hier] ab Minute 5.50 beschrieben. Ähnlich wird dies bei anderen Geräten ablaufen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedene Schaltverhalten ==&lt;br /&gt;
In diesem Abschnitt sollen die verschiedenen Flanken und Treiber noch einmal thematisiert werden. Dafür wurden die jeweiligen Flanken mittels eines Oszilloskopes vermessen. Es wurde eine Single-Shot Messung durchgeführt.&amp;lt;br&amp;gt; &lt;br /&gt;
;&amp;lt;u&amp;gt;Messaufbau&amp;lt;/u&amp;gt;&lt;br /&gt;
*PORT1.3 direkt ans Oszilloskop angeschlossen&lt;br /&gt;
**Pad Klasse A2&lt;br /&gt;
*Single Shot &lt;br /&gt;
Die Ergebnisse:&lt;br /&gt;
&amp;lt;gallery perrow=&amp;quot;5&amp;quot; class=&amp;quot;float-left&amp;quot;&amp;gt;&lt;br /&gt;
Bild:Weak Driver.JPG|Weak Driver&lt;br /&gt;
Bild:Medium Driver.JPG|Medium Driver&lt;br /&gt;
Bild:Strong Driver Soft edge.JPG|Strong Driver Soft Edge&lt;br /&gt;
Bild:Strong Driver Medium Edge.JPG|Strong Driver Medium Edge&lt;br /&gt;
Bild:Strong Driver Sharp Edge.jpg|Strong Driver Sharp Edge&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Da die Bilder nicht optimal sind, habe ich die dazu gehörigen .WFM-Datein mit hochgeladen:&lt;br /&gt;
[[Datei:Schaltverhalten Messungen.zip| Messdaten]]&lt;br /&gt;
&lt;br /&gt;
Erstellt wurden die Bilder mit [http://www.downv.com/Windows/install-WFM-Viewer-10554073.htm WFM Viewer]&lt;br /&gt;
&lt;br /&gt;
= Weblinks und Quellenverzeichnis =&lt;br /&gt;
*[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt der XMC4500 Controllerfamilie]&lt;br /&gt;
*[http://www.infineon.com/dgdl/xmc4500_ds_v1+0_2013_01.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a304335b504400135bdca7ed86742 Elektrische Daten und Zusammenfassung]&lt;br /&gt;
*[http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php Dokumentation über den Cortex M4 Kern]&lt;br /&gt;
*[http://www.infineon.com/xmc-dev Seite von Infineon über das XMC4500 &amp;quot;Relax (Lite) Kit&amp;quot;]&lt;br /&gt;
*Videos von Infineon über das XMC4500 &amp;quot;Relax (Lite) Kit&amp;quot; &lt;br /&gt;
**[http://www.movingimage24.com/video_369286?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Beschreibung des Webservers]&lt;br /&gt;
**[http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Getting startet mit dem XMC4500 &amp;quot;Relax (Lite) Kit&amp;quot;] &lt;br /&gt;
**[http://www.movingimage24.com/video_369290?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Noch mehr zum Webserver].&lt;br /&gt;
*[http://www.myXMC.de XMC Tutorial]&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Forum von Infineon, wo sowohl die IDEs von Infineon diskutiert werden, als auch die Controller: &lt;br /&gt;
*[http://www.infineonforums.com/ Forum]&lt;br /&gt;
&amp;lt;b&amp;gt; Alle Bilder in diese, Artikel sind selbst gemacht und können beliebig für andere Dokumentationen oder Projektbeschreibungen genutzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Artikel oder Threads ==&lt;br /&gt;
*[[XMCxxxx]]&lt;br /&gt;
*[[Einstieg in die ARM Entwicklung]]&lt;br /&gt;
*[http://www.mikrocontroller.net/articles/Kategorie:Daten%C3%BCbertragung Datenübertragung]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:Infineon XMC]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=XMC4500&amp;diff=83454</id>
		<title>XMC4500</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=XMC4500&amp;diff=83454"/>
		<updated>2014-07-03T08:20:42Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Weblinks und Quellenverzeichnis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Wettbewerb Header}}&lt;br /&gt;
Die Controller XMC4500 von Infineon basieren auf einem [http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php ARM Cortex M4] Kern und verfügt über eine große Auswahl an On-Chip Peripherie.  Die Controller laufen entweder auf einem internen Systemtakt oder auf einer von einer PLL generierten Frequenz, normalerweise 120MHz. In diesem Artikel soll dieser Controllertyp mit Hilfe des &amp;quot;XMC4500 Relax Kit/ Lite Kit&amp;quot;, welches beide Developmentboards von Infineon sind, vorgestellt werden. Auch die von Infineon dazu angebotene Entwicklungsumgebung DAVE3 wird kurz vorgestellt. &lt;br /&gt;
= Technische Daten im Überblick =&lt;br /&gt;
[[Bild:Relaxed (Lite) Kit.JPG|thumb|rechts|500px|&amp;quot;Relax Kit&amp;quot; (oben) und &amp;quot;Relax Lite Kit&amp;quot; (unten)]]&lt;br /&gt;
Ein kurzer Überblick über die On-Chip Peripherie mit den wichtigsten Merkmalen&lt;br /&gt;
*3.3V Operating Voltage &lt;br /&gt;
*32-Bit Architektur ARM Cortex M4 CPU&lt;br /&gt;
*FPU&lt;br /&gt;
*120MHz Systemtakt&lt;br /&gt;
*512kB-1024kB Flashmemory, je nach Typ&lt;br /&gt;
**Auf den &amp;quot;XMC4500 Relax (Lite) Kits&amp;quot; ist die Variante mit 1MB Flash verbaut.&lt;br /&gt;
*128kB oder 160kB RAM&lt;br /&gt;
**Auf den &amp;quot;XMC4500 Relax (Lite) Kits&amp;quot; ist die Variante mit 160KB RAM verbaut.&lt;br /&gt;
*Maximal 1GB RAM über natives externes RAM-Interface adressierbar &lt;br /&gt;
*Zwei Programmstacks &lt;br /&gt;
**Verwendung umschaltbar, Verwendung eines OS einfacher.&lt;br /&gt;
*JTAG&lt;br /&gt;
*Interrupt-Level Controller mit 64 Leveln&lt;br /&gt;
*Interne RTC&lt;br /&gt;
*Ethernet MAC On-Chip&lt;br /&gt;
**PHY nicht integriert, Anbindung über RMII-Interface&lt;br /&gt;
**Der komplette Frame wird von der Hardware generiert&lt;br /&gt;
*USB2.0, sowohl als Host, als auch als Slave&lt;br /&gt;
*5 USIC: Universeller Serieller Interface Kanal für SPI, I²C,UART, etc.&lt;br /&gt;
**Einstellbare Framelänge von bis zu 64-Bit&lt;br /&gt;
**Flexibles CRC-Modul, Prüfsummen können von der Hardware generiert werden&lt;br /&gt;
*multiCAN On-Chip&lt;br /&gt;
**11-Bit oder 29-Bit Objekt Indentifier &lt;br /&gt;
**maximal 64 Objekt Indentifier definierbar&lt;br /&gt;
**3 eigenständige CAN Module &lt;br /&gt;
*SD/MMC-Card Interface mit internem 512Byte FIFO&lt;br /&gt;
**4-Bit Interface&lt;br /&gt;
*Bis zu 12 DMA Kanäle&lt;br /&gt;
*4 12-Bit 8 Kanal ADCs  &lt;br /&gt;
**OVP durch Komperatoren an den Eingängen&lt;br /&gt;
**Programmierbarer Gain&lt;br /&gt;
**Verbindung mit dem DMA möglich &lt;br /&gt;
*12-Bit DAC mit FIFO&lt;br /&gt;
*Delta-Sigma Demodulator&lt;br /&gt;
*2 Timer-Module mit jeweils 4 Modulen mit jeweils 4 Timern &lt;br /&gt;
**Intsgesamt 32 Timer&lt;br /&gt;
**Diverse verschiedene Modi, unter anderem Compare-und Capture Mode, kopplung an externe Signale möglich&lt;br /&gt;
**Bis zu 64-Bit PWM (HRPWM)&lt;br /&gt;
**Eigener Prescaller für jeden Kanal &lt;br /&gt;
**Deadtime Modus für Brückensteuerungen &lt;br /&gt;
*POSIF: Position Interface Unit für Drehencoder&lt;br /&gt;
**Kopplung an Timer-Module möglich&lt;br /&gt;
*GPIOs mit anpassbarem Schaltverhalten, bzw Flankencharakteristik&lt;br /&gt;
**Push-Pull oder Open Collector&lt;br /&gt;
**Pull Up oder Pull Down Widerstand zuschaltbar&lt;br /&gt;
**Tri-State Modus&lt;br /&gt;
Dies sind die wesentlichen Merkmale des XMC4500 Controllertypes, weiter sollen diese hier nicht aufgelistet werden, da allein das für einen ausführlichen Artikel reicht. Das [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] hat nicht ohne Grund über 2000 Seiten. Zudem gibt es eine zusätzliche [http://www.infineon.com/dgdl/xmc4500_ds_v1+0_2013_01.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a304335b504400135bdca7ed86742 Dokumentation] über die allgemeinen Eigenschaften der XMC4500 Controllerserie und die unterschiedlichen Varianten.&lt;br /&gt;
&lt;br /&gt;
= Das XMC4500 Relax Kit/Relax Lite Kit =&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
[[Bild:Wichtige Elemente XMC4500.JPG|thumb|rechts|250px|Die wesentlichen Elemtente auf dem XMC4500 &amp;quot;Relax (Lite) Kit&amp;quot;]]&lt;br /&gt;
Beide Boards verfügen über zwei rote Low-Current LEDs, zwei Taster und einen RESET-Button. Zudem kann über Micro-USB eine Verbindung zum PC aufgebaut werden, die dafür notwendige Hardware ist auf beiden Boards vorhanden. Praktischerweise kann das jeweilige Board über den USB-Port mit Strom versorgt werden, dafür befindet sich auf dem Abschnitt des Programmers/Debuggers ein LDO, der die 3.3V für die Controller bereitstellt. &lt;br /&gt;
Der sich auf der linken Seite befindliche Debugger/Programmer kann, wenn wenig Platz zur Verfügung steht, auch von der restlichen Platine getrennt werden, dafür ist eine Sollbruchstelle vorgesehen. Über einen 2*5 poligen Header kann die Verbindung zum Programmieren oder Debuggen wiederhergestellt werden. &lt;br /&gt;
&lt;br /&gt;
Das Abtrennen empfiehlt sich jedoch nicht, da sonst auch der LDO mit abgetrennt wird und das Board dann extern mit 3.3V versorgt werden muss.  &lt;br /&gt;
&lt;br /&gt;
Alle GPIOs sind auf zwei zweireihige Stift-oder Buchsenleisten herrausgeführt, die jedoch selbst bestückt werden müssen. An diesen Headern sind auch die analogen Eingänge zu finden, genau so wie AREF für den DAC/ADC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bezugsquellen und Kosten==&lt;br /&gt;
Die beiden Developmentboadrs sind leider schwer erhältlich, nur wenige der großen Distributoren haben welche auf Lager. Folgende Distributoren haben die Boads zu den normalen Preisen von etwa 10€+MwSt. für das &amp;quot;Relax Lite Kit&amp;quot; und etwa 30€+MwSt. für das &amp;quot;Relax Kit&amp;quot; bei diesen Distributoren:&lt;br /&gt;
*Mouser: [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_V1/?qs=sGAEpiMZZMsPA1KxyASVZLKMJHcHfbVb &amp;quot;Relax Kit&amp;quot;] [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_LITE_V1/?qs=sGAEpiMZZMsPA1KxyASVZDJJB6HCuCyi &amp;quot;Relax Lite Kit&amp;quot;] &#039;&#039;Stand 3/2013&#039;&#039;&lt;br /&gt;
*myAVR: [http://shop.myavr.de/ARM-Produktlinie/XMC4500%20Relax%20Lite%20Kit.htm?sp=article.sp.php&amp;amp;artID=200120 &amp;quot;Relax Lite Kit&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
Hat man die Möglichkeit, als Firma und/oder mit Gewerbeschein zu bestellen, so kann man bei dem von Infieon vorgeschlagenen Distributor hitex bestellen: &amp;lt;br&amp;gt;&lt;br /&gt;
*[http://www.ehitex.de/cortex-development/xmc4000/448/xmc4500-relax-kit &amp;quot;Relax Kit&amp;quot;][http://www.ehitex.de/cortex-development/xmc4000/447/xmc4500-relax-lite-kit &amp;quot;Relax Lite Kit&amp;quot;]&lt;br /&gt;
Aus urheberrechtlichen Gründen können die Schaltpläne und das Layout hier nur verlinkt werden:&lt;br /&gt;
*[http://www.infineon.com/dgdl/Board_Users_Manual_XMC4500_Relax_Kit-V1_R1.1_released.pdf?folderId=db3a3043133ffd30011343fd894b018d&amp;amp;fileId=db3a30433acf32c9013adf6b97b112f9 User&#039;s Manual]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://www.infineon.com/dgdl/PCB_Sources_Eagle_XMC4500_Relax_V1.zip?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433afc7e3e013afe95a5a40e7a PCB-Dateien im eagle-Format]&lt;br /&gt;
&lt;br /&gt;
== Unterschiede zwischen dem &amp;quot;Relax Kit&amp;quot; und dem &amp;quot;Relax Lite Kit&amp;quot; ==&lt;br /&gt;
Die Unterschiede zwischen dem &amp;quot;Relax Kit&amp;quot; und dem &amp;quot;Relax Lite Kit&amp;quot; kurz zusammen gefasst:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;| Unterschiede zwischen dem &amp;quot;Relax Kit&amp;quot; und dem &amp;quot;Relax Lite Kit&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#e8e8ff&amp;quot;&lt;br /&gt;
! Hardware || &amp;quot;Relax Kit&amp;quot; || &amp;quot;Relax Lite Kit&amp;quot; || Nachbestückbar?&lt;br /&gt;
|-&lt;br /&gt;
|Ethernet ||align=&amp;quot;center&amp;quot;|Ja ||align=&amp;quot;center&amp;quot;| Nein ||Schwer bis unmöglich, da der Ethernetcontroller im QFN24 Gehäuse verbaut ist.&lt;br /&gt;
|-&lt;br /&gt;
|Micro-SD|| align=&amp;quot;center&amp;quot;| Ja||align=&amp;quot;center&amp;quot;|Nein ||Gut möglich, jedoch müssen Bauteile in Baugröße 0603 und 0402 verlötet werden.&lt;br /&gt;
|-&lt;br /&gt;
|RTC-Quarz||align=&amp;quot;center&amp;quot;| Ja ||align=&amp;quot;center&amp;quot;|Nein ||Der Quarz ist leicht zu verlöten, es müssen jedoch zwei 0402 Kondensatoren verlötet werden.&lt;br /&gt;
|-&lt;br /&gt;
|32-Mbit SPI-Flash||align=&amp;quot;center&amp;quot;|Ja ||align=&amp;quot;center&amp;quot;| Nein|| Der Flash selber ist bei Farnell erhältlich und ist leicht zu verlöten, da SOIC8 Gehäuse, jedoch sind auch 0402 und 0603 Bauteile zu verlöten.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Nachbestückung==&lt;br /&gt;
Wenn man gerne das native SD-Card Interface oder die RTC nutzen will, aber für das Ethernet überhaupt keine Verwendung hat, so sind mehr als 30€ für ein vollbestücktes &amp;quot;Relax Kit&amp;quot; ziemlich viel, da die Bauteile für das was verwenden will nur etwa 5€ kosten.&lt;br /&gt;
Selbiges gilt für den 32Mbit SPI-Flash. Mit etwas Lötgeschick ist es ohne weiteres möglich ein &amp;quot;Relax Lite Kit&amp;quot; aufzurüsten. Die dafür notwendigen Bauteile beschränken sich im wesentlichen auf Standardbauteile:&lt;br /&gt;
*micro-SD Card: [[Bild:MicroSD-SPI-Flash.jpg|thumb|300px|rechts|Der alternative SD-Card Halter und der SPI-Flash sind nachbestückt worden.]]&lt;br /&gt;
**microSD Halter: Der originale Molex-Halter, welcher auf dem Board vorgesehen ist, ist entweder nicht erhältlich oder kostet 6€+MwSt. Ein anderer Halter von Digikey passt fast genau so gut und kostet weniger als die Hälfte: [http://www.digikey.de/product-detail/de/5040771891/WM9315CT-ND/3635129 Alternativer Slot], siehe Bild.&lt;br /&gt;
**Hühnerfutter: Des weiteren werden für die SD-Card noch 5 0402 10K Widerstände benötigt. Diese liegen alle sehr nah nebeneinander und sind deshalb etwas frickelig zu löten.&lt;br /&gt;
*RTC-Quarz:&lt;br /&gt;
**Der Quarz ist bei Digikey erhältlich, allerdings nicht immer auf Lager: [http://www.digikey.de/product-detail/de/MC-306%2032.768K-E3:ROHS/SER2417CT-ND/1532560 Quarz]&lt;br /&gt;
**Die üblichen Anschwingkondensatoren sind auch hier vorhanden, zwei 0402 15pF Kondensatoren.&lt;br /&gt;
*SPI-Flash:&lt;br /&gt;
**Der Flash ist unter anderem bei Farnell erhältlich:[http://de.farnell.com/jsp/displayProduct.jsp?sku=1972442&amp;amp;action=view&amp;amp;CMP=GRHB-FINDCHIPS1-1006506 SPI-Flash]. Dabei handelt es sich um einen NOR-Flash von Spansion &amp;quot;S25FL032P0XMFI011&amp;quot;. [http://www.spansion.com/Support/Datasheets/S25FL032P_00.pdf Datenblatt]&lt;br /&gt;
**Dazu kommt das übliche Hühnerfutter, in diesem Fall ein 0402 100nF Kondensator und 3 0402 10K Widerstände.&lt;br /&gt;
&lt;br /&gt;
Diese drei Funktionsgruppen sind mit wenig Aufwand nachträglich bestückbar, was für die Ethernet-Baugruppe leider nicht gilt. Verfügt man über professionels Equipment und lässt sich von Würth eine Ethernetbuchse schenken, so ist eine Nachbestückung möglich. Der Vollständigkeit halber wird diese Baugruppe trotzdem behandelt. &lt;br /&gt;
*Bauteile:[[Bild:Gehäusevergleich QFN24 und 0402.JPG|thumb|400px|rechts| Gehäusevergleich ziwschen dem QFN24 Gehäuse des Ethernetkontrollers und einem normalen 0402 Gehäuse]] &lt;br /&gt;
**Ethernetcontroller: [http://www.micrel.com/_PDF/Ethernet/datasheets/ksz8021rnl_8031rnl.pdf KSZ8031RNL] von Mircel, erhältlich bei allen großen Distributoren, aber sehr schwer zu verlöten, da 0.5mm Pin-Pitch (QFN24).&lt;br /&gt;
**Ethernetbuchse: [http://katalog.we-online.de/pbs/datasheet/7499010211A.pdf Würth 7499010211A], nicht käuflich oder nur sehr schwer erwerbbar. Jedoch scheint Würth auf Sampleanfragen sehr kullant zu sein, sofern man ehrlich schreibt, wofür man die Bauteile benötigt. Bei Digikey kostet die Buchse [http://www.digikey.de/product-search/de?vendor=0&amp;amp;keywords=7499010211A knapp acht Euro]. Alternativ kann man auch eine kompatible Nonamebuchse ohne LEDs verwenden, beispielsweise [http://www.digikey.de/product-detail/de/54602-908LF/609-1046-ND/1001360 eine fuer 46 cent].&lt;br /&gt;
**Quarz: 25MHz Quarz, es passt zum Beispiel der [http://www.reichelt.de/index.html?ACTION=3;ARTICLE=101043;SEARCH=25,000000-MT Quarz von Reichelt]&lt;br /&gt;
**Widerstände: &lt;br /&gt;
***2* 0603 120 Ohm  (R201,R207)&lt;br /&gt;
***2* 0402 1K  (R200, R203)&lt;br /&gt;
***1* 0603 6,49K (R&amp;lt;sub&amp;gt;BIAS&amp;lt;/sub&amp;gt;=R204)&lt;br /&gt;
**Kondensatoren: &lt;br /&gt;
***5  0402 100nF (C201,C203,C205,C208,C209)&lt;br /&gt;
***2  0402 22pF  (C206,C207)&lt;br /&gt;
***3  0805 22µF/10V (C200,C202,C204)&lt;br /&gt;
***1  0805 10µF/10V (C210)&lt;br /&gt;
**Sonstiges:&lt;br /&gt;
***2  BLM18PG600 (L200,L201)&lt;br /&gt;
***2  BAT54-02V  (D200,D201)&lt;br /&gt;
An die Standardbauteile werden keine speziellen Anforderungen gestellt, lediglich R204 sollte eine möglichst kleine Toleranz haben (&amp;lt;=1%).&lt;br /&gt;
&lt;br /&gt;
= DAVE3 =&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
[http://www.infineon.com/cms/en/product/microcontrollers/32-bit-xmc4000-industrial-microcontrollers-arm%EF%BF%BDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD-cortex!22-m4/xmc4000-development-tools,-software-and-kits/dave!22-3-%2013-auto-code-generation-and-free-tools/channel.html?channel=db3a30433580b3710135afc117a9563f DAVE3] ist die von Infineon bereitgestellte IDE unter anderem für die XMC4500 Controller und basiert auf Eclipse. Neben den Standardfunktionen bietet DAVE3 auch die Verwendung von so genannten Apps an. Grob gesagt handelt sich dabei um visuell konfigurierbare Codegeneratoren, mit denen schnell und effizient die Hardware des XMC4500 konfiguriert werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
Die IDE kann auf der Seite von Infineon [http://www.infineon.com/cms/en/product/promopages/aim-mc/DAVE_3_Download.html heruntergeladen] werden, zudem gibt es ein [http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Video] von Infineon über die Installation, die Erklärungen fallen jedoch recht dürftig aus. Die Größe des Installerpaktes beträgt in etwa 246MB.&lt;br /&gt;
&lt;br /&gt;
== DAVE Apps==&lt;br /&gt;
[[Bild:DAVE-APP Screenshot.JPG|thumb|rechts|200px|Die UART02-App, alle Einstellungen können in diesem Fenster gemacht werden.]]&lt;br /&gt;
Die sogenannten Apps sind ein wesentliches Merkmal der DAVE 3 IDE. Die Apps ermöglichen es dem Bediener, Teile der Hardware oder komplette Funktionen graphisch und nach Parametern zu konfigurieren. Der dazu gehörige Code wird dann automatisch generiert, zudem erfolgt eine Prüfung, ob mehr Hardwaremodule beansprucht werden, als wirklich vorhanden sind. Der wesentliche Vorteil dieser Programmierung ist, dass sie sehr schnell und effizient ist, da die Apps im wesentlichen gut dokumentiert und das Konfigurationsmenü übersichtlich und intuitiv ist. &amp;lt;br&amp;gt;&lt;br /&gt;
Eigene Apps können anscheinend nicht erstellt werden. Dies ist aber auch nicht unbedingt notwendig, da das Angebot von Apps sowohl im Bereich der Hardwarekonfiguration, zum Beispiel für die GPIOs, als auch im Bereich von fertigen Softwarelösungen, zum Beispiel für einen Webserver oder einen BLDC-Motorcontroller, gut ausgebaut ist.&lt;br /&gt;
Auf Beispiele wird in diesem Artikel verzichtet, da das Quickstart-Tutorial von Infineon bereits alle Fragen klärt und Ansätze bietet.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein Quick-Start-Tutorial für die Verwendung gibt es von Infineon [http://www.infineon.com/dgdl?folderId=db3a3043134dde6001134ef5f8ff0281&amp;amp;fileId=db3a304336797ff901367daea1a847d0 hier].&lt;br /&gt;
&lt;br /&gt;
== Programmieren und Debuggen des &amp;quot;XMC4500 Relax (Lite) Kit&amp;quot;==&lt;br /&gt;
Der On-Board Programmer und Debugger bietet für den Schnellstart und für die ersten Anwendungen alle notwendigen Funktionen, wie das Setzen von Breakpoints und das Beobachten der Variablen und Register während das Programm auf dem Controller ausgeführt wird. Auch bietet der Debugger alle normalen [[JTAG]]-Funktionen, wie das zeilenweise Ausführen des Codes oder den Code bis zu einer bestimmten Stelle auszuführen und dann zu stoppen, etc..&amp;lt;br&amp;gt;&lt;br /&gt;
Programmiert wird der Controller über [[JTAG]].&lt;br /&gt;
;&amp;lt;u&amp;gt;Nachteile des On-Board Programmers und Debuggers&amp;lt;/u&amp;gt;&lt;br /&gt;
Die Upload-Rate zum Controller ist gering, was bei kleineren Programmen noch nicht so tragisch ist, aber bei größeren Quellcodes wird dies schon zu einer suboptimalen Situation. Hier empfiehlt sich dann der Kauf eines besseren [[JTAG]]-Programmers/Debuggers. Da die DAVE 3 IDE den J-Link Treiber für die Programmierung verwendet, sollte eine große Bandbreite an möglichen Geräten zur Verfügung stehen. Der Debugger muss dann nur im Konfigurationsmenü passend eingestellt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;Für den On-Board-Debugger wird das [http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 hier] ab Minute 5.50 beschrieben. Ähnlich wird dies bei anderen Geräten ablaufen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedene Schaltverhalten ==&lt;br /&gt;
In diesem Abschnitt sollen die verschiedenen Flanken und Treiber noch einmal thematisiert werden. Dafür wurden die jeweiligen Flanken mittels eines Oszilloskopes vermessen. Es wurde eine Single-Shot Messung durchgeführt.&amp;lt;br&amp;gt; &lt;br /&gt;
;&amp;lt;u&amp;gt;Messaufbau&amp;lt;/u&amp;gt;&lt;br /&gt;
*PORT1.3 direkt ans Oszilloskop angeschlossen&lt;br /&gt;
**Pad Klasse A2&lt;br /&gt;
*Single Shot &lt;br /&gt;
Die Ergebnisse:&lt;br /&gt;
&amp;lt;gallery perrow=&amp;quot;5&amp;quot; class=&amp;quot;float-left&amp;quot;&amp;gt;&lt;br /&gt;
Bild:Weak Driver.JPG|Weak Driver&lt;br /&gt;
Bild:Medium Driver.JPG|Medium Driver&lt;br /&gt;
Bild:Strong Driver Soft edge.JPG|Strong Driver Soft Edge&lt;br /&gt;
Bild:Strong Driver Medium Edge.JPG|Strong Driver Medium Edge&lt;br /&gt;
Bild:Strong Driver Sharp Edge.jpg|Strong Driver Sharp Edge&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Da die Bilder nicht optimal sind, habe ich die dazu gehörigen .WFM-Datein mit hochgeladen:&lt;br /&gt;
[[Datei:Schaltverhalten Messungen.zip| Messdaten]]&lt;br /&gt;
&lt;br /&gt;
Erstellt wurden die Bilder mit [http://www.downv.com/Windows/install-WFM-Viewer-10554073.htm WFM Viewer]&lt;br /&gt;
&lt;br /&gt;
= Weblinks und Quellenverzeichnis =&lt;br /&gt;
*[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt der XMC4500 Controllerfamilie]&lt;br /&gt;
*[http://www.infineon.com/dgdl/xmc4500_ds_v1+0_2013_01.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a304335b504400135bdca7ed86742 Elektrische Daten und Zusammenfassung]&lt;br /&gt;
*[http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php Dokumentation über den Cortex M4 Kern]&lt;br /&gt;
*[http://www.infineon.com/xmc-dev Seite von Infineon über das XMC4500 &amp;quot;Relax (Lite) Kit&amp;quot;]&lt;br /&gt;
*Videos von Infineon über das XMC4500 &amp;quot;Relax (Lite) Kit&amp;quot; &lt;br /&gt;
**[http://www.movingimage24.com/video_369286?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Beschreibung des Webservers]&lt;br /&gt;
**[http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Getting startet mit dem XMC4500 &amp;quot;Relax (Lite) Kit&amp;quot;] &lt;br /&gt;
**[http://www.movingimage24.com/video_369290?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Noch mehr zum Webserver].&lt;br /&gt;
Es gibt ein Forum von Infineon, wo sowohl die IDEs von Infineon diskutiert werden, als auch die Controller: &lt;br /&gt;
*[http://www.infineonforums.com/ Forum]&lt;br /&gt;
&amp;lt;b&amp;gt; Alle Bilder in diese, Artikel sind selbst gemacht und können beliebig für andere Dokumentationen oder Projektbeschreibungen genutzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
*[http://www.myXMC.de XMC Tutorial]&lt;br /&gt;
&lt;br /&gt;
==Zugehörige Artikel oder Threads ==&lt;br /&gt;
*[[XMCxxxx]]&lt;br /&gt;
*[[Einstieg in die ARM Entwicklung]]&lt;br /&gt;
*[http://www.mikrocontroller.net/articles/Kategorie:Daten%C3%BCbertragung Datenübertragung]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:Infineon XMC]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=ARM_Cortex_Mikrocontroller&amp;diff=81966</id>
		<title>ARM Cortex Mikrocontroller</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=ARM_Cortex_Mikrocontroller&amp;diff=81966"/>
		<updated>2014-03-06T11:45:38Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Weblinks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Firma ARM stellt selbst keine Prozessoren/Controller her, sondern entwickelt nur sogenannte &amp;quot;IP-Cores&amp;quot;, die von Herstellern wie Atmel, Infineon, ST, NXP, TI und vielen anderen lizenziert werden. Diese Hersteller ergänzen den Core um Speicher und Peripherie. Der Vorteil dieses Modells ist, dass dadurch sehr viele Prozessoren mit unterschiedlichster Ausstattung verfügbar sind, die alle mit dem selben Befehlssatz (und damit dem selben Compiler) programmierbar sind.&lt;br /&gt;
&lt;br /&gt;
Allen ARM-Cores gemeinsam ist die 32 Bit RISC-Architektur. Für diese gibt es den klassischen 32bit ARM Befehlssatz und den zusätzlichen, kleineren 16/32 Bit &#039;&#039;&#039;Thumb&#039;&#039;&#039;-Befehlssatz. Die verschiedenen Prozessoren/Controller unterstützen einen oder beide davon. Thumb-fähige Controller sind erkennbar am &#039;&#039;&#039;T&#039;&#039;&#039; in der Bezeichnung, z.&amp;amp;nbsp;B. ARM7&#039;&#039;&#039;T&#039;&#039;&#039;DMI. Thumb kodiert die meisten Instruktionen in 16bit, den Rest in 32bit, was in einem kleineren Prozessor und geringenem Platzbedarf des Codes resultiert [http://www.arm.com/files/pdf/ARM_Microcontroller_Code_Size_%28full%29.pdf]; der Nachteil ist die etwas niedrigere Geschwindigkeit. Die Cortex-M Kerne unterstützen ausschließlich den Thumb2-Befehlssatz.&lt;br /&gt;
&lt;br /&gt;
Seit einigen Jahren sind ARM-basierte Mikrocontroller erhältlich, die aufgrund der vergleichbar einfachen Beschaltung und niedrigem Stromverbrauch eine echte Alternative zu 8-Bit-Controllern wie dem [[AVR]] darstellen. Die ersten Controller mit diesen Eigenschaften verwendeten den ARM7TDMI-Kern (zB. LPC2000) (ARMv4T-Architektur). Mittlerweile wurden diese vom Cortex M-Kern abgelöst (ARMv6M, ARMv7M-Architektur), welcher in verschiedenen Varianten für verschiedene Einsatzzwecke verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In diesem Artikel geht es NUR um die ARM Cortex-M Mikrocontroller, nicht jedoch um ARM [https://www.mikrocontroller.net/articles/Cortex-A Cortex-A] Prozessoren, welche in Smartphones u.ä. eingesetzt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt folgende Varianten des Cortex-M Mikrocontroller-Kerns, aufgeführt vom energieeffizientesten zum leistungsfähigsten.&lt;br /&gt;
&lt;br /&gt;
== ARM Cortex M0/M0+ ==&lt;br /&gt;
Als günstigste und energieeffizienteste Variante gibt es die Cortex-M0 Cores mit deutlich kleinerem Befehlssatz als z.B. Cortex-M3. Diese&lt;br /&gt;
werden beispielsweise in folgenden Controllern eingesetzt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1588.jsp?WT.ac=fp_may12_stm32f0 STM32F0] von [http://www.st.com STMicro], siehe &#039;&#039;&#039;[[STM32|STM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://ics.nxp.com/products/lpc1000/lpc11xx/ LPC11xx] von [http://www.nxp.com NXP], siehe &#039;&#039;&#039;[[LPC1xxx|LPC1xxx hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.infineon.com/XMC1000 XMC1000] von [http://www.infineon.com Infineon], siehe &#039;&#039;&#039;[[XMCxxxx|XMCxxxx hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.nuvoton.com/NuvotonMOSS/Community/ProductInfo.aspx?tp_GUID=5dbf7d7a-b6df-4fe1-91c9-063449500ce7 NuMicro-Controller] von Novoton (ex Winbond), laut Datenblatt mit 2.5-5.5V Betriebsspannung!&lt;br /&gt;
Für die M0-Familie ist für den LPC1xxx bereits eine &#039;&#039;&#039;[http://www.mikrocontroller.net/articles/Codebase_f%C3%BCr_LPC1xxx#Allgemeine_Informationen_zum_Aufbau_der_Code_Base Code-Base]&#039;&#039;&#039;  und ein preisgünstiges &#039;&#039;&#039;[http://www.mikrocontroller.net/wikisoftware/index.php?title=LPC1xxx_Entwicklungskit_LPCXpresso Entwicklungskit]&#039;&#039;&#039; vorhanden.&lt;br /&gt;
&lt;br /&gt;
Inzwischen gibt es auch eine optimierte Version des Cortex-M0 - die Cortex-M0+ Cores. Diese können (optional) einige Features der Cortex-M3 Serie beinhalten, wie z.B eine MPU:&lt;br /&gt;
&lt;br /&gt;
* [http://www.energymicro.com/products/efm32-zero-gecko-microcontroller-family EFM32 Zero Gecko] von [http://www.energymicro.com Silicon Labs (ehemals Energy Micro)], siehe &#039;&#039;&#039;[[EFM32|EFM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers/cortex_m0plus/lpc800/ LPC8xx] von [http://www.nxp.com NXP]&lt;br /&gt;
* [http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_L_SERIES Kinetis L-Serie] und [http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_M_SERIES Kinetis M-Serie] von [http://www.freescale.com/ Freescale]&lt;br /&gt;
* [http://www.fujitsu-fm-family.com/products/fm0.html angekündigte FM0+ Familie] von [http://www.fujitsu.com/emea/services/microelectronics Fujitsu]&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1817?icmp=ss1817_pron_pr_feb2014 angekündigte M0+ Familie] von [http://st.com  STMicroelectronics]&lt;br /&gt;
* [http://www.atmel.com/Microsite/samd/default.aspx?utm_campaign=February_2014_Newsletter.html&amp;amp;utm_medium=email&amp;amp;utm_source=Eloqua  SAM D Familie] von [http://atmel.com  Atmel]&lt;br /&gt;
&lt;br /&gt;
== ARM Cortex M3 ==&lt;br /&gt;
Der erste Kern der Cortex M-Reihe war der Cortex-M3. Dieser ist vom Leistungsniveau her am ehesten mit seinem Vorgänger, dem ARM7TDMI vergleichbar.&lt;br /&gt;
&lt;br /&gt;
Controllerfamilien dieser Klasse sind:&lt;br /&gt;
&lt;br /&gt;
* [http://www.energymicro.com/products/efm32-tiny-gecko-microcontroller-family EFM32 Tiny Gecko], [http://www.energymicro.com/products/efm32-gecko-microcontroller-family EFM32 Gecko] sowie [http://www.energymicro.com/products/efm32-leopard-gecko-microcontroller-family EFM32 Leopard Gecko] von [http://www.energymicro.com Silicon Labs (ehemals Energy Micro)] , siehe &#039;&#039;&#039;[[EFM32|EFM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.nxp.com LPC13xx/LPC17xx/LPC18xx] von NXP oder die inzwischen schon sehr ausführliche, siehe &#039;&#039;&#039;[[LPC1xxx|LPC1xxx hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.ti.com/lsds/ti/microcontroller/tiva_arm_cortex/c_series/tm4c_arm_cortex-m4/overview.page TIVA] von [http://www.ti.com Texas Instruments] (vormals Stellaris, vormals Luminary Micro)&lt;br /&gt;
* [http://www.atmel.com/products/at91/sam3landing.asp?family_id=605 AT91SAM3] von Atmel&lt;br /&gt;
* [http://www.st.com/internet/mcu/family/141.jsp STM32] Baureihen [http://www.st.com/internet/mcu/subclass/1169.jsp F1]/[http://www.st.com/internet/mcu/subclass/1520.jsp F2]/[http://www.st.com/internet/mcu/subclass/1376.jsp L1]/[http://www.st.com/internet/mcu/subclass/1377.jsp W] von STMicroelectronics , siehe &#039;&#039;&#039;[[STM32|STM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.toshiba-components.com/microcontroller/TMPM330.html TMPM330] von Toshiba&lt;br /&gt;
* [http://www.spansion.com/Products/microcontrollers/32-bit-ARM-Core/fm3/Pages/FM3-family.aspx FM3] von [http://www.spansion.com Spansion] (vormals Fujitsu)&lt;br /&gt;
* [https://www.silabs.com/products/mcu/Pages/ARM-32bit-microcontroller.aspx SiM3U1xx] von Silabs&lt;br /&gt;
* [http://www.holtek.com.tw/english/products/32bit_flashmcu.htm HT32] von Holtek Semiconductor&lt;br /&gt;
&lt;br /&gt;
Für den LPC1xxx ist bereits eine &#039;&#039;&#039;[http://www.mikrocontroller.net/articles/Codebase_f%C3%BCr_LPC1xxx#Allgemeine_Informationen_zum_Aufbau_der_Code_Base Code-Base]&#039;&#039;&#039;  und ein preisgünstiges &#039;&#039;&#039;[[LPC1xxx_Entwicklungskit_LPCXpresso]]&#039;&#039;&#039; vorhanden.&lt;br /&gt;
&lt;br /&gt;
== ARM Cortex M4 ==&lt;br /&gt;
Als hoch performante Variante gibt es dann noch die Cortex-M4 Cores welche mit zusätzlichen [[DSP]]-Funktionen und teilweise einer FPU ausgestattet sind. &lt;br /&gt;
&lt;br /&gt;
Diese werden beispielsweise in folgenden Controllern eingesetzt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.energymicro.com/products/efm32-wonder-gecko-microcontroller-family EFM32-Wonder Gecko] von [http://www.energymicro.com Silicon Labs (ehemals Energy Micro)], siehe &#039;&#039;&#039;[[EFM32|EFM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.nxp.com LPC43xx] von NXP (Dual Core)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3] von [http://www.st.com STMicro], siehe &#039;&#039;&#039;[[STM32|STM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp?WT.ac=p2_bn_jun12_stm32f4series STM32F4] von [http://www.st.com STMicro], siehe &#039;&#039;&#039;[[STM32|STM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.ti.com/lsds/ti/microcontroller/tiva_arm_cortex/c_series/tm4c_arm_cortex-m4/overview.page Tiva C Series, TM4C] von [http://www.ti.com Texas Instruments]. Früher nannte Texas Instruments diese Controller &#039;&#039;Stellaris LM4F Series&#039;&#039;. 2013 begann TI mit einer große Umbenennung, bei der sogar neue Typenbezeichnung vergeben wurden. So wurde zum Beispiel aus dem LM4F230H5QR der TM4C123GH6PM. Gleichzeitig begann TI die Bezeichnung &#039;&#039;Stellaris&#039;&#039; aus Datenblättern, Software-Bibliotheken und Ähnlichem zu entfernen und durch &#039;&#039;Tiva&#039;&#039; zu ersetzen. Siehe auch [http://www.ti.com/lit/an/spma050a/spma050a.pdf].&lt;br /&gt;
* [http://www.infineon.com/XMC4000 XMC4000] von [http://www.infineon.com Infineon],  siehe &#039;&#039;&#039;[[XMCxxxx|XMCxxxx hier im Wiki]]&#039;&#039;&#039;, [https://www.mikrocontroller.net/articles/XMC4500 Artikel zum XMC4500]&lt;br /&gt;
* [http://www.spansion.com/Products/microcontrollers/32-bit-ARM-Core/fm4/Pages/default.aspx FM4] von [http://www.spansion.com Spansion] (vormals Fujitsu)&lt;br /&gt;
* [http://www.atmel.com/products/at91/sam4landing.asp?family_id=605 AT91SAM4] von Atmel&lt;br /&gt;
&lt;br /&gt;
== ARM7TDMI ==&lt;br /&gt;
Der Vorgänger der Cortex-M-Cores ist der &#039;&#039;&#039;ARM7&#039;&#039;&#039;TDMI. Controllerfamilien dieser Klasse sind immer noch weit verbreitet:&lt;br /&gt;
* NXP (ehemals Philips) [[LPC2000]] &lt;br /&gt;
* Atmel [[AT91SAM]]7&lt;br /&gt;
* Analog Devices [[ADuC7xxx]]&lt;br /&gt;
* [http://focus.ti.com/mcu/docs/mcuprodoverview.tsp?sectionId=95&amp;amp;tabId=203&amp;amp;familyId=454 Texas Instruments TMS470]&lt;br /&gt;
* SAMSUNG S3C24x0 [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;amp;partnum=S3C2410]&lt;br /&gt;
* STR7xx von ST Microelectronics [http://www.st.com/mcu/inchtml-pages-str7.html]&lt;br /&gt;
* und viele weitere&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen zur ARM-Architektur finden sich in der [http://de.wikipedia.org/wiki/ARM-Architektur Wikipedia], weiterführende Links in der [[Linksammlung#ARM|Linksammlung]].&lt;br /&gt;
&lt;br /&gt;
== Compiler &amp;amp; Software ==&lt;br /&gt;
&lt;br /&gt;
=== [[ARM_GCC|GCC]] ===&lt;br /&gt;
&lt;br /&gt;
Einer der beliebtesten Compiler für ARM-Prozessoren ist der GCC. Er kann sowohl ARM- als auch Thumb-Code erzeugen. Mehr dazu unter [[ARM GCC]].&lt;br /&gt;
&lt;br /&gt;
=== C/C++ IDEs ===&lt;br /&gt;
&lt;br /&gt;
Kostenlose Entwicklungsumgebungen (überwiegend GCC-basiert):&lt;br /&gt;
* [http://www.emblocks.org/web/ EmBlocks IDE] (Basiert auf Code::Blocks)&lt;br /&gt;
** Compiler: GNU ARM-GCC (in der Installation enthalten), RealView und IAR &lt;br /&gt;
** Hardware: STlink (mit &amp;quot;Live data&amp;quot;), openOCD, Jlink. &lt;br /&gt;
** Project Import: CoIDE, uVision, Atmel studio, MplabX, Mplab 8   &lt;br /&gt;
** Unterstützt sehr viele Controller(-Hersteller):&lt;br /&gt;
***Atmel-ARM&lt;br /&gt;
***NXP-ARM&lt;br /&gt;
***STMicro-ARM&lt;br /&gt;
***EnergyMicro-ARM&lt;br /&gt;
**Keine Beschränkungen&lt;br /&gt;
**Hier gehts zum &#039;&#039;[http://www.emblocks.org/web/downloads-main Download]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.coocox.org/CooCox_CoIDE.htm CooCox IDE] (Eclipse basierend)&lt;br /&gt;
* [https://mbed.org mbed]: eine kostenlose Online-Entwicklungsumgebung basierend auf dem ARM Realview-Compiler, mit einer umfangreichen C++-Bibliothek für die Controllerfunktionen, integrierter Versionsverwaltung, und vielen Beispielprogrammen. Projekte lassen sich für Keil/IAR/GCC exportieren und offline weiterbearbeiten; die Bibliotheksfunktionen sind Open Source und auch kommerziell einsetzbar.&lt;br /&gt;
* [http://www.emide.org/ emIDE] Windows, komplette Visual Studio artige Entwicklungsumgebung (basierend auf Code::Blocks) mit GCC und Debugger (Unterstützung für Adapter von Segger) &amp;lt;!-- Projekt eines Segger Mitarbeiters --&amp;gt;&lt;br /&gt;
* [http://www.isystem.com/products/software/winidea-open winIDEAOpen]Die Fa. iSystem stellt mit der winIDEAOpen nun eine kostenlose Entwicklungsumgebung für alle Cortex-M Bauteile zur Verfügung. Als Compiler wird der GNU GCC verwendet und auch gleich mitinstalliert. Die IDE ist recht intuitiv und mit einer umfangreichen Hilfe ausgestattet. Das Ganze funktioniert mit dem &amp;lt;u&amp;gt;GCC ohne Codesize Limit&amp;lt;/u&amp;gt; und auch ein Testwerkzeug (testIDEA) ist mit integriert. Hardwareseitig werden neben dem iSystem iTag50 [http://www.isystem.com/products/hardware/cortex-debugger/itag] auch die Segger J-Link Debug Probes sowie der ST-Link von ST unterstützt. Auf der Webseite von iSystem sind auch einige schöne Beispielprojekte für diverse Boards zu finden [http://www.isystem.com/download/winideaopen]. Demnächst soll noch die Unterstützung für die ARM und IAR Compiler hinzuzkommen. Hier gehts zum &#039;&#039;[http://www.isystem.com/download/winideaopen Download]&#039;&#039;&#039;&lt;br /&gt;
* Für die &#039;&#039;&#039;LPC&#039;&#039;&#039; Prozessorfamilie ist eine &amp;lt;u&amp;gt;kostenlose&amp;lt;/u&amp;gt; C/C++ Entwicklungsumgebung  von &#039;&#039;&#039;[http://www.code-red-tech.com/lpcxpresso.php  code-red]&#039;&#039;&#039; erhältlich. Die auf Eclipse basierende Entwicklungsumgebung ist nach der Installation bis 8k freigeschaltet und nach einer einfachen und kostenlosen Registrierung für 512kB. Die IDE ist auch für &#039;&#039;&#039;[http://support.code-red-tech.com/CodeRedWiki/redlib_v2_notes Linux]&#039;&#039;&#039; verfügbar. Hier die &#039;&#039;&#039;[[Installationsanleitung_C-Entwicklungsumgebung_f%C3%BCr_LPC1xxx_von_Code_Red]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kommerzielle Entwicklungsumgebungen (zum Teil kostenlos mit Einschränkungen) für ARM-basierte Mikrocontroller sind z.&amp;amp;nbsp;B.:&lt;br /&gt;
* [http://rowley.co.uk/arm/ Crossworks ARM] (GCC-basiert, Windows, Mac OS und Linux)&lt;br /&gt;
* [http://www.cosmicsoftware.com/download_cortex_64k.php Cosmic Software] (Windows), bis 64kB kostenlos&lt;br /&gt;
* [http://www.iar.com/ewarm/ IAR Embedded Workbench for ARM] (Windows)&lt;br /&gt;
* [http://www.keil.com/arm/ MDK-ARM von Keil/ARM] (Windows), Lite-Version bis 32kB kostenlos&lt;br /&gt;
* [http://www.sisy.de/ SiSy MC++] (Windows), Demo-Version, keine Code-Begrenzung&lt;br /&gt;
&lt;br /&gt;
=== Compiler für sonstige Programmiersprachen ===&lt;br /&gt;
* Basic: http://www.mikroe.com/mikrobasic/arm/&lt;br /&gt;
* Pascal: http://www.mikroe.com/mikropascal/arm/&lt;br /&gt;
&lt;br /&gt;
=== Interpreter ===&lt;br /&gt;
* Lua: http://www.eluaproject.net/&lt;br /&gt;
* Forth: https://github.com/ekoeppen/CoreForth&lt;br /&gt;
* JavaScript: http://www.espruino.com/&lt;br /&gt;
&lt;br /&gt;
=== ARM/XSCALE/CORTEX Instruction Set Simulator ===&lt;br /&gt;
&lt;br /&gt;
Die Firma Lauterbach bietet unter der Artikelnummer LA-8809 einen Instruction Set Simulator für ARM Cores an. Die Demoversion ist zur Evaluierung kostenlos. Einschränkungen bestehen in der Anzahl der zu ladenden Debugsymbole. Der Simulator unterstützt alle gängigen ARM Derivate und lädt alle üblichen Debugformate, wie die des RealView,  IAR und TI Compilers, oder der freien GCC Tools. Zum Simulator gibt es entsprechende zugehörige Debugtools, die allerdings käuflich zu erwerben sind.&lt;br /&gt;
&lt;br /&gt;
* [http://www.lauterbach.com/frames.html?dwnload.html Download ARM/XSCALE/CORTEX Simulator]&lt;br /&gt;
&lt;br /&gt;
== Debug- und Programmierschnittstellen (JTAG/SWD) ==&lt;br /&gt;
&lt;br /&gt;
Alle ARM-basierten Prozessoren verwenden ein einheitliches [[JTAG]]-Interface, über das Debugging und Speicherzugriff erfolgen kann. Nicht standardisiert sind allerdings die Verfahren zum Beschreiben des Flash-ROMs, deshalb muss man beachten ob die verwendete JTAG-Software Programmierroutinen für den jeweiligen Controller besitzt.&lt;br /&gt;
&lt;br /&gt;
SWD (Serial Wire Debug) ist eine neue mit den Cortex-Mikrocontrollern eingeführte Debug- und Programmierschnittstelle, die weniger Pins benötigt als JTAG. Die meisten Controller der Cortex-M0 &amp;amp; M3 Serie können sowohl mittels JTAG als auch mittels SWD programmiert werden, es gibt allerdings auch Exemplare (z.B. [[EFM32]] von [https://www.energymicro.com Energy Micro], XMC1100 von Infineon) welche nur SWD unterstützen.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die empfohlenen Steckerbelegungen für JTAG und SWD gibt ein [http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf Dokument von ARM].&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus gibt es noch herstellerspezifische Schnittstellen wie SPD (Single Pin Debug) von Infineon, oder vorinstallierte serielle Bootloader, z.B. beim [[STM32]]. Viele Entwicklungsboards enthalten auch einen On-Board-Debugadapter zum direkten Anschluss an USB, so dass kein externer SWD- oder JTAG-Adapter notwendig ist.&lt;br /&gt;
&lt;br /&gt;
=== Günstige Beispiele zum Einstieg ===&lt;br /&gt;
Ein einfacher JTAG-Adapter für den Parallelport ist der &amp;quot;Wiggler&amp;quot;-kompatible, den man auch einfach selbst bauen kann. Als Software lässt sich unter Windows und Linux [http://openocd.berlios.de/ OpenOCD] (zusammen mit [[GDB]]) oder [http://rowley.co.uk Crossworks ARM] verwenden.  Für USB gibt es ebenfalls OpenOCD-kompatible JTAG-Adapter.&lt;br /&gt;
&lt;br /&gt;
Von NXP sind preiswerte Entwicklungskits (ca. 25€ für Evaluation-Board incl. USB-JTAG-/-SWD-Programer und Debugger) erhältlich z.B. &#039;&#039;&#039;[http://www.watterott.com/index.php?page=search&amp;amp;keywords=LPCXpresso&amp;amp;cat=&amp;amp;mnf=&amp;amp;x=0&amp;amp;y=0 Watterott]&#039;&#039;&#039;. Siehe dazu auch die Dokumentation von NXP zu den &#039;&#039;&#039;[http://www.nxp.com/documents/leaflet/75016842.pdf LPCXpresso-Entwicklungskits]&#039;&#039;&#039; (PDF), oder diese &#039;&#039;&#039;[http://www.mikrocontroller.net/wikisoftware/index.php?title=LPC1xxx_Entwicklungskit_LPCXpresso Beschreibung]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Von ST gibt es günstige Entwicklungskits (ca. 20€), mit integriertem ST-Link (Debugger). Zum Beispiel das [http://www.st.com/stm32f4-discovery STM32F4 Discovery Board].&lt;br /&gt;
&lt;br /&gt;
Von Energymicro gibt es [http://www.energymicro.com/tools/efm32-starter-kits Starter Kits] mit integriertem J-Link (Debugger) ab ca. 50 € z.B. das [http://www.energymicro.com/tools/efm32-tiny-gecko-starter-kit EFM32 Tiny Gecko Starter Kit] bei [http://de.mouser.com/ProductDetail/Energy-Micro/EFM32-TG-STK3300/?Energy-Micro/EFM32-TG-STK3300/&amp;amp;qs=sGAEpiMZZMvFPGEOwQcrYyZeaSbmjQvRx7NKUweLQtQ= Mouser]&lt;br /&gt;
&lt;br /&gt;
Der [http://www.segger.com/cms/jlink.html J-Link]-&amp;quot;Emulator&amp;quot; von Segger wird von vielen Softwarepaketen unterstützt und ist für den &amp;quot;nicht-kommerziellen&amp;quot; Einsatz von Studenten, Funkamateuren und Hobby-Bastler für ca. €50.- erhältlich (J-Link-Edu). Sein Umfang ist dabei auf das Flashen des Speichers und das Debuggen beschränkt. Die Trace-Option wie sie bei der PRO-Variante zur Verfügung steht, ist nicht vorhanden. Für den Preis (05/2013) bekommt man jedoch ein ausgewachsenes Werkzeug mit breiter Unterstützung und der Möglichkeit sowohl SWD als auch JTAG in einem Gerät vereint zu haben.&lt;br /&gt;
&lt;br /&gt;
Der ULINK2 von Keil/ARM ist ebenfalls ein wirklich gutes Gerät. Leider ist er nicht ganz so günstig und seine Zusammenarbeit beschränkt sich auf die Arm/Keil IDE µVision. Er benötigt jedoch keine speziellen USB-Treiber sondern nutzt geschickt die Funktionalität der HID-Treiber des Betriebssystems. Das macht ihn sofort auf jedem Windows-Betriebssystem einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
Als Alternative zum Beschreiben des Flash über JTAG ist oft ein serieller [[Bootloader]] im Controller enthalten. Bei ST werden sie über einen speziellen Pin der MPU aktiviert und sind dank Kompression und das intelligente entfernen redundanter Information, bei der Übertragung genauso schnell wie JTAG/SWD Adapter.&lt;br /&gt;
&lt;br /&gt;
== CMSIS - ARM Cortex Software Libraries  ==&lt;br /&gt;
 &lt;br /&gt;
Der ARM Cortex Microcontroller Software Interface Standard (CMSIS) ist ein herstellerunabhängiger Hardware Abstraction Layer für die Cortex-M-Prozessor -Serie. Dieser ermöglicht konsistente und einfache Software-Schnittstellen für den Prozessor und die Peripherie, und vereinfacht damit die Software-Wiederverwendung. &lt;br /&gt;
&lt;br /&gt;
CMSIS besteht aus folgenden Komponenten:&lt;br /&gt;
&lt;br /&gt;
* CMSIS-CORE: Bietet eine Schnittstelle zum Cortex-M0, Cortex-M3, Cortex-M4, SC000 und SC300-Prozessorkern und Peripherie-Registern.&lt;br /&gt;
* CMSIS-DSP: DSP-Bibliothek mit über 60 Funktionen in Festkomma-(fractional q7, q15, q31) und single precision floating-point (32-bit)-Implementierung&lt;br /&gt;
* CMSIS-RTOS API: Standardisierte Programmierschnittstelle für Echtzeit-Betriebssysteme für Thread-Steuerung, Ressourcen-und Zeitmanagement. Implementierungen gibt es z.B. von Keil ([http://www.keil.com/pack/doc/cmsis_rtx/index.html RTX])&lt;br /&gt;
* CMSIS-SVD: System View Beschreibung -  XML-Dateien, die die Programmiereransicht des kompletten Mikrocontroller-Systems einschließlich Peripheriegeräte enthalten&lt;br /&gt;
&lt;br /&gt;
Der Standard ist für Cortex-M-Mikrocontroller skalierbar: Von der  kleinsten 4 KB MCU bis zu MCUs mit anspruchsvoller Kommunikations-Peripherie wie Ethernet oder USB. Der Speicherbedarf für die Core Peripheral Funktionen bedarf weniger als 1 KB-Code und weniger als 10 Bytes RAM.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
* Software Beispiele von [http://www.energymicro.com/downloads/application-notes Energy Micro] basierend auf CMSIS&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen auf der [http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php ARM CMSIS Webseite].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Linksammlung#ARM|Linksammlung (Abschnitt ARM)]]&lt;br /&gt;
* [[LPC1xxx]]&lt;br /&gt;
* [[LPC1xxx_Entwicklungskit_LPCXpresso]]&lt;br /&gt;
* [[Installationsanleitung_C-Entwicklungsumgebung_f%C3%BCr_LPC1xxx_von_Code_Red]]&lt;br /&gt;
* [[Codebase_f%C3%BCr_LPC1xxx]]&lt;br /&gt;
* [[ARM-elf-GCC-Tutorial]]&lt;br /&gt;
* [[AVR32]]&lt;br /&gt;
* [[Blackfin]]&lt;br /&gt;
* [[AT91SAM9260]]&lt;br /&gt;
* [[STM32]]&lt;br /&gt;
* [[JTAG]]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/EFM32 EFM32]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/STM32_-_Einstieg_mit_Em::Blocks STM32 - Einstieg mit Em::Blocks Tutorial]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mySTM32.de Online Tutorial für den STM32]&lt;br /&gt;
* [http://www.myXMC.de Online Tutorial für den XMC von Infineon]&lt;br /&gt;
* [http://www.myUGL.de Online Tutorial für freie Grafikbibliothek, STM32, STM32F429, TFT, Touch]&lt;br /&gt;
* [http://embdev.net/forum/arm-gcc ARM-GCC Forum] im englischsprachigen &amp;quot;Ableger&amp;quot; von mikrocontroller.net embdev.net u.a. für WinARM, Yagarto, CS Codebench&lt;br /&gt;
* [http://www.arm.com/products/processors/cortex-m/index.php Cortex-M Produktseite von ARM]&lt;br /&gt;
* [http://infocenter.arm.com/help/index.jsp Infocenter von ARM Ltd.]&lt;br /&gt;
* [http://www.open-research.org.uk/ARMuC/ ARMuC ARM microcontroller Wiki]&lt;br /&gt;
* [http://chaosradio.ccc.de/cre151.html Chaosradio Express - Die ARM-Architektur]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
*ARM Systems Developer&#039;s Guide (2004) ISBN 1558608745 [http://books.google.de/books?id=HKKUkDQE17QC&amp;amp;output=html Im Buch blättern] [http://www.mkp.com/companions/defaultindividual.asp?isbn=9781558608740 Programmbeispiele aus dem Buch, u.a. FFT, FIR/IIR-Filter, Division, Wurzel]&lt;br /&gt;
*ARM Assembly Language - an Introduction (2007) ISBN 1847536964 [http://books.google.de/books?id=8KJX5R8mMvsC&amp;amp;output=html Im Buch blättern]   [http://www.lulu.com/content/1172076 Verlagsseite &amp;quot;Book on demand&amp;quot;]&lt;br /&gt;
*ARM Rechnerarchitekturen für System-on-Chip-Design (2002) ISBN 3826608542&lt;br /&gt;
*Co-Verification of Hardware and Software for Arm Soc Design (2004) ISBN 0750677309&lt;br /&gt;
*ARM System-on-Chip Architecture (2000) ISBN 0201675196 [http://books.google.de/books?id=J_Fu_YTVD9gC&amp;amp;printsec=frontcover&amp;amp;output=html&amp;amp;source=gbs_summary_r&amp;amp;cad=0 Im Buch blättern]&lt;br /&gt;
*ARM Architecture Reference Manual ISBN 0201737191 [http://books.google.de/books?id=O5G-6WX1xWsC&amp;amp;printsec=frontcover&amp;amp;output=html&amp;amp;source=gbs_summary_r&amp;amp;cad=0 Im Buch blättern]&lt;br /&gt;
*Messen, Steuern und Regeln mit ARM-Mikrocontrollern ISBN 3772340172 [http://books.google.de/books?id=TKs4kN-zNYQC&amp;amp;output=html im Buch blättern]&lt;br /&gt;
*Programming Arm Microcontrollers: Using C and the Lpc2100 Family (2005? /ab 1. Dezember 2008) ISBN 0321263359&lt;br /&gt;
*Arm Assembly: Fundamentals and Techniques (ab 1. März 2009) ISBN 1439806101&lt;br /&gt;
*Reliable Embedded Systems: Using 8051 and ARM Microcontrollers (2007) ISBN 0321252918 600 Seiten mit CD [http://vig.pearsoned.co.uk/catalog/academic/product/0,1144,0321252918-TOC,00.html Inhaltsverzeichnis]&lt;br /&gt;
* C und C++ für Embedded Systems (u.a. ARM Cortex-M3) mitp-Verlag 2008 ISBN 382665949X&lt;br /&gt;
* The Definitive Guide to the Arm Cortex-M0 (Joseph Yiu) Newnes Verlag ISBN 0123854776&lt;br /&gt;
* The Definitive Guide to the Arm Cortex-M3 (Joseph Yiu) Newnes Verlag ISBN 185617963X&lt;br /&gt;
&lt;br /&gt;
== Artikel aus der Kategorie ARM ==&lt;br /&gt;
&amp;lt;ncl style=compact maxdepth=2 headings=bullet headstart=2&lt;br /&gt;
      showcats=1 showarts=1&amp;gt;ARM&amp;lt;/ncl&amp;gt;&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/EFM32 &#039;&#039;&#039;EFM32&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/XMCxxxx &#039;&#039;&#039;Infineon XMCxxxx&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
* [https://www.mikrocontroller.net/articles/Cortex-A ARM Cortex A]&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM| ]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=ARM_Cortex_Mikrocontroller&amp;diff=81965</id>
		<title>ARM Cortex Mikrocontroller</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=ARM_Cortex_Mikrocontroller&amp;diff=81965"/>
		<updated>2014-03-06T11:42:16Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* C/C++ IDEs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Firma ARM stellt selbst keine Prozessoren/Controller her, sondern entwickelt nur sogenannte &amp;quot;IP-Cores&amp;quot;, die von Herstellern wie Atmel, Infineon, ST, NXP, TI und vielen anderen lizenziert werden. Diese Hersteller ergänzen den Core um Speicher und Peripherie. Der Vorteil dieses Modells ist, dass dadurch sehr viele Prozessoren mit unterschiedlichster Ausstattung verfügbar sind, die alle mit dem selben Befehlssatz (und damit dem selben Compiler) programmierbar sind.&lt;br /&gt;
&lt;br /&gt;
Allen ARM-Cores gemeinsam ist die 32 Bit RISC-Architektur. Für diese gibt es den klassischen 32bit ARM Befehlssatz und den zusätzlichen, kleineren 16/32 Bit &#039;&#039;&#039;Thumb&#039;&#039;&#039;-Befehlssatz. Die verschiedenen Prozessoren/Controller unterstützen einen oder beide davon. Thumb-fähige Controller sind erkennbar am &#039;&#039;&#039;T&#039;&#039;&#039; in der Bezeichnung, z.&amp;amp;nbsp;B. ARM7&#039;&#039;&#039;T&#039;&#039;&#039;DMI. Thumb kodiert die meisten Instruktionen in 16bit, den Rest in 32bit, was in einem kleineren Prozessor und geringenem Platzbedarf des Codes resultiert [http://www.arm.com/files/pdf/ARM_Microcontroller_Code_Size_%28full%29.pdf]; der Nachteil ist die etwas niedrigere Geschwindigkeit. Die Cortex-M Kerne unterstützen ausschließlich den Thumb2-Befehlssatz.&lt;br /&gt;
&lt;br /&gt;
Seit einigen Jahren sind ARM-basierte Mikrocontroller erhältlich, die aufgrund der vergleichbar einfachen Beschaltung und niedrigem Stromverbrauch eine echte Alternative zu 8-Bit-Controllern wie dem [[AVR]] darstellen. Die ersten Controller mit diesen Eigenschaften verwendeten den ARM7TDMI-Kern (zB. LPC2000) (ARMv4T-Architektur). Mittlerweile wurden diese vom Cortex M-Kern abgelöst (ARMv6M, ARMv7M-Architektur), welcher in verschiedenen Varianten für verschiedene Einsatzzwecke verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In diesem Artikel geht es NUR um die ARM Cortex-M Mikrocontroller, nicht jedoch um ARM [https://www.mikrocontroller.net/articles/Cortex-A Cortex-A] Prozessoren, welche in Smartphones u.ä. eingesetzt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt folgende Varianten des Cortex-M Mikrocontroller-Kerns, aufgeführt vom energieeffizientesten zum leistungsfähigsten.&lt;br /&gt;
&lt;br /&gt;
== ARM Cortex M0/M0+ ==&lt;br /&gt;
Als günstigste und energieeffizienteste Variante gibt es die Cortex-M0 Cores mit deutlich kleinerem Befehlssatz als z.B. Cortex-M3. Diese&lt;br /&gt;
werden beispielsweise in folgenden Controllern eingesetzt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1588.jsp?WT.ac=fp_may12_stm32f0 STM32F0] von [http://www.st.com STMicro], siehe &#039;&#039;&#039;[[STM32|STM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://ics.nxp.com/products/lpc1000/lpc11xx/ LPC11xx] von [http://www.nxp.com NXP], siehe &#039;&#039;&#039;[[LPC1xxx|LPC1xxx hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.infineon.com/XMC1000 XMC1000] von [http://www.infineon.com Infineon], siehe &#039;&#039;&#039;[[XMCxxxx|XMCxxxx hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.nuvoton.com/NuvotonMOSS/Community/ProductInfo.aspx?tp_GUID=5dbf7d7a-b6df-4fe1-91c9-063449500ce7 NuMicro-Controller] von Novoton (ex Winbond), laut Datenblatt mit 2.5-5.5V Betriebsspannung!&lt;br /&gt;
Für die M0-Familie ist für den LPC1xxx bereits eine &#039;&#039;&#039;[http://www.mikrocontroller.net/articles/Codebase_f%C3%BCr_LPC1xxx#Allgemeine_Informationen_zum_Aufbau_der_Code_Base Code-Base]&#039;&#039;&#039;  und ein preisgünstiges &#039;&#039;&#039;[http://www.mikrocontroller.net/wikisoftware/index.php?title=LPC1xxx_Entwicklungskit_LPCXpresso Entwicklungskit]&#039;&#039;&#039; vorhanden.&lt;br /&gt;
&lt;br /&gt;
Inzwischen gibt es auch eine optimierte Version des Cortex-M0 - die Cortex-M0+ Cores. Diese können (optional) einige Features der Cortex-M3 Serie beinhalten, wie z.B eine MPU:&lt;br /&gt;
&lt;br /&gt;
* [http://www.energymicro.com/products/efm32-zero-gecko-microcontroller-family EFM32 Zero Gecko] von [http://www.energymicro.com Silicon Labs (ehemals Energy Micro)], siehe &#039;&#039;&#039;[[EFM32|EFM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers/cortex_m0plus/lpc800/ LPC8xx] von [http://www.nxp.com NXP]&lt;br /&gt;
* [http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_L_SERIES Kinetis L-Serie] und [http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_M_SERIES Kinetis M-Serie] von [http://www.freescale.com/ Freescale]&lt;br /&gt;
* [http://www.fujitsu-fm-family.com/products/fm0.html angekündigte FM0+ Familie] von [http://www.fujitsu.com/emea/services/microelectronics Fujitsu]&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1817?icmp=ss1817_pron_pr_feb2014 angekündigte M0+ Familie] von [http://st.com  STMicroelectronics]&lt;br /&gt;
* [http://www.atmel.com/Microsite/samd/default.aspx?utm_campaign=February_2014_Newsletter.html&amp;amp;utm_medium=email&amp;amp;utm_source=Eloqua  SAM D Familie] von [http://atmel.com  Atmel]&lt;br /&gt;
&lt;br /&gt;
== ARM Cortex M3 ==&lt;br /&gt;
Der erste Kern der Cortex M-Reihe war der Cortex-M3. Dieser ist vom Leistungsniveau her am ehesten mit seinem Vorgänger, dem ARM7TDMI vergleichbar.&lt;br /&gt;
&lt;br /&gt;
Controllerfamilien dieser Klasse sind:&lt;br /&gt;
&lt;br /&gt;
* [http://www.energymicro.com/products/efm32-tiny-gecko-microcontroller-family EFM32 Tiny Gecko], [http://www.energymicro.com/products/efm32-gecko-microcontroller-family EFM32 Gecko] sowie [http://www.energymicro.com/products/efm32-leopard-gecko-microcontroller-family EFM32 Leopard Gecko] von [http://www.energymicro.com Silicon Labs (ehemals Energy Micro)] , siehe &#039;&#039;&#039;[[EFM32|EFM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.nxp.com LPC13xx/LPC17xx/LPC18xx] von NXP oder die inzwischen schon sehr ausführliche, siehe &#039;&#039;&#039;[[LPC1xxx|LPC1xxx hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.ti.com/lsds/ti/microcontroller/tiva_arm_cortex/c_series/tm4c_arm_cortex-m4/overview.page TIVA] von [http://www.ti.com Texas Instruments] (vormals Stellaris, vormals Luminary Micro)&lt;br /&gt;
* [http://www.atmel.com/products/at91/sam3landing.asp?family_id=605 AT91SAM3] von Atmel&lt;br /&gt;
* [http://www.st.com/internet/mcu/family/141.jsp STM32] Baureihen [http://www.st.com/internet/mcu/subclass/1169.jsp F1]/[http://www.st.com/internet/mcu/subclass/1520.jsp F2]/[http://www.st.com/internet/mcu/subclass/1376.jsp L1]/[http://www.st.com/internet/mcu/subclass/1377.jsp W] von STMicroelectronics , siehe &#039;&#039;&#039;[[STM32|STM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.toshiba-components.com/microcontroller/TMPM330.html TMPM330] von Toshiba&lt;br /&gt;
* [http://www.spansion.com/Products/microcontrollers/32-bit-ARM-Core/fm3/Pages/FM3-family.aspx FM3] von [http://www.spansion.com Spansion] (vormals Fujitsu)&lt;br /&gt;
* [https://www.silabs.com/products/mcu/Pages/ARM-32bit-microcontroller.aspx SiM3U1xx] von Silabs&lt;br /&gt;
* [http://www.holtek.com.tw/english/products/32bit_flashmcu.htm HT32] von Holtek Semiconductor&lt;br /&gt;
&lt;br /&gt;
Für den LPC1xxx ist bereits eine &#039;&#039;&#039;[http://www.mikrocontroller.net/articles/Codebase_f%C3%BCr_LPC1xxx#Allgemeine_Informationen_zum_Aufbau_der_Code_Base Code-Base]&#039;&#039;&#039;  und ein preisgünstiges &#039;&#039;&#039;[[LPC1xxx_Entwicklungskit_LPCXpresso]]&#039;&#039;&#039; vorhanden.&lt;br /&gt;
&lt;br /&gt;
== ARM Cortex M4 ==&lt;br /&gt;
Als hoch performante Variante gibt es dann noch die Cortex-M4 Cores welche mit zusätzlichen [[DSP]]-Funktionen und teilweise einer FPU ausgestattet sind. &lt;br /&gt;
&lt;br /&gt;
Diese werden beispielsweise in folgenden Controllern eingesetzt:&lt;br /&gt;
&lt;br /&gt;
* [http://www.energymicro.com/products/efm32-wonder-gecko-microcontroller-family EFM32-Wonder Gecko] von [http://www.energymicro.com Silicon Labs (ehemals Energy Micro)], siehe &#039;&#039;&#039;[[EFM32|EFM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.nxp.com LPC43xx] von NXP (Dual Core)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3] von [http://www.st.com STMicro], siehe &#039;&#039;&#039;[[STM32|STM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp?WT.ac=p2_bn_jun12_stm32f4series STM32F4] von [http://www.st.com STMicro], siehe &#039;&#039;&#039;[[STM32|STM32 hier im Wiki]]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.ti.com/lsds/ti/microcontroller/tiva_arm_cortex/c_series/tm4c_arm_cortex-m4/overview.page Tiva C Series, TM4C] von [http://www.ti.com Texas Instruments]. Früher nannte Texas Instruments diese Controller &#039;&#039;Stellaris LM4F Series&#039;&#039;. 2013 begann TI mit einer große Umbenennung, bei der sogar neue Typenbezeichnung vergeben wurden. So wurde zum Beispiel aus dem LM4F230H5QR der TM4C123GH6PM. Gleichzeitig begann TI die Bezeichnung &#039;&#039;Stellaris&#039;&#039; aus Datenblättern, Software-Bibliotheken und Ähnlichem zu entfernen und durch &#039;&#039;Tiva&#039;&#039; zu ersetzen. Siehe auch [http://www.ti.com/lit/an/spma050a/spma050a.pdf].&lt;br /&gt;
* [http://www.infineon.com/XMC4000 XMC4000] von [http://www.infineon.com Infineon],  siehe &#039;&#039;&#039;[[XMCxxxx|XMCxxxx hier im Wiki]]&#039;&#039;&#039;, [https://www.mikrocontroller.net/articles/XMC4500 Artikel zum XMC4500]&lt;br /&gt;
* [http://www.spansion.com/Products/microcontrollers/32-bit-ARM-Core/fm4/Pages/default.aspx FM4] von [http://www.spansion.com Spansion] (vormals Fujitsu)&lt;br /&gt;
* [http://www.atmel.com/products/at91/sam4landing.asp?family_id=605 AT91SAM4] von Atmel&lt;br /&gt;
&lt;br /&gt;
== ARM7TDMI ==&lt;br /&gt;
Der Vorgänger der Cortex-M-Cores ist der &#039;&#039;&#039;ARM7&#039;&#039;&#039;TDMI. Controllerfamilien dieser Klasse sind immer noch weit verbreitet:&lt;br /&gt;
* NXP (ehemals Philips) [[LPC2000]] &lt;br /&gt;
* Atmel [[AT91SAM]]7&lt;br /&gt;
* Analog Devices [[ADuC7xxx]]&lt;br /&gt;
* [http://focus.ti.com/mcu/docs/mcuprodoverview.tsp?sectionId=95&amp;amp;tabId=203&amp;amp;familyId=454 Texas Instruments TMS470]&lt;br /&gt;
* SAMSUNG S3C24x0 [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;amp;partnum=S3C2410]&lt;br /&gt;
* STR7xx von ST Microelectronics [http://www.st.com/mcu/inchtml-pages-str7.html]&lt;br /&gt;
* und viele weitere&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen zur ARM-Architektur finden sich in der [http://de.wikipedia.org/wiki/ARM-Architektur Wikipedia], weiterführende Links in der [[Linksammlung#ARM|Linksammlung]].&lt;br /&gt;
&lt;br /&gt;
== Compiler &amp;amp; Software ==&lt;br /&gt;
&lt;br /&gt;
=== [[ARM_GCC|GCC]] ===&lt;br /&gt;
&lt;br /&gt;
Einer der beliebtesten Compiler für ARM-Prozessoren ist der GCC. Er kann sowohl ARM- als auch Thumb-Code erzeugen. Mehr dazu unter [[ARM GCC]].&lt;br /&gt;
&lt;br /&gt;
=== C/C++ IDEs ===&lt;br /&gt;
&lt;br /&gt;
Kostenlose Entwicklungsumgebungen (überwiegend GCC-basiert):&lt;br /&gt;
* [http://www.emblocks.org/web/ EmBlocks IDE] (Basiert auf Code::Blocks)&lt;br /&gt;
** Compiler: GNU ARM-GCC (in der Installation enthalten), RealView und IAR &lt;br /&gt;
** Hardware: STlink (mit &amp;quot;Live data&amp;quot;), openOCD, Jlink. &lt;br /&gt;
** Project Import: CoIDE, uVision, Atmel studio, MplabX, Mplab 8   &lt;br /&gt;
** Unterstützt sehr viele Controller(-Hersteller):&lt;br /&gt;
***Atmel-ARM&lt;br /&gt;
***NXP-ARM&lt;br /&gt;
***STMicro-ARM&lt;br /&gt;
***EnergyMicro-ARM&lt;br /&gt;
**Keine Beschränkungen&lt;br /&gt;
**Hier gehts zum &#039;&#039;[http://www.emblocks.org/web/downloads-main Download]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.coocox.org/CooCox_CoIDE.htm CooCox IDE] (Eclipse basierend)&lt;br /&gt;
* [https://mbed.org mbed]: eine kostenlose Online-Entwicklungsumgebung basierend auf dem ARM Realview-Compiler, mit einer umfangreichen C++-Bibliothek für die Controllerfunktionen, integrierter Versionsverwaltung, und vielen Beispielprogrammen. Projekte lassen sich für Keil/IAR/GCC exportieren und offline weiterbearbeiten; die Bibliotheksfunktionen sind Open Source und auch kommerziell einsetzbar.&lt;br /&gt;
* [http://www.emide.org/ emIDE] Windows, komplette Visual Studio artige Entwicklungsumgebung (basierend auf Code::Blocks) mit GCC und Debugger (Unterstützung für Adapter von Segger) &amp;lt;!-- Projekt eines Segger Mitarbeiters --&amp;gt;&lt;br /&gt;
* [http://www.isystem.com/products/software/winidea-open winIDEAOpen]Die Fa. iSystem stellt mit der winIDEAOpen nun eine kostenlose Entwicklungsumgebung für alle Cortex-M Bauteile zur Verfügung. Als Compiler wird der GNU GCC verwendet und auch gleich mitinstalliert. Die IDE ist recht intuitiv und mit einer umfangreichen Hilfe ausgestattet. Das Ganze funktioniert mit dem &amp;lt;u&amp;gt;GCC ohne Codesize Limit&amp;lt;/u&amp;gt; und auch ein Testwerkzeug (testIDEA) ist mit integriert. Hardwareseitig werden neben dem iSystem iTag50 [http://www.isystem.com/products/hardware/cortex-debugger/itag] auch die Segger J-Link Debug Probes sowie der ST-Link von ST unterstützt. Auf der Webseite von iSystem sind auch einige schöne Beispielprojekte für diverse Boards zu finden [http://www.isystem.com/download/winideaopen]. Demnächst soll noch die Unterstützung für die ARM und IAR Compiler hinzuzkommen. Hier gehts zum &#039;&#039;[http://www.isystem.com/download/winideaopen Download]&#039;&#039;&#039;&lt;br /&gt;
* Für die &#039;&#039;&#039;LPC&#039;&#039;&#039; Prozessorfamilie ist eine &amp;lt;u&amp;gt;kostenlose&amp;lt;/u&amp;gt; C/C++ Entwicklungsumgebung  von &#039;&#039;&#039;[http://www.code-red-tech.com/lpcxpresso.php  code-red]&#039;&#039;&#039; erhältlich. Die auf Eclipse basierende Entwicklungsumgebung ist nach der Installation bis 8k freigeschaltet und nach einer einfachen und kostenlosen Registrierung für 512kB. Die IDE ist auch für &#039;&#039;&#039;[http://support.code-red-tech.com/CodeRedWiki/redlib_v2_notes Linux]&#039;&#039;&#039; verfügbar. Hier die &#039;&#039;&#039;[[Installationsanleitung_C-Entwicklungsumgebung_f%C3%BCr_LPC1xxx_von_Code_Red]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kommerzielle Entwicklungsumgebungen (zum Teil kostenlos mit Einschränkungen) für ARM-basierte Mikrocontroller sind z.&amp;amp;nbsp;B.:&lt;br /&gt;
* [http://rowley.co.uk/arm/ Crossworks ARM] (GCC-basiert, Windows, Mac OS und Linux)&lt;br /&gt;
* [http://www.cosmicsoftware.com/download_cortex_64k.php Cosmic Software] (Windows), bis 64kB kostenlos&lt;br /&gt;
* [http://www.iar.com/ewarm/ IAR Embedded Workbench for ARM] (Windows)&lt;br /&gt;
* [http://www.keil.com/arm/ MDK-ARM von Keil/ARM] (Windows), Lite-Version bis 32kB kostenlos&lt;br /&gt;
* [http://www.sisy.de/ SiSy MC++] (Windows), Demo-Version, keine Code-Begrenzung&lt;br /&gt;
&lt;br /&gt;
=== Compiler für sonstige Programmiersprachen ===&lt;br /&gt;
* Basic: http://www.mikroe.com/mikrobasic/arm/&lt;br /&gt;
* Pascal: http://www.mikroe.com/mikropascal/arm/&lt;br /&gt;
&lt;br /&gt;
=== Interpreter ===&lt;br /&gt;
* Lua: http://www.eluaproject.net/&lt;br /&gt;
* Forth: https://github.com/ekoeppen/CoreForth&lt;br /&gt;
* JavaScript: http://www.espruino.com/&lt;br /&gt;
&lt;br /&gt;
=== ARM/XSCALE/CORTEX Instruction Set Simulator ===&lt;br /&gt;
&lt;br /&gt;
Die Firma Lauterbach bietet unter der Artikelnummer LA-8809 einen Instruction Set Simulator für ARM Cores an. Die Demoversion ist zur Evaluierung kostenlos. Einschränkungen bestehen in der Anzahl der zu ladenden Debugsymbole. Der Simulator unterstützt alle gängigen ARM Derivate und lädt alle üblichen Debugformate, wie die des RealView,  IAR und TI Compilers, oder der freien GCC Tools. Zum Simulator gibt es entsprechende zugehörige Debugtools, die allerdings käuflich zu erwerben sind.&lt;br /&gt;
&lt;br /&gt;
* [http://www.lauterbach.com/frames.html?dwnload.html Download ARM/XSCALE/CORTEX Simulator]&lt;br /&gt;
&lt;br /&gt;
== Debug- und Programmierschnittstellen (JTAG/SWD) ==&lt;br /&gt;
&lt;br /&gt;
Alle ARM-basierten Prozessoren verwenden ein einheitliches [[JTAG]]-Interface, über das Debugging und Speicherzugriff erfolgen kann. Nicht standardisiert sind allerdings die Verfahren zum Beschreiben des Flash-ROMs, deshalb muss man beachten ob die verwendete JTAG-Software Programmierroutinen für den jeweiligen Controller besitzt.&lt;br /&gt;
&lt;br /&gt;
SWD (Serial Wire Debug) ist eine neue mit den Cortex-Mikrocontrollern eingeführte Debug- und Programmierschnittstelle, die weniger Pins benötigt als JTAG. Die meisten Controller der Cortex-M0 &amp;amp; M3 Serie können sowohl mittels JTAG als auch mittels SWD programmiert werden, es gibt allerdings auch Exemplare (z.B. [[EFM32]] von [https://www.energymicro.com Energy Micro], XMC1100 von Infineon) welche nur SWD unterstützen.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die empfohlenen Steckerbelegungen für JTAG und SWD gibt ein [http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf Dokument von ARM].&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus gibt es noch herstellerspezifische Schnittstellen wie SPD (Single Pin Debug) von Infineon, oder vorinstallierte serielle Bootloader, z.B. beim [[STM32]]. Viele Entwicklungsboards enthalten auch einen On-Board-Debugadapter zum direkten Anschluss an USB, so dass kein externer SWD- oder JTAG-Adapter notwendig ist.&lt;br /&gt;
&lt;br /&gt;
=== Günstige Beispiele zum Einstieg ===&lt;br /&gt;
Ein einfacher JTAG-Adapter für den Parallelport ist der &amp;quot;Wiggler&amp;quot;-kompatible, den man auch einfach selbst bauen kann. Als Software lässt sich unter Windows und Linux [http://openocd.berlios.de/ OpenOCD] (zusammen mit [[GDB]]) oder [http://rowley.co.uk Crossworks ARM] verwenden.  Für USB gibt es ebenfalls OpenOCD-kompatible JTAG-Adapter.&lt;br /&gt;
&lt;br /&gt;
Von NXP sind preiswerte Entwicklungskits (ca. 25€ für Evaluation-Board incl. USB-JTAG-/-SWD-Programer und Debugger) erhältlich z.B. &#039;&#039;&#039;[http://www.watterott.com/index.php?page=search&amp;amp;keywords=LPCXpresso&amp;amp;cat=&amp;amp;mnf=&amp;amp;x=0&amp;amp;y=0 Watterott]&#039;&#039;&#039;. Siehe dazu auch die Dokumentation von NXP zu den &#039;&#039;&#039;[http://www.nxp.com/documents/leaflet/75016842.pdf LPCXpresso-Entwicklungskits]&#039;&#039;&#039; (PDF), oder diese &#039;&#039;&#039;[http://www.mikrocontroller.net/wikisoftware/index.php?title=LPC1xxx_Entwicklungskit_LPCXpresso Beschreibung]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Von ST gibt es günstige Entwicklungskits (ca. 20€), mit integriertem ST-Link (Debugger). Zum Beispiel das [http://www.st.com/stm32f4-discovery STM32F4 Discovery Board].&lt;br /&gt;
&lt;br /&gt;
Von Energymicro gibt es [http://www.energymicro.com/tools/efm32-starter-kits Starter Kits] mit integriertem J-Link (Debugger) ab ca. 50 € z.B. das [http://www.energymicro.com/tools/efm32-tiny-gecko-starter-kit EFM32 Tiny Gecko Starter Kit] bei [http://de.mouser.com/ProductDetail/Energy-Micro/EFM32-TG-STK3300/?Energy-Micro/EFM32-TG-STK3300/&amp;amp;qs=sGAEpiMZZMvFPGEOwQcrYyZeaSbmjQvRx7NKUweLQtQ= Mouser]&lt;br /&gt;
&lt;br /&gt;
Der [http://www.segger.com/cms/jlink.html J-Link]-&amp;quot;Emulator&amp;quot; von Segger wird von vielen Softwarepaketen unterstützt und ist für den &amp;quot;nicht-kommerziellen&amp;quot; Einsatz von Studenten, Funkamateuren und Hobby-Bastler für ca. €50.- erhältlich (J-Link-Edu). Sein Umfang ist dabei auf das Flashen des Speichers und das Debuggen beschränkt. Die Trace-Option wie sie bei der PRO-Variante zur Verfügung steht, ist nicht vorhanden. Für den Preis (05/2013) bekommt man jedoch ein ausgewachsenes Werkzeug mit breiter Unterstützung und der Möglichkeit sowohl SWD als auch JTAG in einem Gerät vereint zu haben.&lt;br /&gt;
&lt;br /&gt;
Der ULINK2 von Keil/ARM ist ebenfalls ein wirklich gutes Gerät. Leider ist er nicht ganz so günstig und seine Zusammenarbeit beschränkt sich auf die Arm/Keil IDE µVision. Er benötigt jedoch keine speziellen USB-Treiber sondern nutzt geschickt die Funktionalität der HID-Treiber des Betriebssystems. Das macht ihn sofort auf jedem Windows-Betriebssystem einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
Als Alternative zum Beschreiben des Flash über JTAG ist oft ein serieller [[Bootloader]] im Controller enthalten. Bei ST werden sie über einen speziellen Pin der MPU aktiviert und sind dank Kompression und das intelligente entfernen redundanter Information, bei der Übertragung genauso schnell wie JTAG/SWD Adapter.&lt;br /&gt;
&lt;br /&gt;
== CMSIS - ARM Cortex Software Libraries  ==&lt;br /&gt;
 &lt;br /&gt;
Der ARM Cortex Microcontroller Software Interface Standard (CMSIS) ist ein herstellerunabhängiger Hardware Abstraction Layer für die Cortex-M-Prozessor -Serie. Dieser ermöglicht konsistente und einfache Software-Schnittstellen für den Prozessor und die Peripherie, und vereinfacht damit die Software-Wiederverwendung. &lt;br /&gt;
&lt;br /&gt;
CMSIS besteht aus folgenden Komponenten:&lt;br /&gt;
&lt;br /&gt;
* CMSIS-CORE: Bietet eine Schnittstelle zum Cortex-M0, Cortex-M3, Cortex-M4, SC000 und SC300-Prozessorkern und Peripherie-Registern.&lt;br /&gt;
* CMSIS-DSP: DSP-Bibliothek mit über 60 Funktionen in Festkomma-(fractional q7, q15, q31) und single precision floating-point (32-bit)-Implementierung&lt;br /&gt;
* CMSIS-RTOS API: Standardisierte Programmierschnittstelle für Echtzeit-Betriebssysteme für Thread-Steuerung, Ressourcen-und Zeitmanagement. Implementierungen gibt es z.B. von Keil ([http://www.keil.com/pack/doc/cmsis_rtx/index.html RTX])&lt;br /&gt;
* CMSIS-SVD: System View Beschreibung -  XML-Dateien, die die Programmiereransicht des kompletten Mikrocontroller-Systems einschließlich Peripheriegeräte enthalten&lt;br /&gt;
&lt;br /&gt;
Der Standard ist für Cortex-M-Mikrocontroller skalierbar: Von der  kleinsten 4 KB MCU bis zu MCUs mit anspruchsvoller Kommunikations-Peripherie wie Ethernet oder USB. Der Speicherbedarf für die Core Peripheral Funktionen bedarf weniger als 1 KB-Code und weniger als 10 Bytes RAM.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
* Software Beispiele von [http://www.energymicro.com/downloads/application-notes Energy Micro] basierend auf CMSIS&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen auf der [http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php ARM CMSIS Webseite].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Linksammlung#ARM|Linksammlung (Abschnitt ARM)]]&lt;br /&gt;
* [[LPC1xxx]]&lt;br /&gt;
* [[LPC1xxx_Entwicklungskit_LPCXpresso]]&lt;br /&gt;
* [[Installationsanleitung_C-Entwicklungsumgebung_f%C3%BCr_LPC1xxx_von_Code_Red]]&lt;br /&gt;
* [[Codebase_f%C3%BCr_LPC1xxx]]&lt;br /&gt;
* [[ARM-elf-GCC-Tutorial]]&lt;br /&gt;
* [[AVR32]]&lt;br /&gt;
* [[Blackfin]]&lt;br /&gt;
* [[AT91SAM9260]]&lt;br /&gt;
* [[STM32]]&lt;br /&gt;
* [[JTAG]]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/EFM32 EFM32]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/STM32_-_Einstieg_mit_Em::Blocks STM32 - Einstieg mit Em::Blocks Tutorial]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://embdev.net/forum/arm-gcc ARM-GCC Forum] im englischsprachigen &amp;quot;Ableger&amp;quot; von mikrocontroller.net embdev.net u.a. für WinARM, Yagarto, CS Codebench&lt;br /&gt;
* [http://www.arm.com/products/processors/cortex-m/index.php Cortex-M Produktseite von ARM]&lt;br /&gt;
* [http://infocenter.arm.com/help/index.jsp Infocenter von ARM Ltd.]&lt;br /&gt;
* [http://www.open-research.org.uk/ARMuC/ ARMuC ARM microcontroller Wiki]&lt;br /&gt;
* [http://chaosradio.ccc.de/cre151.html Chaosradio Express - Die ARM-Architektur]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
*ARM Systems Developer&#039;s Guide (2004) ISBN 1558608745 [http://books.google.de/books?id=HKKUkDQE17QC&amp;amp;output=html Im Buch blättern] [http://www.mkp.com/companions/defaultindividual.asp?isbn=9781558608740 Programmbeispiele aus dem Buch, u.a. FFT, FIR/IIR-Filter, Division, Wurzel]&lt;br /&gt;
*ARM Assembly Language - an Introduction (2007) ISBN 1847536964 [http://books.google.de/books?id=8KJX5R8mMvsC&amp;amp;output=html Im Buch blättern]   [http://www.lulu.com/content/1172076 Verlagsseite &amp;quot;Book on demand&amp;quot;]&lt;br /&gt;
*ARM Rechnerarchitekturen für System-on-Chip-Design (2002) ISBN 3826608542&lt;br /&gt;
*Co-Verification of Hardware and Software for Arm Soc Design (2004) ISBN 0750677309&lt;br /&gt;
*ARM System-on-Chip Architecture (2000) ISBN 0201675196 [http://books.google.de/books?id=J_Fu_YTVD9gC&amp;amp;printsec=frontcover&amp;amp;output=html&amp;amp;source=gbs_summary_r&amp;amp;cad=0 Im Buch blättern]&lt;br /&gt;
*ARM Architecture Reference Manual ISBN 0201737191 [http://books.google.de/books?id=O5G-6WX1xWsC&amp;amp;printsec=frontcover&amp;amp;output=html&amp;amp;source=gbs_summary_r&amp;amp;cad=0 Im Buch blättern]&lt;br /&gt;
*Messen, Steuern und Regeln mit ARM-Mikrocontrollern ISBN 3772340172 [http://books.google.de/books?id=TKs4kN-zNYQC&amp;amp;output=html im Buch blättern]&lt;br /&gt;
*Programming Arm Microcontrollers: Using C and the Lpc2100 Family (2005? /ab 1. Dezember 2008) ISBN 0321263359&lt;br /&gt;
*Arm Assembly: Fundamentals and Techniques (ab 1. März 2009) ISBN 1439806101&lt;br /&gt;
*Reliable Embedded Systems: Using 8051 and ARM Microcontrollers (2007) ISBN 0321252918 600 Seiten mit CD [http://vig.pearsoned.co.uk/catalog/academic/product/0,1144,0321252918-TOC,00.html Inhaltsverzeichnis]&lt;br /&gt;
* C und C++ für Embedded Systems (u.a. ARM Cortex-M3) mitp-Verlag 2008 ISBN 382665949X&lt;br /&gt;
* The Definitive Guide to the Arm Cortex-M0 (Joseph Yiu) Newnes Verlag ISBN 0123854776&lt;br /&gt;
* The Definitive Guide to the Arm Cortex-M3 (Joseph Yiu) Newnes Verlag ISBN 185617963X&lt;br /&gt;
&lt;br /&gt;
== Artikel aus der Kategorie ARM ==&lt;br /&gt;
&amp;lt;ncl style=compact maxdepth=2 headings=bullet headstart=2&lt;br /&gt;
      showcats=1 showarts=1&amp;gt;ARM&amp;lt;/ncl&amp;gt;&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/EFM32 &#039;&#039;&#039;EFM32&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/XMCxxxx &#039;&#039;&#039;Infineon XMCxxxx&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
* [https://www.mikrocontroller.net/articles/Cortex-A ARM Cortex A]&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM| ]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=XMC4500&amp;diff=81282</id>
		<title>XMC4500</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=XMC4500&amp;diff=81282"/>
		<updated>2014-02-03T16:37:21Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Bezugsquellen und Kosten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Wettbewerb Header}}&lt;br /&gt;
Die Controller XMC4500 von Infineon basieren auf einem [http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php ARM Cortex M4] Kern und verfügt über eine große Auswahl an On-Chip Perepherie.  Die Controller laufen entweder auf einem internen Systemtakt oder auf einer von einer PLL generierten Frequenz, normalerweise 120MHz. In diesem Artikel soll dieser Controllertyp mit Hilfe des &amp;quot;XMC4500 Relaxed Kit/ Lite Kit&amp;quot;, welches beide Developmentboards von Infineon sind, vorgestellt werden. Auch die von Infineon dazu angebotene Entwicklungsumgebung DAVE3 wird kurz vorgestellt. &lt;br /&gt;
= Technische Daten im Überblick =&lt;br /&gt;
[[Bild:Relaxed (Lite) Kit.JPG|thumb|rechts|500px|&amp;quot;Relaxed Kit&amp;quot; (oben) und &amp;quot;Relaxed Lite Kit&amp;quot; (unten)]]&lt;br /&gt;
Ein kurzer Überblick über die On-Chip Pherepherie mit den wichtigsten Merkmalen&lt;br /&gt;
*3.3V Operating Voltage &lt;br /&gt;
*32-Bit Architektur ARM Cortex M4 CPU&lt;br /&gt;
*FPU&lt;br /&gt;
*120MHz Systemtakt&lt;br /&gt;
*512kB-1024kB Flashmemory, je nach Typ&lt;br /&gt;
**Auf den &amp;quot;XMC4500 Relaxed (Lite) Kits&amp;quot; ist die Variante mit 1MB Flash verbaut.&lt;br /&gt;
*128kB oder 160kB RAM&lt;br /&gt;
**Auf den &amp;quot;XMC4500 Relaxed (Lite) Kits&amp;quot; ist die Variante mit 160KB RAM verbaut.&lt;br /&gt;
*Maximal 1GB RAM über natives externes RAM-Interface adressierbar &lt;br /&gt;
*Zwei Programmstacks &lt;br /&gt;
**Verwendung umschaltbar, Verwendung eines OS einfacher.&lt;br /&gt;
*JTAG&lt;br /&gt;
*Interrupt-Level Controller mit 64 Leveln&lt;br /&gt;
*Interne RTC&lt;br /&gt;
*Ethernet MAC On-Chip&lt;br /&gt;
**PHY nicht integriert, Anbindung über RMII-Interface&lt;br /&gt;
**Der komplette Frame wird von der Hardware generiert&lt;br /&gt;
*USB2.0, sowohl als Host, als auch als Slave&lt;br /&gt;
*5 USIC: Universeller Serieller Interface Kanal für SPI, I²C,UART, etc.&lt;br /&gt;
**Einstellbare Framelänge von bis zu 64-Bit&lt;br /&gt;
**Flexibles CRC-Modul, Prüfsummen können von der Hardware generiert werden&lt;br /&gt;
*multiCAN On-Chip&lt;br /&gt;
**11-Bit oder 29-Bit Objekt Indentifier &lt;br /&gt;
**maximal 64 Objekt Indentifier definierbar&lt;br /&gt;
**3 eigenständige CAN Module &lt;br /&gt;
*SD/MMC-Card Interface mit internem 512Byte FIFO&lt;br /&gt;
**4-Bit Interface&lt;br /&gt;
*Bis zu 12 DMA Kanäle&lt;br /&gt;
*4 12-Bit 8 Kanal ADCs  &lt;br /&gt;
**OVP durch Komperatoren an den Eingängen&lt;br /&gt;
**Programmierbarer Gain&lt;br /&gt;
**Verbindung mit dem DMA möglich &lt;br /&gt;
*12-Bit DAC mit FIFO&lt;br /&gt;
*Delta-Sigma Demodulator&lt;br /&gt;
*2 Timer-Module mit jeweils 4 Modulen mit jeweils 4 Timern &lt;br /&gt;
**Intsgesamt 32 Timer&lt;br /&gt;
**Diverse verschiedene Modi, unter anderem Compare-und Capture Mode, kopplung an externe Signale möglich&lt;br /&gt;
**Bis zu 64-Bit PWM (HRPWM)&lt;br /&gt;
**Eigener Prescaller für jeden Kanal &lt;br /&gt;
**Deadtime Modus für Brückensteuerungen &lt;br /&gt;
*POSIF: Position Interface Unit für Drehencoder&lt;br /&gt;
**Kopplung an Timer-Module möglich&lt;br /&gt;
*GPIOs mit anpassbarem Schaltverhalten, bzw Flankencharakteristik&lt;br /&gt;
**Push-Pull oder Open Collector&lt;br /&gt;
**Pull Up oder Pull Down Widerstand zuschaltbar&lt;br /&gt;
**Tri-State Modus&lt;br /&gt;
Dies sind die wesentlichen Merkmale des XMC4500 Controllertypes, weiter sollen diese hier nicht aufgelistet werden, da allein das für einen ausführlichen Artikel reicht. Das [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] hat nicht ohne Grund über 2000 Seiten. Zudem gibt es eine zusätzliche [http://www.infineon.com/dgdl/xmc4500_ds_v1+0_2013_01.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a304335b504400135bdca7ed86742 Dokumentation] über die allgemeinen Eigenschaften der XMC4500 Controllerserie und die unterschiedlichen Varianten.&lt;br /&gt;
&lt;br /&gt;
= Das XMC4500 Relaxed Kit/Relaxed Lite Kit =&lt;br /&gt;
==Allgemeines==&lt;br /&gt;
[[Bild:Wichtige Elemente XMC4500.JPG|thumb|rechts|250px|Die wesentlichen Elemtente auf dem XMC4500 &amp;quot;Relaxed (Lite) Kit&amp;quot;]]&lt;br /&gt;
Beide Boards verfügen über zwei rote Low-Current LEDs, zwei Taster und einen RESET-Button. Zudem kann über Micro-USB eine Verbindung zum PC aufgebaut werden, die dafür notwendige Hardware ist auf beiden Boards vorhanden. Praktischerweise kann das jeweilige Board über den USB-Port mit Strom versorgt werden, dafür befindet sich auf dem Abschnitt des Programmers/Debuggers ein LDO, der die 3.3V für die Controller bereitstellt. &lt;br /&gt;
Der sich auf der linken Seite befindliche Debugger/Programmer kann, wenn wenig Platz zur Verfügung steht, auch von der restlichen Platine getrennt werden, dafür ist eine Sollbruchstelle vorgesehen. Über einen 2*5 poligen Header kann die Verbindung zum Programmieren oder Debuggen wiederhergestellt werden. &lt;br /&gt;
&lt;br /&gt;
Das Abtrennen empfiehlt sich jedoch nicht, da sonst auch der LDO mit abgetrennt wird und das Board dann extern mit 3.3V versorgt werden muss.  &lt;br /&gt;
&lt;br /&gt;
Alle GPIOs sind auf zwei zweireihige Stift-oder Buchsenleisten herrausgeführt, die jedoch selbst bestückt werden müssen. An diesen Headern sind auch die analogen Eingänge zu finden, genau so wie AREF für den DAC/ADC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bezugsquellen und Kosten==&lt;br /&gt;
Die beiden Developmentboadrs sind leider schwer erhältlich, nur wenige der großen Distributoren haben welche auf Lager. Folgende Distributoren haben die Boads zu den normalen Preisen von etwa 10€+MwSt. für das &amp;quot;Relaxed Lite Kit&amp;quot; und etwa 30€+MwSt. für das &amp;quot;Relaxed Kit&amp;quot; bei diesen Distributoren:&lt;br /&gt;
*Mouser: [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_V1/?qs=sGAEpiMZZMsPA1KxyASVZLKMJHcHfbVb &amp;quot;Relaxed Kit&amp;quot;] [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_LITE_V1/?qs=sGAEpiMZZMsPA1KxyASVZDJJB6HCuCyi &amp;quot;Relaxed Lite Kit&amp;quot;] &#039;&#039;Stand 3/2013&#039;&#039;&lt;br /&gt;
*myAVR: [http://shop.myavr.de/ARM-Produktlinie/XMC4500%20Relax%20Lite%20Kit.htm?sp=article.sp.php&amp;amp;artID=200120 &amp;quot;Relaxed Lite Kit&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
Hat man die Möglichkeit, als Firma und/oder mit Gewerbeschein zu bestellen, so kann man bei dem von Infieon vorgeschlagenen Distributor hitex bestellen: &amp;lt;br&amp;gt;&lt;br /&gt;
*[http://www.ehitex.de/cortex-development/xmc4000/448/xmc4500-relax-kit &amp;quot;Relaxed Kit&amp;quot;][http://www.ehitex.de/cortex-development/xmc4000/447/xmc4500-relax-lite-kit &amp;quot;Relaxed Lite Kit&amp;quot;]&lt;br /&gt;
Aus urheberrechtlichen Gründen können die Schaltpläne und das Layout hier nur verlinkt werden:&lt;br /&gt;
*[http://www.infineon.com/dgdl/Board_Users_Manual_XMC4500_Relax_Kit-V1_R1.1_released.pdf?folderId=db3a3043133ffd30011343fd894b018d&amp;amp;fileId=db3a30433acf32c9013adf6b97b112f9 User&#039;s Manual]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://www.infineon.com/dgdl/PCB_Sources_Eagle_XMC4500_Relax_V1.zip?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433afc7e3e013afe95a5a40e7a PCB-Dateien im eagle-Format]&lt;br /&gt;
&lt;br /&gt;
== Unterschiede zwischen dem &amp;quot;Relaxed Kit&amp;quot; und dem &amp;quot;Relaxed Lite Kit&amp;quot; ==&lt;br /&gt;
Die Unterschiede zwischen dem &amp;quot;Relaxed Kit&amp;quot; und dem &amp;quot;Relaxed Lite Kit&amp;quot; kurz zusammen gefasst:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;| Unterschiede zwischen dem &amp;quot;Relaxed Kit&amp;quot; und dem &amp;quot;Relaxed Lite Kit&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#e8e8ff&amp;quot;&lt;br /&gt;
! Hardware || &amp;quot;Relaxed Kit&amp;quot; || &amp;quot;Relaxed Lite Kit&amp;quot; || Nachbestückbar?&lt;br /&gt;
|-&lt;br /&gt;
|Ethernet ||align=&amp;quot;center&amp;quot;|Ja ||align=&amp;quot;center&amp;quot;| Nein ||Schwer bis unmöglich, da der Ethernetcontroller im QFN24 Gehäuse verbaut ist.&lt;br /&gt;
|-&lt;br /&gt;
|Micro-SD|| align=&amp;quot;center&amp;quot;| Ja||align=&amp;quot;center&amp;quot;|Nein ||Gut möglich, jedoch müssen Bauteile in Baugröße 0603 und 0402 verlötet werden.&lt;br /&gt;
|-&lt;br /&gt;
|RTC-Quarz||align=&amp;quot;center&amp;quot;| Ja ||align=&amp;quot;center&amp;quot;|Nein ||Der Quarz ist leicht zu verlöten, es müssen jedoch zwei 0402 Kondensatoren verlötet werden.&lt;br /&gt;
|-&lt;br /&gt;
|32-Mbit SPI-Flash||align=&amp;quot;center&amp;quot;|Ja ||align=&amp;quot;center&amp;quot;| Nein|| Der Flash selber ist bei Farnell erhältlich und ist leicht zu verlöten, da SOIC8 Gehäuse, jedoch sind auch 0402 und 0603 Bauteile zu verlöten.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Nachbestückung==&lt;br /&gt;
Wenn man gerne das native SD-Card Interface oder die RTC nutzen will, aber für das Ethernet überhaupt keine Verwendung hat, so sind mehr als 30€ für ein vollbestücktes &amp;quot;Relaxed Kit&amp;quot; ziemlich viel, da die Bauteile für das was verwenden will nur etwa 5€ kosten.&lt;br /&gt;
Selbiges gilt für den 32Mbit SPI-Flash. Mit etwas Lötgeschick ist es ohne weiteres möglich ein &amp;quot;Relaxed Lite Kit&amp;quot; aufzurüsten. Die dafür notwendigen Bauteile beschränken sich im wesentlichen auf Standardbauteile:&lt;br /&gt;
*micro-SD Card: [[Bild:MicroSD-SPI-Flash.jpg|thumb|300px|rechts|Der alternative SD-Card Halter und der SPI-Flash sind nachbestückt worden.]]&lt;br /&gt;
**microSD Halter: Der originale Molex-Halter, welcher auf dem Board vorgesehen ist, ist entweder nicht erhältlich oder kostet 6€+MwSt. Ein anderer Halter von Digikey passt fast genau so gut und kostet weniger als die Hälfte: [http://www.digikey.de/product-detail/de/5040771891/WM9315CT-ND/3635129 Alternativer Slot], siehe Bild.&lt;br /&gt;
**Hühnerfutter: Des weiteren werden für die SD-Card noch 5 0402 10K Widerstände benötigt. Diese liegen alle sehr nah nebeneinander und sind deshalb etwas frickelig zu löten.&lt;br /&gt;
*RTC-Quarz:&lt;br /&gt;
**Der Quarz ist bei Digikey erhältlich, allerdings nicht immer auf Lager: [http://www.digikey.de/product-detail/de/MC-306%2032.768K-E3:ROHS/SER2417CT-ND/1532560 Quarz]&lt;br /&gt;
**Die üblichen Anschwingkondensatoren sind auch hier vorhanden, zwei 0402 15pF Kondensatoren.&lt;br /&gt;
*SPI-Flash:&lt;br /&gt;
**Der Flash ist unter anderem bei Farnell erhältlich:[http://de.farnell.com/jsp/displayProduct.jsp?sku=1972442&amp;amp;action=view&amp;amp;CMP=GRHB-FINDCHIPS1-1006506 SPI-Flash]. Dabei handelt es sich um einen NOR-Flash von Spansion &amp;quot;S25FL032P0XMFI011&amp;quot;. [http://www.spansion.com/Support/Datasheets/S25FL032P_00.pdf Datenblatt]&lt;br /&gt;
**Dazu kommt das übliche Hühnerfutter, in diesem Fall ein 0402 100nF Kondensator und 3 0402 10K Widerstände.&lt;br /&gt;
&lt;br /&gt;
Diese drei Funktionsgruppen sind mit wenig Aufwand nachträglich bestückbar, was für die Ethernet-Baugruppe leider nicht gilt. Verfügt man über professionels Equipment und lässt sich von Würth eine Ethernetbuchse schenken, so ist eine Nachbestückung möglich. Der Vollständigkeit halber wird diese Baugruppe trotzdem behandelt. &lt;br /&gt;
*Bauteile:[[Bild:Gehäusevergleich QFN24 und 0402.JPG|thumb|400px|rechts| Gehäusevergleich ziwschen dem QFN24 Gehäuse des Ethernetkontrollers und einem normalen 0402 Gehäuse]] &lt;br /&gt;
**Ethernetcontroller: [http://www.micrel.com/_PDF/Ethernet/datasheets/ksz8021rnl_8031rnl.pdf KSZ8031RNL] von Mircel, erhältlich bei allen großen Distributoren, aber sehr schwer zu verlöten, da 0.5mm Pin-Pitch (QFN24).&lt;br /&gt;
**Ethernetbuchse: [http://katalog.we-online.de/pbs/datasheet/7499010211A.pdf Würth 7499010211A], nicht käuflich oder nur sehr schwer erwerbbar. Jedoch scheint Würth auf Sampleanfragen sehr kullant zu sein, sofern man ehrlich schreibt, wofür man die Bauteile benötigt.&lt;br /&gt;
**Quarz: 25MHz Quarz, es passt zum Beispiel der [http://www.reichelt.de/index.html?ACTION=3;ARTICLE=101043;SEARCH=25,000000-MT Quarz von Reichelt]&lt;br /&gt;
**Widerstände: &lt;br /&gt;
***2* 0603 120 Ohm  (R201,R207)&lt;br /&gt;
***2* 0402 1K  (R200, R203)&lt;br /&gt;
***1* 0603 6,49K (R&amp;lt;sub&amp;gt;BIAS&amp;lt;/sub&amp;gt;=R204)&lt;br /&gt;
**Kondensatoren: &lt;br /&gt;
***5  0402 100nF (C201,C203,C205,C208,C209)&lt;br /&gt;
***2  0402 22pF  (C206,C207)&lt;br /&gt;
***3  0805 22µF/10V (C200,C202,C204)&lt;br /&gt;
***1  0805 10µF/10V (C210)&lt;br /&gt;
**Sonstiges:&lt;br /&gt;
***2  BLM18PG600 (L200,L201)&lt;br /&gt;
***2  BAT54-02V  (D200,D201)&lt;br /&gt;
An die Standardbauteile werden keine speziellen Anforderungen gestellt, lediglich R204 sollte eine möglichst kleine Toleranz haben (&amp;lt;=1%).&lt;br /&gt;
&lt;br /&gt;
= DAVE3 =&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
[http://www.infineon.com/cms/en/product/microcontrollers/32-bit-xmc4000-industrial-microcontrollers-arm%EF%BF%BDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD-cortex!22-m4/xmc4000-development-tools,-software-and-kits/dave!22-3-%2013-auto-code-generation-and-free-tools/channel.html?channel=db3a30433580b3710135afc117a9563f DAVE3] ist die von Infineon bereitgestellte IDE unter anderem für die XMC4500 Controller und basiert auf Eclipse. Neben den Standardfunktionen bietet DAVE3 auch die Verwendung von so genannten Apps an. Grob gesagt handelt sich dabei um visuell konfigurierbare Codegeneratoren, mit denen schnell und effizient die Hardware des XMC4500 konfiguriert werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
Die IDE kann auf der Seite von Infineon [http://www.infineon.com/cms/en/product/promopages/aim-mc/DAVE_3_Download.html herruntergeladen] werden, zudem gibt es ein [http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Video] von Infineon über die Installation, die Erklärungen fallen jedoch recht dürftig aus. Die Größe des Installerpaktes beträgt in etwa 246MB.&lt;br /&gt;
&lt;br /&gt;
== DAVE Apps==&lt;br /&gt;
[[Bild:DAVE-APP Screenshot.JPG|thumb|rechts|200px|Die UART02-App, alle Einstellungen können in diesem Fenster gemacht werden.]]&lt;br /&gt;
Die sogenannten Apps sind ein wesentliches Merkmal der DAVE 3 IDE. Die Apps ermöglchen es dem Bediener, Teile der Hardware oder komplette Funktionen graphisch und nach Parametern zu konfgurieren. Der dazu gehörige Code wird dann automatich generiert, zudem erfolgt eine Prüfung, ob mehr Hardwaremodule beansprucht werden, als wirklich vorhanden sind. Der wesentliche Vorteil dieser Programmierung ist, dass sie sehr schnell und effizient ist, da die Apps im wesentlichen gut dokumentiert und das Konfigurationsmenü übersichtlich und intuitiv ist. &amp;lt;br&amp;gt;&lt;br /&gt;
Eigene Apps können anscheinend nicht erstellt werden. Dies ist aber auch nicht unbedingt notwendig, da das Angebot von Apps sowohl im Bereich der Hardwarekonfiguration, zum Beispiel für die GPIOs, als auch im Bereich von fertigen Softwarelösungen, zum Beispiel für einen Webserver oder einen BLDC-Motorcontroller, gut ausgebaut ist.&lt;br /&gt;
Auf Beispiele wird in diesem Artikel verzichtet, da das Quickstart-Tutorial von Infineon bereits alle Fragen klärt und Ansätze bietet.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ein Quick-Start-Tutorial für die Verwendung gibt es von Infineon [http://www.infineon.com/dgdl?folderId=db3a3043134dde6001134ef5f8ff0281&amp;amp;fileId=db3a304336797ff901367daea1a847d0 hier].&lt;br /&gt;
&lt;br /&gt;
== Programmieren und Debuggen des &amp;quot;XMC4500 Relaxed (Lite) Kit&amp;quot;==&lt;br /&gt;
Der On-Board Programmer und Debugger bietet für den Schnellstart und für die ersten Anwendungen alle notwendigen Funktionen, wie das Setzen von Breakpoints und das Beobachten der Variablen und Register während das Programm auf dem Controller ausgeführt wird. Auch bietet der Debugger alle normalen [[JTAG]]-Funktionen, wie das zeilenweise Ausführen des Codes oder den Code bis zu einer bestimmten Stelle auszuführen und dann zu stoppen, etc..&amp;lt;br&amp;gt;&lt;br /&gt;
Programmiert wird der Controller über [[JTAG]].&lt;br /&gt;
;&amp;lt;u&amp;gt;Nachteile des On-Board Programmers und Debuggers&amp;lt;/u&amp;gt;&lt;br /&gt;
Die Upload-Rate zum Controller ist gering, was bei kleineren Programmen noch nicht so tragisch ist, aber bei größeren Quellcodes wird dies schon zu einer suboptimalen Situation. Hier empfiehlt sich dann der Kauf eines besseren [[JTAG]]-Programmers/Debuggers. Da die DAVE 3 IDE den J-Link Treiber für die Programmierung verwendet, sollte eine große Bandbreite an möglichen Geräten zur Verfügung stehen. Der Debugger muss dann nur im Konfigurationsmenü passend eingestellt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;Für den On-Board-Debugger wird das [http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 hier] ab Minute 5.50 beschrieben. Ähnlich wird dies bei anderen Geräten ablaufen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedene Schaltverhalten ==&lt;br /&gt;
In diesem Abschnitt sollen die verschiedenen Flanken und Treiber noch einmal thematisiert werden. Dafür wurden die jeweiligen Flanken mittels eines Oszilloskopes vermessen. Es wurde eine Single-Shot Messung durchgeführt.&amp;lt;br&amp;gt; &lt;br /&gt;
;&amp;lt;u&amp;gt;Messaufbau&amp;lt;/u&amp;gt;&lt;br /&gt;
*PORT1.3 direkt ans Oszilloskop angeschlossen&lt;br /&gt;
**Pad Klasse A2&lt;br /&gt;
*Single Shot &lt;br /&gt;
Die Ergebnisse:&lt;br /&gt;
&amp;lt;gallery perrow=&amp;quot;5&amp;quot; class=&amp;quot;float-left&amp;quot;&amp;gt;&lt;br /&gt;
Weak Driver|[[Bild:Weak Driver.JPG|200px]]&lt;br /&gt;
Medium Driver|[[Bild:Medium Driver.JPG|200px]]&lt;br /&gt;
Strong Driver Soft Edge|[[Bild:Strong Driver Soft edge.JPG|200px]]&lt;br /&gt;
Strong Driver Medium Edge|[[Bild:Strong Driver Medium Edge.JPG|200px]]&lt;br /&gt;
Strong Driver Sharp Edge|[[Bild:Strong Driver Sharp Edge.jpg|Strong Driver Sharp Edge|200px]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Da die Bilder nicht optimal sind, habe ich die dazu gehörigen .WFM-Datein mit hochgeladen:&lt;br /&gt;
[[Datei:Schaltverhalten Messungen.zip| Messdaten]]&lt;br /&gt;
&lt;br /&gt;
Erstellt wurden die Bilder mit [http://www.downv.com/Windows/install-WFM-Viewer-10554073.htm WFM Viewer]&lt;br /&gt;
&lt;br /&gt;
= Weblinks und Quellenverzeichnis =&lt;br /&gt;
*[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt der XMC4500 Controllerfamilie]&lt;br /&gt;
*[http://www.infineon.com/dgdl/xmc4500_ds_v1+0_2013_01.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a304335b504400135bdca7ed86742 Elektrische Daten und Zusammenfassung]&lt;br /&gt;
*[http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php Dokumentation über den Cortex M4 Kern]&lt;br /&gt;
*[http://www.infineon.com/xmc-dev Seite von Infineon über das XMC4500 &amp;quot;Relaxed (Lite) Kit&amp;quot;]&lt;br /&gt;
*Videos von Infineon über das XMC4500 &amp;quot;Relaxed (Lite) Kit&amp;quot; &lt;br /&gt;
**[http://www.movingimage24.com/video_369286?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Beschreibung des Webservers]&lt;br /&gt;
**[http://www.movingimage24.com/video_369288?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Getting startet mit dem XMC4500 &amp;quot;Relaxed (Lite) Kit&amp;quot;] &lt;br /&gt;
**[http://www.movingimage24.com/video_369290?width=640&amp;amp;height=395&amp;amp;player=35&amp;amp;scwm=2&amp;amp;chapter=0&amp;amp;overlays=1&amp;amp;cbarPlayPauseFlag=1&amp;amp;cbarTrackFlag=1&amp;amp;cbarTimeTotalFlag=1&amp;amp;cbarTimeDurationFlag=1&amp;amp;cbarvolumeBarFlag=1&amp;amp;cbarFullScreenFlag=1&amp;amp;qs=1&amp;amp;adbtn=1&amp;amp;adbtn1=1&amp;amp;adbtn5=1&amp;amp;bg=c1d2e2&amp;amp;fg=336699&amp;amp;ctcb1=336699&amp;amp;ctcb2=e10030&amp;amp;ctcb3=7c7c7c&amp;amp;ctcb4=c1d2e2&amp;amp;ctcb7=dae5e3&amp;amp;ctab1=000000&amp;amp;ctab2=ffffff&amp;amp;ctab3=abbbd0&amp;amp;wvm=3&amp;amp;start=0&amp;amp;volume=100&amp;amp;loadtime=0&amp;amp;wmode=transparent&amp;amp;fupdate=1&amp;amp;cwm=0&amp;amp;ctp=0&amp;amp;stillimg=0&amp;amp;plang=default&amp;amp;qd=3 Noch mehr zum Webserver].&lt;br /&gt;
Es gibt ein Forum von Infineon, wo sowohl die IDEs von Infineon diskutiert werden, als auch die Controller: &lt;br /&gt;
*[http://www.infineonforums.com/ Forum]&lt;br /&gt;
&amp;lt;b&amp;gt; Alle Bilder in diese, Artikel sind selbst gemacht und können beliebig für andere Dokumentationen oder Projektbeschreibungen genutzt werden.&amp;lt;/b&amp;gt;&lt;br /&gt;
==Zugehörige Artikel oder Treads ==&lt;br /&gt;
*[[XMCxxxx]]&lt;br /&gt;
*[[Einstieg in die ARM Entwicklung]]&lt;br /&gt;
*[http://www.mikrocontroller.net/articles/Kategorie:Daten%C3%BCbertragung Datenübertragung]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:ARM]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=80181</id>
		<title>STM32</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=80181"/>
		<updated>2013-12-27T11:19:37Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Weblinks, Foren, Communities, Tutorials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STM32 ist ein Mikrocontroller-Familie von [http://www.st.com/mcu/inchtml-pages-stm32.html ST] mit einer 32-Bit [http://www.arm.com/products/processors/cortex-m/index.php ARM Cortex-M0/M3/M4] CPU. Diese Architektur ist speziell für den Einsatz in Microcontrollern neu entwickelt und löst damit die bisherigen ARM7-basierten Controller weitestgehend ab. Den STM32 gibt es von ST in unzähligen Varianten mit variabler Peripherie und verschiedenen Gehäusegrößen und -formen. Durch die geringe Chipfläche des Cores ist es ST möglich, eine 32 Bit-CPU für weniger als 1&amp;amp;nbsp;€ anzubieten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:stm32F103xc.png|thumb|right|340px|Blockdiagramm STM32F103xC/D/E]]&lt;br /&gt;
&lt;br /&gt;
== STM32-Familien ==&lt;br /&gt;
&lt;br /&gt;
Bisher gibt es sieben STM32-Familien:&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1588.jsp STM32F0]&lt;br /&gt;
** Cortex M0&lt;br /&gt;
** Mikrocontroller zum Einstieg&lt;br /&gt;
** Bis 48MHz&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1169.jsp STM32F1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 72MHz&lt;br /&gt;
**Verschiedene Unterfamilien:&lt;br /&gt;
*** Connectivity line&lt;br /&gt;
*** Performance line&lt;br /&gt;
*** USB Access line&lt;br /&gt;
*** Access Line&lt;br /&gt;
*** Value line&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1575 STM32F2]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 120MHz&lt;br /&gt;
** Wie die STM32F1 Serie, Camera-Interface, 32-Bit Timer, Crypto-Engine...&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 72MHz&lt;br /&gt;
** Fast 12-bit 5 MSPS and precise 16-bit sigma-delta ADCs&lt;br /&gt;
** Touch sensing controller (TSC)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp STM32F4]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 180MHz&lt;br /&gt;
** Bis zu 2MB Flash&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295 STM32L1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Low Power &lt;br /&gt;
** mit LCD Treiber&lt;br /&gt;
** Bis 32MHz&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1581 STM32W]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** BIS 24MHz&lt;br /&gt;
** RF-MCU &lt;br /&gt;
[http://www.st.com/internet/mcu/class/1734.jsp Hier eine Übersicht zum Auswählen eines STM32Fxxx]&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
* Cortex-M0 / Cortex-M3 / Cortex-M4F Kern (mit FPU)&lt;br /&gt;
* 16KB ... 2MB  [[Flash-ROM]]&lt;br /&gt;
*  4KB ... 256KB [[Speicher#SRAM|SRAM]]&lt;br /&gt;
* 4KB [[Speicher#EEPROM|EEPROM]] (STM32L)&lt;br /&gt;
* SDRAM-Controller bei den [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1577/LN1806 STM32F42xxx und STM32F43xxx], bis 512 MByte externer SDRAM addressierbar&lt;br /&gt;
* 512 one-time programmable Bytes(STM32F2/4)&lt;br /&gt;
* [[IC-Gehäuseformen | Gehäuse]] 36 ... 216 Pins als QFN, LQFP und BGA&lt;br /&gt;
* Derzeit sind über &#039;&#039;&#039;250&#039;&#039;&#039; STM32 Derivate/Varianten verfügbar&lt;br /&gt;
* Bis 72MHz CPU-Takt, bis 120MHz beim STM32F2xx, bis 168/180 MHz beim STM32F4xx, wobei eine spezielle prefetch-hardware bis 120/168 MHz eine Geschwindigkeit erzielen soll, die 0 Wait-States entspricht. Der CPU-Takt wird über einen Multiplikator aus dem internen RC-Takt oder einem externen Quarz-Takt abgeleitet.&lt;br /&gt;
* Externes Businterface (nur bei Gehäusen ab 100 Pin und nur bei STM32F4, STM32F2 und STM32F1 Performance line)&lt;br /&gt;
* LCD Treiber für 8x40 Punkte (nicht beim STM32F2xx)&lt;br /&gt;
* TFT Treiber bei STM32F429 / STM32F439&lt;br /&gt;
* Spannungsbereich 1,65 ... 3,6V, nur eine Betriebsspannung nötig&lt;br /&gt;
* Temperaturbereich bis 125 °C&lt;br /&gt;
* Bis zu 140 IOs, viele davon [[Pegelwandler|5V-tolerant]]&lt;br /&gt;
* Interner, kalibrierter RC-Oszillator mit 8MHz (16MHz bei STM32F2/F4xx)&lt;br /&gt;
* Externer Quarz&lt;br /&gt;
* Real Time Clock mit eigenem Quarz und separater Stromversorgung&lt;br /&gt;
* Bis zu 16 [[Timer]], je Timer bis zu 4 IC/OC/PWM Ausgänge. Davon 2x Motion Control Timer (bei STM32F103xF/G)&lt;br /&gt;
* Systick Counter&lt;br /&gt;
* Bis zu 3 12-Bit [[AD-Wandler]] mit insgesamt 24 AD-Eingängen, integrierter [[Temperatursensor]], Referenzspannung Vrefint und VBatt Spannungsmessung (STM32F4xx)&lt;br /&gt;
* Bis zu 2 12-Bit [[DA-Wandler]] (bis zu 3 beim STM32F3xx)&lt;br /&gt;
* Bis zu 2 [[DMA]] Controller mit bis zu 12 Kanälen (16 beim STM32F2/4xx)&lt;br /&gt;
* Bis zu 2x [[I2C|I²C]]&lt;br /&gt;
* Bis zu 5x [[UART|USART]] mit LIN, IrDA und Modem Control (bis zu 8 beim STM32F2/F4xx)&lt;br /&gt;
* Bis zu 3x [[SPI]] (bis zu 6 beim STM32F4xx)&lt;br /&gt;
* Bis zu 2x [[I2S|I²S]]&lt;br /&gt;
* Bis zu 2x [[CAN#STMicroelectronics STM32 (Cortex M3/M4)|CAN]]&lt;br /&gt;
* Hardware [[CRC]] Unit, bei der STM32F3xx Serie mit einem einstellbaren Polynom &lt;br /&gt;
* Unique device ID register (96 Bits)&lt;br /&gt;
* RNG - Random Number Generator (STM32F2/4xx)&lt;br /&gt;
* Cryptographic Processor (CRYP) (STM32F2/4xx)&lt;br /&gt;
* Hash Processor (HASH) (STM32F2/4xx)&lt;br /&gt;
* Kamera-Interface (DCMI) (STM32F2/4xx)&lt;br /&gt;
* [[USB]] 2.0 Full Speed / OTG&lt;br /&gt;
* [[USB]] 2.0 Hi Speed OTG mit extra PHY-Chip (STM32F2/4xx)&lt;br /&gt;
* SDIO Interface (z.B. SD-Card Reader)&lt;br /&gt;
* Ethernet&lt;br /&gt;
* Watchdog mit Window-Mode&lt;br /&gt;
* Jedes Peripheriemodul ist separat einschaltbar, wodurch sich erheblich [[Ultra low power|Strom sparen]] lässt&lt;br /&gt;
* [[JTAG]] und SWD (Serial Wire Debug) Interface&lt;br /&gt;
* Bis zu 6 Hardware-Breakpoints für Debuggen&lt;br /&gt;
* und vieles mehr . . .&lt;br /&gt;
&lt;br /&gt;
== Struktur der Dokumentation: ==&lt;br /&gt;
Die Dokumentation der STM32 ist zwar umfangreicher und komplexer z.B. die der [[AVR]], enthält aber dennoch alle nötigen Informationen. Sie teilt sich auf in mehrere Dokumente.&lt;br /&gt;
Als Beispiel der Dokumentation soll stellvertretend der [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164486 STM32F103RC] genannt werden. Die Seite von ST beinhaltet alle nötigen Informationen passend zu diesem Prozessor.&lt;br /&gt;
&lt;br /&gt;
Diese Dokumente von ST beschreiben den Controller:&lt;br /&gt;
&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00191185.pdf STM32F103xC/D/E Datasheet] sind die speziellen Eigenschaften einer bestimmten Modellreihe beschrieben und die exakten Daten und Pinouts aufgeführt, sowie die Zuordnung Chipname - Flash/RAM-Größe. Die Peripheriemodule werden nur aufgeführt, nicht detailliert beschrieben.&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf Reference Manual (RM0008)] sind alle Peripheriemodule der jeweiligen STM32-Controllerfamilie im Detail beschrieben.&lt;br /&gt;
* Das [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html ARMv7M Architecture Reference Manual] beschreibt detailliert den Prozessorkern, wie das Exception Model, die CPU Instruktionen inklusive Encoding, etc.&lt;br /&gt;
* Das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00228163.pdf STM32 Cortex-M3 Programming Manual] ist eine Zusammenfassung des ARMv7M Architecture Reference Manual bezogen auf die STM32.&lt;br /&gt;
* Wer nicht die ST Firmware-Library verwendet, der benötigt zusätzlich das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00283419.pdf Flash Programming Manual] für die Betriebsart des Flash-ROMs, d.h. die frequenzabhängige Konfiguration der Waitstates.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten auch die [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00197763.pdf Errata Sheets] beachtet werden. Empfohlen sei auch die Appnote &amp;quot;[http://www.st.com/web/en/resource/technical/document/application_note/CD00164185.pdf AN2586 Getting started with STM32F10xxx hardware development]&amp;quot;.&lt;br /&gt;
Die jeweiligen Dokumentations-PDFs sind auf der Produktseite von ST eines jeden Mikrocontrollers verlinkt.&lt;br /&gt;
&lt;br /&gt;
== Hardware Zugriffs-Libraries ==&lt;br /&gt;
=== CMSIS ===&lt;br /&gt;
&lt;br /&gt;
Die CMSIS (ARM® &#039;&#039;&#039;C&#039;&#039;&#039;ortex™ &#039;&#039;&#039;M&#039;&#039;&#039;icrocontroller &#039;&#039;&#039;S&#039;&#039;&#039;oftware &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;S&#039;&#039;&#039;tandard) ist eine Library von ARM für den Zugriff auf die herstellerübergreifenden Funktionen des ARM-Cores. Hierzu gehört bei den Cortex-M4F-Cores auch die DSP und Floating-Point Funktionalität. Weiterhin existieren eine Zahl von Helferfunktionen für den NVIC, den Sys-Tick-Counter, sowie eine SystemInit-Funktion, welche sich um die PLL kümmert. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen des CMSIS-Standards ([http://www.onARM.com www.onARM.com]) wurden die Headerdateien standardisiert, der Zugriff auf die Register erfolgt per &#039;&#039;&#039;Peripheral-&amp;gt;Register&#039;&#039;&#039;. Die CMSIS C-Dateien bzw. Header enthalten auch Anpassungen für die verschiedenen Compiler. Die Portierung eines Real-Time-Betriebsystems sollte unter Verwendung der CMSIS, für Chips der verschiedenen Hersteller, stark vereinfacht möglich sein (z.B. einheitliche Adressen für Core-Hardware/Sys-Tick-Counter).&lt;br /&gt;
&lt;br /&gt;
Die CMSIS ist im Download der ‎STM32 Standard Peripheral Library enthalten. Die Compiler-Hersteller liefern eine jeweils zur ihrer Tool-Version passende bzw. geprüfte Library (incl. CMSIS) aus. Diese Libs können, gegenüber den Downloads beim Chip-Hersteller, auch ältere Version beinhalten.&lt;br /&gt;
&lt;br /&gt;
=== ‎STM32 Standard Peripheral Library ===&lt;br /&gt;
&lt;br /&gt;
ST bietet für jede Controller-Familie eine umfangreiche zur CMSIS passende Peripherie-Bibliothek. Alle Funktionen um die Peripherie zu benutzen sind gekapselt in einfache Strukturen und Funktionsaufrufe. Somit muss man sich nicht selbst um die Peripherie-Register kümmern. Diese Library und ihre Dokumentation setzen das grundlegende Verständnis der Funktion des jeweiligen Peripheriemoduls voraus, wie es die o.a. Referenz und diverse Appnotes vermitteln. Die Library beinhaltet außerdem für fast jede Peripherie mehrere Beispiele.&lt;br /&gt;
Für die USB Schnittstelle gibt es noch eine extra Library, genauso wie für Ethernet.&lt;br /&gt;
&lt;br /&gt;
Auf der &amp;quot;Design Resources&amp;quot; Seite der Produktseite von ST eines jeden STM32 Mikrocontrollers kann die Library für den jeweiligen Controller heruntergeladen werden, z.B. [http://www.st.com/web/en/catalog/tools/PF257890 hier] für den o.g. STM32F103RC.&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
Zur Programmierung der STM32 gibt es verschiedene Möglichkeiten, sowohl kommerzielle proprietäre als auch mit Freier Software.&lt;br /&gt;
&lt;br /&gt;
Der GCC (in seinen verschiedenen Binärdistributionen) ist der einzige ARM Compiler der [http://de.wikipedia.org/wiki/C%2B%2B11 C++11] unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Freie Software/Freeware ===&lt;br /&gt;
==== Selber zusammenstellen ====&lt;br /&gt;
Man nehme...:&lt;br /&gt;
* Eine Entwicklungsumgebung nach Wahl:&lt;br /&gt;
** [http://www.eclipse.org Eclipse] mit [http://www.eclipse.org/cdt/ C/C++ Development Tooling] und [http://gnuarmeclipse.livius.net/blog/ GNU ARM Plug-in] (Bei Verwendung vom GCC-ARM-Embedded als Toolchain &amp;quot;Sourcery G++ Lite&amp;quot; auswählen, dieser sieht für eclipse gleich aus) (Linux, Windows)&lt;br /&gt;
** [http://netbeans.org/ Netbeans] mit [http://plugins.netbeans.org/plugin/37426/gdbserver GDBserver-Plugin] (Linux, Windows)&lt;br /&gt;
** [http://www.kdevelop.org/ KDevelop] (Linux)&lt;br /&gt;
** [http://www.geany.org/ Geany] (Linux, Windows)&lt;br /&gt;
** Oder ein einfacher Texteditor&lt;br /&gt;
* Einen C,C++ Compiler:&lt;br /&gt;
** Eine der [[ARM_GCC#GCC_Bin.C3.A4rdistributionen|GCC-Binärdistributionen]], siehe auch [[#GCC|GCC]] (je nach Distribution Linux, Windows)&lt;br /&gt;
* Programmiersoftware zum Flashen des Target:&lt;br /&gt;
** [http://openocd.sourceforge.net/ OpenOCD] unterstützt viele Debug/Programmier-Adapter (Linux, Windows)&lt;br /&gt;
** [https://github.com/texane/stlink Texane stlink] funktioniert gut mit den ST-Link Adaptern wie sie zB. auf den STM32 Discovery Boards zu finden sind (Linux)&lt;br /&gt;
** Turtelizer2 oder andere JTAG Programmieradapter&lt;br /&gt;
** Bei Verwendung eines Segger J-Link, den [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf Segger GDB-Server] in Verbindung mit dem beim GCC mitgelieferten GDB (Linux, Windows)&lt;br /&gt;
&lt;br /&gt;
==== Komplette IDE&#039;s ====&lt;br /&gt;
* [http://www.codesourcery.com/sgpp/lite_edition.html Codesourcery Lite Edition]&lt;br /&gt;
* [http://www.coocox.org/ Coocox Eclipse IDE] kostenlose IDE für STM32F0 / F1 / F4 Hilfreiche Infos gibt es im [http://www.mikrocontroller.net/topic/214719?goto=new#2228482 hier] und [http://www.mikrocontroller.net/topic/214719?goto=new#2229943 hier] Forum&lt;br /&gt;
* [http://emide.org/ emIDE] kostenlose IDE die mit dem Segger J-LINK funktioniert.&lt;br /&gt;
* [http://www.emblocks.org EmBlocks] kostenlose IDE, Code::Blocks basiert, unterstützt STM32 L1/F0/F1/F2/F3/F4/W, integrierter GDB Debugger, Jlink/ST-Link, System view (Peripherie Register anzeigen) beim Debuggen, Project Wizzard&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Umgebungen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.keil.com/arm/mdk.asp Keil µVision] (Demo max. 32KB Code): Die sehr komfortable µVison IDE ist neben dem ARM Compiler per Menue auch für einen beliebigen GNU-Compiler konfigurierbar. Damit besteht das 32k-Limit nur noch für den integrierten Debugger / Simulator. µVison selbst kann kostenlos mit dem MDK-Evaluationkit heruntergeladen werden. [https://www.keil.com/arm/demo/eval/arm.htm#DOWNLOAD download]&lt;br /&gt;
* [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR-Embedded-Workbench] (Demo max. 32KB Code) [http://supp.iar.com/Download/SW/?item=EWARM-EVAL download]&lt;br /&gt;
* [http://www.isystem.com/products/itag winIDEAiTag] Keine Code Limitierung, GCC und Testwerkzeug beinhaltet. Läuft mit dem iTag Adapter.&lt;br /&gt;
* [http://www.raisonance.com Raisonance Ride7] (GCC Compiler, kostenlose Version auf Debugging von max. 32KB Code limitiert, keine Limitierung beim Complilieren)&lt;br /&gt;
* [http://www.atollic.com Atollic] (Lite Version (bis V2.3.0) ohne Code-Limit, auf GCC basierend. Die neueste Version ab V3 hat fast keine Beschränkungen mehr außer jetzt einen Code-Limit von 32kB. Außerdem werden jetzt die meisten ARM Familien unterstützt. )&lt;br /&gt;
* [http://www.rowley.co.uk/arm/ Rowley Crossworks] (Demo 30 Tage unbeschränkt, 150$ für nichtkommerzielle Nutzung, auf GCC basierend)&lt;br /&gt;
* [http://www.code-red-tech.com Code Red] (GCC basierend)&lt;br /&gt;
* [http://www.sisy.de/index.php?id=17&amp;amp;no_cache=1 SiSy ARM oder SiSy Micrcontroller++] (Demo verfügbar keine Gößenbegrenzung, basiert auf GNU-Compiler, grafische Programmierung mit UML möglich, integrierter Debugger)&lt;br /&gt;
* [http://www.comsytec.eu/epsdebugger.php EPS Debugger Plugin, für STM32 Development mit Code::Blocks]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials für diverse Tool-Kombinationen ===&lt;br /&gt;
[[STM32 Eclipse Installation|Windows,Linux, Eclipse + Yagarto/CodeSourcery + OpenOCD/ST-Link]]&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
** Eclipse&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/216554 Windows, Eclipse, codesourcery, st-link ]&lt;br /&gt;
*** [http://www.firefly-power.de/ARM/debugging.html Eclipse Plugin &amp;quot;GDB Hardware Debugging&amp;quot; mit OpenOCD]&lt;br /&gt;
** Code::Blocks&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/265600 Windows, Code::Blocks, STM32F4]&lt;br /&gt;
** STM32 mit EmBlocks&lt;br /&gt;
*** [http://www.emblocks.org/web/downloads-main Download EmBlocks]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=coHPJylnzC8 Video STM32 Project Wizzard in EmBlocks]&lt;br /&gt;
** Atollic TrueSTUDIO&lt;br /&gt;
*** [[STM32 LEDBlinken AtollicTrueStudio|Atollic TrueSTUDIO Installation + Demo]]&lt;br /&gt;
** MDK-ARM Lite mit Einstellungen für STM32F0/F4-Discovery Board&lt;br /&gt;
*** [https://www.keil.com/demo/eval/arm.htm KEIL MDK-ARM Download]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=RXOOxby5nns&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;index=1 Installations Video STM32F4 Discovery Board]&lt;br /&gt;
*** [https://www.youtube.com/watch?annotation_id=annotation_203294&amp;amp;feature=iv&amp;amp;index=4&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;src_vid=sN4gDZ7H8gw&amp;amp;v=BeZcQjXxk9A Einstellungen STM32F0 Discovery Board Video]&lt;br /&gt;
** SiSy ARM, STM32&lt;br /&gt;
*** Download: [http://www.sisy.de/index.php?id=59 SiSy DEMO] kein Begrenzung der Codegröße&lt;br /&gt;
*** [http://www.youtube.com/watch?v=84Y3jYLWYpo Videobeispiel]&lt;br /&gt;
* Ubuntu&lt;br /&gt;
** [http://www.seng.de/downloads/HowTo_ToolChain_STM32_Ubuntu.pdf Ubuntu, eclipse, Code Sourcery, OpenOCD] ([http://www.seng.de/downloads/HowTo_ToolChain_STM32_Ubuntu.odt Das Gleiche im bearbeitbaren ODT-Format])&lt;br /&gt;
** [http://fun-tech.se/stm32/index.php Ubuntu, Selbstcompilierter GCC, STM32/Cortex-M3]&lt;br /&gt;
** [http://thetoolchain.com The ToolChain] - Automatisch installierende Entwicklungsumgebung mit eigenen und externen Treibern, Unterstützt QtCreator als IDE, Flexibel erweiterbar über Shellskripte&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/214719 Tipps für Installation mit Eclipse]&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter===&lt;br /&gt;
* [http://www.segger.com/jlink-model-overview.html SEGGER J-LINK / J-TRACE] für u.a. alle ARM7/9/11, Cortex-M0/M1/M3/M4/A5/A8/A9/R4 als [http://www.segger.com/cms/j-link-edu.html NonComercial] J-LINK-EDU für ca. 60,- zu haben, läuft in µVision, IAR, GDB (Linux &amp;amp; Windows über einen eigenen [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf GDB-Server]), Keil, ...&lt;br /&gt;
* Keil [http://www.keil.com/ulinkme/ ULINK-ME], [http://www.keil.com/arm/ulink2/ ULINK2], [http://www.keil.com/arm/ulinkpro/ ULINK pro]&lt;br /&gt;
* [http://www.st.com/internet/evalboard/product/219866.jsp ST-LINK], [http://www.st.com/internet/evalboard/product/251168.jsp ST-LINK/V2]&lt;br /&gt;
* Jedes STM32 Discovery board hat einen ST-Link für Programmierung/Debugging per SWD on-board, welcher auch für eigene STM32 Target Hardware benutzt werden kann (ca. 12,- bis 19,-€, je nach Typ).&lt;br /&gt;
* [http://www.raisonance.com/~rlink-debugger-programmer__microcontrollers__tool~tool__T018:4cn9ziz4bnx6.html Raisonance RLink]&lt;br /&gt;
* [http://www.amontec.com Amontec]&lt;br /&gt;
* [http://www.hjtag.com H-JTAG] Personal Edition für ca. 60,- zu haben, läuft mit ADS, SDT, IAR, Vision und RVDS &lt;br /&gt;
* [http://www.isystem.com/products/itag iTag] für 50.- bei Amazon zu bestellen, oder als Eigenbau version (offenes Design) läuft mit der freien winIDEAiTag version (siehe oben)&lt;br /&gt;
&lt;br /&gt;
In der Regel haben die [[JTAG]] Adapter einen 20-Poligen Stecker, den man direkt auf die Demo-Boards, die auch einen 20-Poligen [[JTAG]]-Anschluss haben, einstecken kann. Die Pinbelegung ist genormt, siehe Artikel [[JTAG]]. Die Discovery-Boards haben keinen seperaten JTAG-Stecker, aber zumindest für das STM32F4 Discovery kann man sich leicht einen Adapter Pinheader-&amp;gt;JTAG Stecker selber bauen.&lt;br /&gt;
&lt;br /&gt;
Andere [[JTAG]] Adapter wie z.B. der ULink von Keil funktionieren nur mit dem Keil Compiler.&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter Open-Source===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ Olimex] ARM-USB-OCD (ca. 60.-, hat zusätzlich einen Spannungsausgen und einen COM Port)&lt;br /&gt;
* [http://www.oocdlink.com/ OOCDLink]&lt;br /&gt;
* [https://github.com/texane/stlink Stlink]&lt;br /&gt;
* [http://www.randomprojects.org/wiki/Floss-JTAG FLOSS-JTAG]&lt;br /&gt;
* [http://capitanio.org/mlink/ Linux Demo Code für die Discovery&#039;s ST-Link Programmierung]&lt;br /&gt;
&lt;br /&gt;
Der Controller hat auch einen fest eingebauten Boot-Lader. Damit läßt er sich auch über eine gewöhnliche serielle Schnittstelle programmieren, ohne dass man einen JTAG-Adapter benötigt. Dies erfordert ggf. entsprechende Konfiguration über die BOOTx-Pins und/oder die Option-Bytes.&lt;br /&gt;
&lt;br /&gt;
=== Demo-Projekte ===&lt;br /&gt;
&lt;br /&gt;
* Einführung in die GPIO Programmierung der STM32F10x und STM32F30x Prozessoren am Beispiel des STM32F3 Discovery Boards und Vergleich zur AVR IO Registerstruktur [http://www.mikrocontroller.net/topic/300472#new]&lt;br /&gt;
* [[prog_bsp_timer_1_timer2|Programmbeispiel für die Verwendung von Timer2 zusammen mit dem Interrupt]]&lt;br /&gt;
* [http://www.firefly-power.de/ARM/printf.html Printf() debugging mit minimalem Aufwand]&lt;br /&gt;
* [[STM32_BLDC_Control_with_HALL_Sensor|Programmbeispiel für BLDC Motoransteuerung (Timer 1) mit HALLSensor (Timer 3)]]&lt;br /&gt;
* [[Cortex_M3_OCM3U]]&lt;br /&gt;
* Martin Thomas hat ein umfangreiches Projekt erstellt, in der die Eclipse Einstellungen enthalten sind:&lt;br /&gt;
** [http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html &amp;quot;ChaN&#039;s FAT-Module with STM32 SPI&amp;quot;]&lt;br /&gt;
* [[STM32 USB-FS-Device Lib]]&lt;br /&gt;
* Modellbau-Sender auf STM32-Basis mit vielen Treibern [http://www.rcos.eu www.rcos.eu]&lt;br /&gt;
* Ausführliches [https://github.com/jkerdels/stm32edu Einstiegs-Tutorial] in Codeform für das [http://www.st.com/internet/evalboard/product/252419.jsp STM32F4 discovery board]&lt;br /&gt;
* [http://www.redacom.ch/keillab/ Schweizer Gondelbahnsteuerung über Webserver auf ETT STM32F ARM KIT Board in Keil RTOS] mit Webcam&lt;br /&gt;
* Die [http://ethernut.svn.sourceforge.net/viewvc/ethernut/trunk/ Ethernut SVN Version] unterstützt inzwischen viele STM32 Typen, viele Devices und einige STM32 Demoboards&lt;br /&gt;
&lt;br /&gt;
== Debug- und Trace-Interface (CoreSight™ Debug and Trace Technologie)==&lt;br /&gt;
&lt;br /&gt;
Übersicht über beide Funktionalitäten und den Schnittstellen:&lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_cs_core_sight.htm&lt;br /&gt;
&lt;br /&gt;
Die Coresight-Debug-Architektur ermöglicht ein nicht-invasives Debugging, d.h. es können während des Betriebes (meistens) ohne Beeinflussung des Prozessors Daten vom Speicher gelesen und in selbigen geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
=== Debugger Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Der Debugger-Teil besitzt drei Funktionen:&lt;br /&gt;
* Run Control: z.B. Programm-Start, Stopp und Einzel-Schritte.&lt;br /&gt;
* (Program) Break Points: Ein Programm hält an, wenn der Programm Counter eine bestimmte Programm-Adresse erreicht.&lt;br /&gt;
** Die maximale Anzahl der gleichzeitig möglichen Break Points ist begrenzt (z.B. 6 bei einem STM32).&lt;br /&gt;
** Die Anzahl der Break Points ist nahezu unbegrenzt, wenn ein Debugger über den Memory Access (s.u.) sogenannte Flash Break Points unterstützt. Dabei wird ein geladenes Programm im Flash umprogrammiert, um den Debugger anzuhalten. Diese Funktionalität ist meistens ein kostenpflichtiges Zusatz-Feature des Debugger-Herstellers. &lt;br /&gt;
** Beinhaltet keine Data Watch Funktionalität, welche im Trace-Teil (DWT) realisiert wird.&lt;br /&gt;
* Memory Access: Lesen und Schreiben von Speicheradressen. &lt;br /&gt;
** Diese Funktionalität beinhaltet keine direkte Flash-Programmierung. Der Programmiervorgang für einen Flash ist herstellerspezifisch und muss von dem verwendeten Debugger unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=== Trace Funktionen ===&lt;br /&gt;
Die Trace-Funktionalität wird in drei Funktionen aufgeteilt:&lt;br /&gt;
* ETM (Embedded Trace Macrocell): Optional, nicht jede CPU besitzt diese Hardware (Kostenfaktor, Austattung).&lt;br /&gt;
* ITM (Instrumentation Trace Macrocell): Über diesen Kanal kann ein vereinfachtes Trace des Core ermöglicht werden, sowie &amp;quot;printf-ähnlich&amp;quot; Daten über den ITM Channel 0 geschickt und im Debugger ausgegeben werden.&lt;br /&gt;
* DWT (Data Watchpoint &amp;amp; Trace Unit): &lt;br /&gt;
** Data Watch: 4 Access-Break-Points ( z.B. der Debugger bleibt stehen, wenn das Programm auf einen Speicher zugreift oder der Wert einer Variablen einen bestimmten Wert annimmt). &lt;br /&gt;
** Trace Unit: Programmverlauf (durch Lesen des Program Counters) und Interrupt Aufrufe verfolgen, sowie Zeitmessungen.&lt;br /&gt;
&lt;br /&gt;
Einige der Trace-Funktionalitäten können über die JTAG-Schnittstelle angesprochen werden. Die schnelle Trace-Funktionalität (mit 4 bit Parallel-Port) steht nur mit der erweiterten DEBUG + ETM Schnittstelle zur Verfügung. Im Gegensatz zum Debugger-Teil (Run Control, Break Points und Memory Access) werden Trace-Funktionen nicht von allen Debuggern unterstützt. Debugger mit der vollen Trace-Funktionalität kosten deutlich mehr.&lt;br /&gt;
&lt;br /&gt;
* Beispiele für Trace-Port-Aktivierungen für verschiedene Hersteller: http://www.keil.com/support/man/docs/jlink/jlink_capture_tracedata.htm&lt;br /&gt;
&lt;br /&gt;
Die Aktivierung des parallelen Trace-Ports erfordert, je nach CPU Hersteller, zusätzliche Debugger-Makros für die Aktivierung und Port-Freischaltung. Zusätzlich sind die Schnittstellenauswahl und Einstellung (Frequenzen) im Entwicklungs-Tool (IDE) wichtig, um erfolgreich den Programm-Verlauf &amp;quot;tracen&amp;quot; zu können.&lt;br /&gt;
&lt;br /&gt;
=== Debug und Trace-Schnittstellen ===&lt;br /&gt;
Als Debug Interface stehen zwei Varianten zur Auswahl:&lt;br /&gt;
* [[JTAG]]: Dafür sind mindestens 6 Steuerleitungen nötig. Unterstützt Device Chaining: Mehrere verbundene Geräte können mit einem Debugger/Programmer gleichzeitig angesteuert werden.&lt;br /&gt;
* SWD (Serial Wire Debug): Hier mindestens 2  Steuerleitungen (3 mit SWO, zzgl GND und 3,3V). Die SWD Schnittstelle ist in der Regel schneller und kann auch Funktionen aus dem Trace-Teil beinhalten (z.B. ITM, dafür wird der SWO-Pin benötigt). Device Chaining ist mit dieser Schnittstelle nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Standard-JTAG Steckerbelegungen: &lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm&lt;br /&gt;
&lt;br /&gt;
=== Der 10polige JTAG-Stecker von mmvisual ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe diesen Part in den Artikel [http://www.mikrocontroller.net/articles/JTAG#Der_10-polige_JTAG_Stecker_von_mmvisual JTAG] verschoben.&lt;br /&gt;
Hinzu gekommen ist die Adapterplatine 10-Polig auf Standard JTAG 20 Polig mit TTL/V24 Wandler. [http://www.mikrocontroller.net/articles/JTAG#Die_Adapterplatine Siehe hier.]&lt;br /&gt;
&lt;br /&gt;
== Hardware-Beschaltung ==&lt;br /&gt;
&lt;br /&gt;
Der STM32 benötigt für den Betrieb nur (Minimalbeschaltung):&lt;br /&gt;
&lt;br /&gt;
* VCC 2..3,3V (je nach Typ)&lt;br /&gt;
* AVCC 2..3,3V (sehr wichtig, der STM32 lässt sich ohne diese Spannung nicht programmieren)&lt;br /&gt;
* GND&lt;br /&gt;
* Reset Pin 100nF nach GND (ein Pull-Up Widerstand von ca. 40k ist intern vorhanden)&lt;br /&gt;
* [[#Bootmodi|Boot-Pins]]&lt;br /&gt;
&lt;br /&gt;
ansonsten nur ein paar einzelne Cs 100nF an VCC/GND.&lt;br /&gt;
&lt;br /&gt;
Um Programmieren zu können wird entweder noch die serielle Schnittstelle (Programmieren über den vorprogrammierten Bootloader) oder JTAG oder die SWD Schnittstelle benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Bootmodi ===&lt;br /&gt;
Unterschiedliche Bootmodi lassen sich mittels der PINs BOOT0 und BOOT1 auswählen . Siehe Application Note [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Attachments/18225/AN2606.pdf AN2606]. Ausser F1 besitzen neuere Familien ein SYSCFG_MEMR Register. In dieses Register kann man die gewünschten Boot0/1 Werte schreiben und nach einem Core-Reset (!= System_Reset) startet der Prozessor im gewünschten Mode. Eine Neu- bzw. Deinitialisierung der Peripherie empfiehlt sich! &lt;br /&gt;
&lt;br /&gt;
==== Boot from FLASH ====&lt;br /&gt;
Startadresse wird von 0x08000004 geladen&lt;br /&gt;
 BOOT0 Lo&lt;br /&gt;
 BOOT1 X &lt;br /&gt;
&lt;br /&gt;
==== Boot from SRAM ====&lt;br /&gt;
PC Startadresse wird an 0x200001E0 direkt angesprungen.&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Hi&lt;br /&gt;
Da der interne FLASH der stm32f1x laut Datenblatt nur für 1000 Schreibvorgänge ausgelegt ist, kann mittels BOOT0 (High) und BOOT1 (High) auch aus dem zuvor mit dem Debugger (JTAG/SWD) beschriebenen SRAM booten. &lt;br /&gt;
Hierbei gilt zu beachten:&lt;br /&gt;
 VTOR auf die NVIC Tabelle im SRAM vor dem auslösen des ersten Interrupts remappen.&lt;br /&gt;
&lt;br /&gt;
 Um ein vergleichbares Startverhalten zum FLASH zu erreichen, empfiehlt es sich,&lt;br /&gt;
 0xF1E0F85F an 0x200001E0 zu schreiben. Diese implizite Ausführung von &amp;quot;ldr.w pc,&lt;br /&gt;
 [pc, #-0x01E0]&amp;quot; beim Start erzwingt ein laden der Startadresse von 0x20000004.&lt;br /&gt;
&lt;br /&gt;
==== Boot from SYSMEM (RS232, CAN und USB) ====&lt;br /&gt;
PC Startadresse wird von 0x1FFFF004 geladen&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Lo&lt;br /&gt;
Auch ohne JTAG lässt sich ein STM32 programmieren (Bootloader-Aktivierung). Dabei stehen, je nach CPU-Typ, verschiedene Möglichkeiten zur Verfügung:&lt;br /&gt;
* RS-232 (bisher alle STMs)&lt;br /&gt;
* USB (nur in bestimmten MCUs mit entsprechender Bootloader-Version und PIN-Anzahl, z.B. STM32F105/107)&lt;br /&gt;
* CAN (wie USB nur in bestimmten MCUs)&lt;br /&gt;
&lt;br /&gt;
3 zusätzliche Verbindungen müssen auf dem Board gepatcht werden. Für einen Test geht es auch mit Tastern für RESET und BOOT0.&amp;lt;br&amp;gt;&lt;br /&gt;
RESET=RTS (L-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT0=DTR (H-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT1=LOW&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Details sind hier im Forum: [http://www.mikrocontroller.net/topic/141711 STM32 Programmiertool]&lt;br /&gt;
&lt;br /&gt;
== Bewertung ==&lt;br /&gt;
=== Vorteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber ARM7:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Interrupt-Controller jetzt Teil des Prozessors (als Core Peripheral), die Vector Table ist jetzt eine echte Vektortabelle, keine Sprungliste wie bei ARM7. Durch Automatismen zwischen Core und NVIC (auto register save r0..r3, lr, sp, pc) bei Interrupt Entry wird eine deutlich schnellere Ausführungszeit bei Interrupts erreicht. Der Interrupt Code muss sich nicht mehr selbst um die Sicherung der o.g. Register kümmern und eine besondere Konfiguration der Handler im Compiler entfällt. Sind vor Beendigung einer ISR (d.h. Rücksprung zum User Code) weitere Interrupts pending, so werden diese ausgeführt, ohne dass eine komplette pop-push-sequenz der Register notwendig ist. Schön beschrieben ist es hier im [http://www.st.com/mcu/files/mcu/1221142709.pdf Insider&#039;s Guide] unter 2.4.5 / Seite 20.&lt;br /&gt;
* Thumb-2 Befehlssatz, deutlich schneller als Thumb-1 und ebenso kompakt&lt;br /&gt;
* Weniger Pins für Debugging benötigt durch SWD&lt;br /&gt;
* Mehr Hardware Breakpoints machen debuggen einfacher&lt;br /&gt;
* Software ist einfacher weil die Umschaltung zwischen ARM Mode und Thumb Mode wegfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber LPC1700 und LPC1300:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Flexiblere Gehäuseformen mit mehr Peripherie bei kleinen Gehäusen&lt;br /&gt;
* FW-Lib für alle STM32 gleich, alle AppNotes/Demos beziehen sich auf diese eine FW-Lib was die Entwicklung der eigenen Applikation sehr beschleunigt.&lt;br /&gt;
* Genauerer und flexiblerer ADC, insbesondere gegenüber LPC1300&lt;br /&gt;
* Flexiblere Varianten der Peripherie &amp;gt;&amp;gt; bei weniger einen deutlichen Preisvorteil&lt;br /&gt;
* ab 0,85 EUR (Stand 2010) Allerdings gibts den LPC1100 mit Cortex-M0 schon ab 0,65 $!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber SAM3/4:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fast alle Pins sind 5-Volt tolerant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber anderen &amp;quot;Kleinen&amp;quot; wie z.B. PIC, Atmel usw.&#039;&#039;&#039;&lt;br /&gt;
* nahezu gleicher Preis bei Hobby Anwendungen&lt;br /&gt;
* 32 Bit ohne Umwege in Assembler rechenbar&lt;br /&gt;
* Schnelle direkte Offset-Adressierung ermöglich effizienten Zugriff auf Stack-Variablen, lokal gespeicherte Flash-Konstanten, struct/Array-Elemente&lt;br /&gt;
* Einfache einheitliche Adressierung des gesamten Adressraums, d.h. Pointer auf Peripherieregister, RAM &amp;amp; Flash können exakt gleich behandelt werden, keinerlei Banking/Umschalt-Mechanismen erforderlich auch bei großem Flash/RAM&lt;br /&gt;
* Interrupt-Prioritäten und Prioritätsgruppen&lt;br /&gt;
* Effiziente Pointerarithmetik da Registerbreite=Adressbreite&lt;br /&gt;
* bessere Peripherie wie USB, Ethernet, Vielzahl an Timern&lt;br /&gt;
* der ARM-Core hat eine höhere Taktfrequenz und kann gleichzeitig mehr in weniger Takten berechnen&lt;br /&gt;
* Hardware-Division, bei einigen FPU zur effizienten float-Berechnung&lt;br /&gt;
* Mit größerem Flash/RAM verfügbar&lt;br /&gt;
* Code kann direkt aus dem RAM ausgeführt werden, Speicherschutz und privilegierter Ausführungsmodus können &amp;quot;Kernel&amp;quot;- vor &amp;quot;Anwendungs&amp;quot;-Code schützen, somit wird das dynamische Nachladen von Anwendungen aus externem Speicher effizient &amp;amp; sicher möglich&lt;br /&gt;
* ... und weitere 1000 Punkte ...&lt;br /&gt;
&lt;br /&gt;
=== Nachteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil gegenüber LPC1700:&#039;&#039;&#039;&lt;br /&gt;
* STM32F1xx: nur 72 MHz statt 100 MHz (LPC1759: 120 MHz) Taktfrequenz; STM32F2xx hat diesen Nachteil nicht (ebenfalls 120MHz, STM32F4xx mit 180MHz)&lt;br /&gt;
* Der LPC1700 besitzt deutlich mehr Mechanismen, um die Auswirkung der Waitstates des Flash-ROMs auf Code- und Datenzugriffe zu reduzieren und das bedeutet mehr Performance bei gleicher Taktfrequenz. Beim STM32F2 entfällt dieser Nachteil wohl aufgrund des ART Accelerators. &lt;br /&gt;
* Alle LPC1xxx haben 32 Bit Timer. Bei den STM32 haben das nur die STM32F2xx (2 Stück)&lt;br /&gt;
* I2S Einheit von ST hat keinen FIFO und im 24/32Bit Modus müssen 2x16Bit Halbwörter übertragen werden. Wobei allgemein bei neuen ARM Prozessoren die vorhandenen DMA-Kanäle (basierend auf eigenen BUS-Kanälen und Speicherzugriffen) FIFO in beliebiger Größe bedeutet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil für Hobby-Anwender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Nicht direkt &amp;quot;Steckbrettauglich&amp;quot;, da kein DIL Gehäuse verfügbar. Der ebay-Shop dipmicro führt jedoch sehr günstige Lötadapter für Umsetzung von LQFP48 auf DIP48. QFP64 in 0.5mm Pinabstand und nicht 0.8mm wie AVR&lt;br /&gt;
&lt;br /&gt;
* Viel Peripherie, Clocks müssen alle richtig eingestellt werden, ggf. Anpassung des Startup Codes usw.&lt;br /&gt;
** =&amp;gt; Daher nicht besonders gut für Mikrcontroller Anfänger/Einsteiger geeignet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Errata, Tipps und Tricks ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* AD-Wandler PA0: Im Errata steht, dass hier Fehler in der Wandlung entstehen könnten, also einen anderen Pin verwenden.&lt;br /&gt;
* CAN-Bus PD0/PD1: Remap geht erst ab der 100-Pin-Version. Steht im RM0008 unter 9.3.3.: &amp;quot;CAN1 alternate function remapping&amp;quot;. Alle Infos von RM0008 9.3.x sind interessant&lt;br /&gt;
* CAN und USB sind bei der F1 Serie nur bei der &amp;quot;◦Connectivity-Line&amp;quot; gleichzeitig nutzbar. Siehe Datenblätter.&lt;br /&gt;
* Mit internem RC-Oszillator kann die CPU mit maximal 64MHz betrieben werden. Mit einem externen Quarz sind dann 72MHz möglich.&lt;br /&gt;
* Für USB Betrieb muss die CPU mit 48MHz oder 72MHz betrieben werden (bei STM32F1xx).&lt;br /&gt;
* Der Idle Interrupt vom Usart wird zwar ausgelöst, aber nicht vom entsprechenden Statusflag angezeigt&lt;br /&gt;
* Der DMA fängt beim aktivieren immer von vorn an zu zählen, auch wenn er nur kurz angehalten wurde&lt;br /&gt;
* STM32F2xx hat kein Flash Size Register, bei STM32F4xx ist zwar ein flash Size Register beschrieben, kollidiert aber in der Adresse mit einem anderen Register&lt;br /&gt;
* Derivate mit internem EEPROM und nur einer Speicherbank haben das &amp;quot;Feature&amp;quot; bei write/erase des Data-Flashes (EEPROM) einen kompletten stall der code execution zu verursachen (inkl. ISR&#039;s, DMA). Desgleichen bei write/erase des internen Flash (ISP-routinen, EEPROM-Emulation).&lt;br /&gt;
* Der I2C hat diverse Fehler, welche im Errata des jeweiligen Modells (z.B. [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00238166.pdf STM32F105xx and STM32F107xx Errata sheet] ) zu finden sind. Workarounds hierzu finden sich in der Application Note [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00209826.pdf AN2824]. Am Besten benutzt man jedoch die I2C Communication peripheral application library (CPAL) von ST ([http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF258336 STSW-STM32127])&lt;br /&gt;
* [http://blog.frankvh.com/category/stm32/ weitere undokummentierte Features]&lt;br /&gt;
* Interrupt-Flags in Statusregistern der diversen Peripherals wie der Timer müssen zu &#039;&#039;&#039;Beginn&#039;&#039;&#039; (bzw. möglichst weit vor dem Return) der ISR zurückgesetzt werden, da die ISR sonst eventuell 2x ausgeführt wird ([http://www.mikrocontroller.net/topic/312393#new Siehe Forum]).&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== GCC ====&lt;br /&gt;
Um den GCC direkt zu verwenden (zB. mit selbstgebautem makefile), falls man das nicht von einer Entwicklungsumgebung machen lässt, siehe zunächst [[ARM GCC]]. STM32-spezifisches ist:&lt;br /&gt;
* Wird die [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] und ein Quarz verwendet, so muss noch per Präprozessor-Definition die Frequenz des Quarzes angegeben werden mittels z.B. -DHSE_VALUE=8000000 für 8MHz (wie auf dem STM32F4 Discovery).&lt;br /&gt;
&lt;br /&gt;
===== Startupcode &amp;amp; Linkerscript =====&lt;br /&gt;
* Damit der compilierte Code an den richtigen Stellen im Controller landet (d.h. dem Flash) muss man dem Linker ein Linkerscript mitgeben. Dies geht per &amp;quot;-T &#039;&#039;pfad_zum_linkerscript.ld&#039;&#039;&amp;quot; an den Linker-Befehl. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Linkerscript für die Atollic TrueSTUDIO IDE, dieses kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich das Script im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM324x7I_EVAL/stm32_flash.ld&amp;quot; des Archives.&lt;br /&gt;
* Damit beim Starten die richtigen Initialisierungen vorgenommen werden (wie globale Variablen und bei C++ Konstruktoren globaler Objekt-Instanzen) muss als erstes ein Startupcode laufen, der dann die main()-Funktion aufruft. Der Startupcode ist meistens in Assembler geschrieben, C-Code ist aber auch möglich. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Startupcode für die Atollic TrueSTUDIO IDE, dieser kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich der Code in Assemblerform im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f40xx.s&amp;quot; des Archives. Der Assemblercode kann per arm-none-eabi-as (Flags s.o.) assemblisiert werden, die resultierende .o -Datei normal mitgelinkt.&lt;br /&gt;
&lt;br /&gt;
Zusammen bieten die beiden Dateien der Anwendung ein Standard-C-Interface, d.h. man kann wie gewohnt globale Variablen verwenden und seinen Code in die main()-Funktion schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Tipps für Umsteiger von Atmel/PIC/8051 ===&lt;br /&gt;
* Prozessortakt hat unterschiedliche Taktquellen und eine PLL.&lt;br /&gt;
* Alle Peripheriemodule haben einen extra Clock, den man aktivieren muss.&lt;br /&gt;
* Wenn man z.B. einen UART benutzen möchte, so muss man den Clock vom UART, Alternate Function IO (AFIO) und dem GPIO-Port aktivieren.&lt;br /&gt;
* Ansonsten hat man nahezu doppelt so viele Möglichkeiten in den Peripheriemodulen.&lt;br /&gt;
* Interrupt-Flags müssen in der ISR selber gelöscht werden&lt;br /&gt;
* Forum zu [http://www.mikrocontroller.net/topic/175888 Interrupts vs. Events]&lt;br /&gt;
&lt;br /&gt;
=== Errata vom STM32F4xx die nicht im Errata von ST stehen ===&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267439#2788478 Aktivieren von DMA], wenn mehr als 3 DMA Kanäle aktiviert werden, kann es sein dass die nicht alle korrekt bedient werden. Auch klappt der DMA mit dem FSMC nicht immer zuverlässig. [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FWarning%20limit%20simultaneous%20DMAs%20to%202&amp;amp;FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&amp;amp;currentviews=811 siehe hier] [http://blog.frankvh.com/2012/01/13/stm32f2xx-stm32f4xx-dma-maximum-transactions/ und hier]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/260637#2700761 Nerviger Bug in &amp;quot;stm32f4xx.h&amp;quot;] Änderung Struktur GPIO_TypeDef&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/261690#2714754 Batterie wird leer gezogen], nur bei manchen Chips mit Rev. A&lt;br /&gt;
* [http://www.efton.sk/STM32/STM32F4xx_doc_errors.txt Liste von Dokumentations-Fehlern]&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Versandhäuser für Privatpersonen&lt;br /&gt;
* [http://www.reichelt.de/STM-Controller/2/index.html?;ACTION=2;LA=2;GROUPID=2950; Reichelt]&lt;br /&gt;
* [http://darisusgmbh.de/shop/index.php?cat=c2692_ARM-Cortex.html Darisus]&lt;br /&gt;
* [http://www.hbe-shop.de HBE (Farnell Programm für Private)] &lt;br /&gt;
* [http://www.sander-electronic.de/be00069.html Sander]&lt;br /&gt;
* [http://www.tme.eu/de/katalog/index.phtml#cleanParameters%3D1%26search%3DSTM32F10%26bf_szukaj%3D+ TME] &lt;br /&gt;
* [http://teske-electronics.de/index.php?cPath=3_9_53 Teske electronics]&lt;br /&gt;
* [http://de.rs-online.com/web/c/halbleiter/prozessoren-und-mikrocontroller/mikrocontroller/?sort-by=default&amp;amp;sort-order=default&amp;amp;applied-dimensions=4294417325&amp;amp;lastAttributeSelectedBlock=4294425895 RS-Online]&lt;br /&gt;
&lt;br /&gt;
Gewerblich liefern natürlich viele wie EBV, Mouser, Farnell, Digikey usw...&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Boards ===&lt;br /&gt;
&lt;br /&gt;
* [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=gruppe&amp;amp;id=14 Im Shop von Embedded Projects]&lt;br /&gt;
* [http://www.watterott.com/de/Boards-Kits/ARM/ARM-Cortex-M3 Cortex M3 bei Watterott]&lt;br /&gt;
* [http://www.raisonance.com/~primer-starter-kits__microcontrollers__tool~tool__T018:4enfvamuxbtp.html Primer und Primer2 von Raisonance]&lt;br /&gt;
* [http://www.sander-electronic.de/es0028.html Sander Electronic]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MP32F103-Stick:_Ein_Mini-Mikrocontroller-Board_mit_USB_und_bis_zu_4MB_Datenspeicher Artikel im Wiki, ARM mit USB und 4MB Speicher]&lt;br /&gt;
* [http://www.futurlec.com/STM32_Development_Board.shtml Futurlec Evalboard, ebenso Header-Board]&lt;br /&gt;
* [http://www.propox.com/products/t_174.html Propox, Header-Boards für 103R und 103V sowie Trägerplatine dafür]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Cortex_M3_OCM3U Cortex M3 Artikel im Wiki]&lt;br /&gt;
* [http://olimex.com/dev/index.html STM32 bei Olimex]&lt;br /&gt;
* [http://de.farnell.com/jsp/displayProduct.jsp?sku=1824325&amp;amp;action=view&amp;amp;CMP=GRHS-1000962 STM32Discovery bei Farnell] Mikrocontroller Board (STM32F100RBT6B) mit onboard USB-Programming Interface für ca. 12,50€&lt;br /&gt;
* [http://www.de.rs-online.com/web/p/products/7458434/ STM32Discovery bei RS-Components] 12,65 € +MwSt.&lt;br /&gt;
* [http://www.segor.de/#Q=STM32 VL DISCOVERY] STM32 Discovery bei Segor&lt;br /&gt;
* [http://www.watterott.com/de/STM32F4Discovery STM32F4DISCOVERY] STM32F4 Cortex M4 Controller mit JTAG-Debugger auf der Platine bei Watterott für 16,66EUR.&lt;br /&gt;
* [http://www.conrad.de/ce/de/product/443910/ STM32F4 Discovery Kit bei Conrad] 17,11 €&lt;br /&gt;
* [http://www.mcu-raisonance.com/~open4-development-platform__microcontrollers__tool~tool__T018:g65gu6ghg2n.html/ Open 4 oder auch genannt Evo-Primer]&lt;br /&gt;
* [http://www.wayengineer.com/index.php?main_page=index&amp;amp;cPath=50_66&amp;amp;page=1&amp;amp;sort=3a WayEngineer]&lt;br /&gt;
* [http://thinkembedded.ch/ST-STMicroelectronics:::24.html Im Thinkembedded Shop] in der Schweiz / DiscoveryF4, div. ETT und Olimex Boarde ab 20,18 CHF / 16,15 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://shop.myavr.de/ARM-Produktlinie/STM32F4-Discovery.htm?sp=article.sp.php&amp;amp;artID=200072 Im myAVR Shop] DiscoveryF4 mit möglichem Zubehör 16,45 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://www.keil.com/boards/cortexm.asp Keil/ARM Demoboards]&lt;br /&gt;
* [http://www.phytec.de Phytec]&lt;br /&gt;
* [http://shop.myavr.de/index.php?sp=artlist_kat.sp.php&amp;amp;katID=37 verschiedene ARM Produkte und Erweiterungen bei myAVR]&lt;br /&gt;
&lt;br /&gt;
== Weblinks, Foren, Communities, Tutorials ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/173753 Diskussion zum Artikel]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/mikrocontroller-elektronik?filter=ARM*+STM32*+Cortex* Suche im Forum]&lt;br /&gt;
* [https://my.st.com/public/STe2ecommunities/mcu/Lists/ARM%20CortexM3%20STM32/AllItems.aspx Forum auf der ST Homepage] &lt;br /&gt;
* [http://www.stm32circle.com/hom/index.php STM32 Community] &lt;br /&gt;
*[http://joe-c.de/pages/posts/einstieg_mikrocontroller_stm32f103_101.php Einstieg:  STM32board mit Kamera (deutsch)] &lt;br /&gt;
* [http://www.ebv.com/fileadmin/products/Press_Print/Brochures/Product_Brochures/EBV_Cortex%20Collection_V2.pdf Übersicht der Cortex Prozessoren und deren Hersteller (nicht nur ST, von EBV)]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/258652 Tutorial]&lt;br /&gt;
* [http://diller-technologies.de/stm32_wide.html STM32 Tutorial in Deutsch von Diller Technologies]&lt;br /&gt;
* [http://mySTM32.de STM32 C und C++ Tutorial in Deutsch ]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net STM32F4 Quellcode-Librarys und CooCox-Projekte in Deutsch ]&lt;br /&gt;
* [http://myugl.de Tutorial für Grafik-Librarys und SiSy-Projekte in Deutsch ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:STM32| ]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=80180</id>
		<title>STM32</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=80180"/>
		<updated>2013-12-27T11:18:09Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STM32 ist ein Mikrocontroller-Familie von [http://www.st.com/mcu/inchtml-pages-stm32.html ST] mit einer 32-Bit [http://www.arm.com/products/processors/cortex-m/index.php ARM Cortex-M0/M3/M4] CPU. Diese Architektur ist speziell für den Einsatz in Microcontrollern neu entwickelt und löst damit die bisherigen ARM7-basierten Controller weitestgehend ab. Den STM32 gibt es von ST in unzähligen Varianten mit variabler Peripherie und verschiedenen Gehäusegrößen und -formen. Durch die geringe Chipfläche des Cores ist es ST möglich, eine 32 Bit-CPU für weniger als 1&amp;amp;nbsp;€ anzubieten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:stm32F103xc.png|thumb|right|340px|Blockdiagramm STM32F103xC/D/E]]&lt;br /&gt;
&lt;br /&gt;
== STM32-Familien ==&lt;br /&gt;
&lt;br /&gt;
Bisher gibt es sieben STM32-Familien:&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1588.jsp STM32F0]&lt;br /&gt;
** Cortex M0&lt;br /&gt;
** Mikrocontroller zum Einstieg&lt;br /&gt;
** Bis 48MHz&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1169.jsp STM32F1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 72MHz&lt;br /&gt;
**Verschiedene Unterfamilien:&lt;br /&gt;
*** Connectivity line&lt;br /&gt;
*** Performance line&lt;br /&gt;
*** USB Access line&lt;br /&gt;
*** Access Line&lt;br /&gt;
*** Value line&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1575 STM32F2]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 120MHz&lt;br /&gt;
** Wie die STM32F1 Serie, Camera-Interface, 32-Bit Timer, Crypto-Engine...&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 72MHz&lt;br /&gt;
** Fast 12-bit 5 MSPS and precise 16-bit sigma-delta ADCs&lt;br /&gt;
** Touch sensing controller (TSC)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp STM32F4]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 180MHz&lt;br /&gt;
** Bis zu 2MB Flash&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295 STM32L1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Low Power &lt;br /&gt;
** mit LCD Treiber&lt;br /&gt;
** Bis 32MHz&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1581 STM32W]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** BIS 24MHz&lt;br /&gt;
** RF-MCU &lt;br /&gt;
[http://www.st.com/internet/mcu/class/1734.jsp Hier eine Übersicht zum Auswählen eines STM32Fxxx]&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
* Cortex-M0 / Cortex-M3 / Cortex-M4F Kern (mit FPU)&lt;br /&gt;
* 16KB ... 2MB  [[Flash-ROM]]&lt;br /&gt;
*  4KB ... 256KB [[Speicher#SRAM|SRAM]]&lt;br /&gt;
* 4KB [[Speicher#EEPROM|EEPROM]] (STM32L)&lt;br /&gt;
* SDRAM-Controller bei den [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1577/LN1806 STM32F42xxx und STM32F43xxx], bis 512 MByte externer SDRAM addressierbar&lt;br /&gt;
* 512 one-time programmable Bytes(STM32F2/4)&lt;br /&gt;
* [[IC-Gehäuseformen | Gehäuse]] 36 ... 216 Pins als QFN, LQFP und BGA&lt;br /&gt;
* Derzeit sind über &#039;&#039;&#039;250&#039;&#039;&#039; STM32 Derivate/Varianten verfügbar&lt;br /&gt;
* Bis 72MHz CPU-Takt, bis 120MHz beim STM32F2xx, bis 168/180 MHz beim STM32F4xx, wobei eine spezielle prefetch-hardware bis 120/168 MHz eine Geschwindigkeit erzielen soll, die 0 Wait-States entspricht. Der CPU-Takt wird über einen Multiplikator aus dem internen RC-Takt oder einem externen Quarz-Takt abgeleitet.&lt;br /&gt;
* Externes Businterface (nur bei Gehäusen ab 100 Pin und nur bei STM32F4, STM32F2 und STM32F1 Performance line)&lt;br /&gt;
* LCD Treiber für 8x40 Punkte (nicht beim STM32F2xx)&lt;br /&gt;
* TFT Treiber bei STM32F429 / STM32F439&lt;br /&gt;
* Spannungsbereich 1,65 ... 3,6V, nur eine Betriebsspannung nötig&lt;br /&gt;
* Temperaturbereich bis 125 °C&lt;br /&gt;
* Bis zu 140 IOs, viele davon [[Pegelwandler|5V-tolerant]]&lt;br /&gt;
* Interner, kalibrierter RC-Oszillator mit 8MHz (16MHz bei STM32F2/F4xx)&lt;br /&gt;
* Externer Quarz&lt;br /&gt;
* Real Time Clock mit eigenem Quarz und separater Stromversorgung&lt;br /&gt;
* Bis zu 16 [[Timer]], je Timer bis zu 4 IC/OC/PWM Ausgänge. Davon 2x Motion Control Timer (bei STM32F103xF/G)&lt;br /&gt;
* Systick Counter&lt;br /&gt;
* Bis zu 3 12-Bit [[AD-Wandler]] mit insgesamt 24 AD-Eingängen, integrierter [[Temperatursensor]], Referenzspannung Vrefint und VBatt Spannungsmessung (STM32F4xx)&lt;br /&gt;
* Bis zu 2 12-Bit [[DA-Wandler]] (bis zu 3 beim STM32F3xx)&lt;br /&gt;
* Bis zu 2 [[DMA]] Controller mit bis zu 12 Kanälen (16 beim STM32F2/4xx)&lt;br /&gt;
* Bis zu 2x [[I2C|I²C]]&lt;br /&gt;
* Bis zu 5x [[UART|USART]] mit LIN, IrDA und Modem Control (bis zu 8 beim STM32F2/F4xx)&lt;br /&gt;
* Bis zu 3x [[SPI]] (bis zu 6 beim STM32F4xx)&lt;br /&gt;
* Bis zu 2x [[I2S|I²S]]&lt;br /&gt;
* Bis zu 2x [[CAN#STMicroelectronics STM32 (Cortex M3/M4)|CAN]]&lt;br /&gt;
* Hardware [[CRC]] Unit, bei der STM32F3xx Serie mit einem einstellbaren Polynom &lt;br /&gt;
* Unique device ID register (96 Bits)&lt;br /&gt;
* RNG - Random Number Generator (STM32F2/4xx)&lt;br /&gt;
* Cryptographic Processor (CRYP) (STM32F2/4xx)&lt;br /&gt;
* Hash Processor (HASH) (STM32F2/4xx)&lt;br /&gt;
* Kamera-Interface (DCMI) (STM32F2/4xx)&lt;br /&gt;
* [[USB]] 2.0 Full Speed / OTG&lt;br /&gt;
* [[USB]] 2.0 Hi Speed OTG mit extra PHY-Chip (STM32F2/4xx)&lt;br /&gt;
* SDIO Interface (z.B. SD-Card Reader)&lt;br /&gt;
* Ethernet&lt;br /&gt;
* Watchdog mit Window-Mode&lt;br /&gt;
* Jedes Peripheriemodul ist separat einschaltbar, wodurch sich erheblich [[Ultra low power|Strom sparen]] lässt&lt;br /&gt;
* [[JTAG]] und SWD (Serial Wire Debug) Interface&lt;br /&gt;
* Bis zu 6 Hardware-Breakpoints für Debuggen&lt;br /&gt;
* und vieles mehr . . .&lt;br /&gt;
&lt;br /&gt;
== Struktur der Dokumentation: ==&lt;br /&gt;
Die Dokumentation der STM32 ist zwar umfangreicher und komplexer z.B. die der [[AVR]], enthält aber dennoch alle nötigen Informationen. Sie teilt sich auf in mehrere Dokumente.&lt;br /&gt;
Als Beispiel der Dokumentation soll stellvertretend der [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164486 STM32F103RC] genannt werden. Die Seite von ST beinhaltet alle nötigen Informationen passend zu diesem Prozessor.&lt;br /&gt;
&lt;br /&gt;
Diese Dokumente von ST beschreiben den Controller:&lt;br /&gt;
&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00191185.pdf STM32F103xC/D/E Datasheet] sind die speziellen Eigenschaften einer bestimmten Modellreihe beschrieben und die exakten Daten und Pinouts aufgeführt, sowie die Zuordnung Chipname - Flash/RAM-Größe. Die Peripheriemodule werden nur aufgeführt, nicht detailliert beschrieben.&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf Reference Manual (RM0008)] sind alle Peripheriemodule der jeweiligen STM32-Controllerfamilie im Detail beschrieben.&lt;br /&gt;
* Das [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html ARMv7M Architecture Reference Manual] beschreibt detailliert den Prozessorkern, wie das Exception Model, die CPU Instruktionen inklusive Encoding, etc.&lt;br /&gt;
* Das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00228163.pdf STM32 Cortex-M3 Programming Manual] ist eine Zusammenfassung des ARMv7M Architecture Reference Manual bezogen auf die STM32.&lt;br /&gt;
* Wer nicht die ST Firmware-Library verwendet, der benötigt zusätzlich das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00283419.pdf Flash Programming Manual] für die Betriebsart des Flash-ROMs, d.h. die frequenzabhängige Konfiguration der Waitstates.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten auch die [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00197763.pdf Errata Sheets] beachtet werden. Empfohlen sei auch die Appnote &amp;quot;[http://www.st.com/web/en/resource/technical/document/application_note/CD00164185.pdf AN2586 Getting started with STM32F10xxx hardware development]&amp;quot;.&lt;br /&gt;
Die jeweiligen Dokumentations-PDFs sind auf der Produktseite von ST eines jeden Mikrocontrollers verlinkt.&lt;br /&gt;
&lt;br /&gt;
== Hardware Zugriffs-Libraries ==&lt;br /&gt;
=== CMSIS ===&lt;br /&gt;
&lt;br /&gt;
Die CMSIS (ARM® &#039;&#039;&#039;C&#039;&#039;&#039;ortex™ &#039;&#039;&#039;M&#039;&#039;&#039;icrocontroller &#039;&#039;&#039;S&#039;&#039;&#039;oftware &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;S&#039;&#039;&#039;tandard) ist eine Library von ARM für den Zugriff auf die herstellerübergreifenden Funktionen des ARM-Cores. Hierzu gehört bei den Cortex-M4F-Cores auch die DSP und Floating-Point Funktionalität. Weiterhin existieren eine Zahl von Helferfunktionen für den NVIC, den Sys-Tick-Counter, sowie eine SystemInit-Funktion, welche sich um die PLL kümmert. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen des CMSIS-Standards ([http://www.onARM.com www.onARM.com]) wurden die Headerdateien standardisiert, der Zugriff auf die Register erfolgt per &#039;&#039;&#039;Peripheral-&amp;gt;Register&#039;&#039;&#039;. Die CMSIS C-Dateien bzw. Header enthalten auch Anpassungen für die verschiedenen Compiler. Die Portierung eines Real-Time-Betriebsystems sollte unter Verwendung der CMSIS, für Chips der verschiedenen Hersteller, stark vereinfacht möglich sein (z.B. einheitliche Adressen für Core-Hardware/Sys-Tick-Counter).&lt;br /&gt;
&lt;br /&gt;
Die CMSIS ist im Download der ‎STM32 Standard Peripheral Library enthalten. Die Compiler-Hersteller liefern eine jeweils zur ihrer Tool-Version passende bzw. geprüfte Library (incl. CMSIS) aus. Diese Libs können, gegenüber den Downloads beim Chip-Hersteller, auch ältere Version beinhalten.&lt;br /&gt;
&lt;br /&gt;
=== ‎STM32 Standard Peripheral Library ===&lt;br /&gt;
&lt;br /&gt;
ST bietet für jede Controller-Familie eine umfangreiche zur CMSIS passende Peripherie-Bibliothek. Alle Funktionen um die Peripherie zu benutzen sind gekapselt in einfache Strukturen und Funktionsaufrufe. Somit muss man sich nicht selbst um die Peripherie-Register kümmern. Diese Library und ihre Dokumentation setzen das grundlegende Verständnis der Funktion des jeweiligen Peripheriemoduls voraus, wie es die o.a. Referenz und diverse Appnotes vermitteln. Die Library beinhaltet außerdem für fast jede Peripherie mehrere Beispiele.&lt;br /&gt;
Für die USB Schnittstelle gibt es noch eine extra Library, genauso wie für Ethernet.&lt;br /&gt;
&lt;br /&gt;
Auf der &amp;quot;Design Resources&amp;quot; Seite der Produktseite von ST eines jeden STM32 Mikrocontrollers kann die Library für den jeweiligen Controller heruntergeladen werden, z.B. [http://www.st.com/web/en/catalog/tools/PF257890 hier] für den o.g. STM32F103RC.&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
Zur Programmierung der STM32 gibt es verschiedene Möglichkeiten, sowohl kommerzielle proprietäre als auch mit Freier Software.&lt;br /&gt;
&lt;br /&gt;
Der GCC (in seinen verschiedenen Binärdistributionen) ist der einzige ARM Compiler der [http://de.wikipedia.org/wiki/C%2B%2B11 C++11] unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Freie Software/Freeware ===&lt;br /&gt;
==== Selber zusammenstellen ====&lt;br /&gt;
Man nehme...:&lt;br /&gt;
* Eine Entwicklungsumgebung nach Wahl:&lt;br /&gt;
** [http://www.eclipse.org Eclipse] mit [http://www.eclipse.org/cdt/ C/C++ Development Tooling] und [http://gnuarmeclipse.livius.net/blog/ GNU ARM Plug-in] (Bei Verwendung vom GCC-ARM-Embedded als Toolchain &amp;quot;Sourcery G++ Lite&amp;quot; auswählen, dieser sieht für eclipse gleich aus) (Linux, Windows)&lt;br /&gt;
** [http://netbeans.org/ Netbeans] mit [http://plugins.netbeans.org/plugin/37426/gdbserver GDBserver-Plugin] (Linux, Windows)&lt;br /&gt;
** [http://www.kdevelop.org/ KDevelop] (Linux)&lt;br /&gt;
** [http://www.geany.org/ Geany] (Linux, Windows)&lt;br /&gt;
** Oder ein einfacher Texteditor&lt;br /&gt;
* Einen C,C++ Compiler:&lt;br /&gt;
** Eine der [[ARM_GCC#GCC_Bin.C3.A4rdistributionen|GCC-Binärdistributionen]], siehe auch [[#GCC|GCC]] (je nach Distribution Linux, Windows)&lt;br /&gt;
* Programmiersoftware zum Flashen des Target:&lt;br /&gt;
** [http://openocd.sourceforge.net/ OpenOCD] unterstützt viele Debug/Programmier-Adapter (Linux, Windows)&lt;br /&gt;
** [https://github.com/texane/stlink Texane stlink] funktioniert gut mit den ST-Link Adaptern wie sie zB. auf den STM32 Discovery Boards zu finden sind (Linux)&lt;br /&gt;
** Turtelizer2 oder andere JTAG Programmieradapter&lt;br /&gt;
** Bei Verwendung eines Segger J-Link, den [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf Segger GDB-Server] in Verbindung mit dem beim GCC mitgelieferten GDB (Linux, Windows)&lt;br /&gt;
&lt;br /&gt;
==== Komplette IDE&#039;s ====&lt;br /&gt;
* [http://www.codesourcery.com/sgpp/lite_edition.html Codesourcery Lite Edition]&lt;br /&gt;
* [http://www.coocox.org/ Coocox Eclipse IDE] kostenlose IDE für STM32F0 / F1 / F4 Hilfreiche Infos gibt es im [http://www.mikrocontroller.net/topic/214719?goto=new#2228482 hier] und [http://www.mikrocontroller.net/topic/214719?goto=new#2229943 hier] Forum&lt;br /&gt;
* [http://emide.org/ emIDE] kostenlose IDE die mit dem Segger J-LINK funktioniert.&lt;br /&gt;
* [http://www.emblocks.org EmBlocks] kostenlose IDE, Code::Blocks basiert, unterstützt STM32 L1/F0/F1/F2/F3/F4/W, integrierter GDB Debugger, Jlink/ST-Link, System view (Peripherie Register anzeigen) beim Debuggen, Project Wizzard&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Umgebungen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.keil.com/arm/mdk.asp Keil µVision] (Demo max. 32KB Code): Die sehr komfortable µVison IDE ist neben dem ARM Compiler per Menue auch für einen beliebigen GNU-Compiler konfigurierbar. Damit besteht das 32k-Limit nur noch für den integrierten Debugger / Simulator. µVison selbst kann kostenlos mit dem MDK-Evaluationkit heruntergeladen werden. [https://www.keil.com/arm/demo/eval/arm.htm#DOWNLOAD download]&lt;br /&gt;
* [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR-Embedded-Workbench] (Demo max. 32KB Code) [http://supp.iar.com/Download/SW/?item=EWARM-EVAL download]&lt;br /&gt;
* [http://www.isystem.com/products/itag winIDEAiTag] Keine Code Limitierung, GCC und Testwerkzeug beinhaltet. Läuft mit dem iTag Adapter.&lt;br /&gt;
* [http://www.raisonance.com Raisonance Ride7] (GCC Compiler, kostenlose Version auf Debugging von max. 32KB Code limitiert, keine Limitierung beim Complilieren)&lt;br /&gt;
* [http://www.atollic.com Atollic] (Lite Version (bis V2.3.0) ohne Code-Limit, auf GCC basierend. Die neueste Version ab V3 hat fast keine Beschränkungen mehr außer jetzt einen Code-Limit von 32kB. Außerdem werden jetzt die meisten ARM Familien unterstützt. )&lt;br /&gt;
* [http://www.rowley.co.uk/arm/ Rowley Crossworks] (Demo 30 Tage unbeschränkt, 150$ für nichtkommerzielle Nutzung, auf GCC basierend)&lt;br /&gt;
* [http://www.code-red-tech.com Code Red] (GCC basierend)&lt;br /&gt;
* [http://www.sisy.de/index.php?id=17&amp;amp;no_cache=1 SiSy ARM oder SiSy Micrcontroller++] (Demo verfügbar keine Gößenbegrenzung, basiert auf GNU-Compiler, grafische Programmierung mit UML möglich, integrierter Debugger)&lt;br /&gt;
* [http://www.comsytec.eu/epsdebugger.php EPS Debugger Plugin, für STM32 Development mit Code::Blocks]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials für diverse Tool-Kombinationen ===&lt;br /&gt;
[[STM32 Eclipse Installation|Windows,Linux, Eclipse + Yagarto/CodeSourcery + OpenOCD/ST-Link]]&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
** Eclipse&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/216554 Windows, Eclipse, codesourcery, st-link ]&lt;br /&gt;
*** [http://www.firefly-power.de/ARM/debugging.html Eclipse Plugin &amp;quot;GDB Hardware Debugging&amp;quot; mit OpenOCD]&lt;br /&gt;
** Code::Blocks&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/265600 Windows, Code::Blocks, STM32F4]&lt;br /&gt;
** STM32 mit EmBlocks&lt;br /&gt;
*** [http://www.emblocks.org/web/downloads-main Download EmBlocks]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=coHPJylnzC8 Video STM32 Project Wizzard in EmBlocks]&lt;br /&gt;
** Atollic TrueSTUDIO&lt;br /&gt;
*** [[STM32 LEDBlinken AtollicTrueStudio|Atollic TrueSTUDIO Installation + Demo]]&lt;br /&gt;
** MDK-ARM Lite mit Einstellungen für STM32F0/F4-Discovery Board&lt;br /&gt;
*** [https://www.keil.com/demo/eval/arm.htm KEIL MDK-ARM Download]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=RXOOxby5nns&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;index=1 Installations Video STM32F4 Discovery Board]&lt;br /&gt;
*** [https://www.youtube.com/watch?annotation_id=annotation_203294&amp;amp;feature=iv&amp;amp;index=4&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;src_vid=sN4gDZ7H8gw&amp;amp;v=BeZcQjXxk9A Einstellungen STM32F0 Discovery Board Video]&lt;br /&gt;
** SiSy ARM, STM32&lt;br /&gt;
*** Download: [http://www.sisy.de/index.php?id=59 SiSy DEMO] kein Begrenzung der Codegröße&lt;br /&gt;
*** [http://www.youtube.com/watch?v=84Y3jYLWYpo Videobeispiel]&lt;br /&gt;
* Ubuntu&lt;br /&gt;
** [http://www.seng.de/downloads/HowTo_ToolChain_STM32_Ubuntu.pdf Ubuntu, eclipse, Code Sourcery, OpenOCD] ([http://www.seng.de/downloads/HowTo_ToolChain_STM32_Ubuntu.odt Das Gleiche im bearbeitbaren ODT-Format])&lt;br /&gt;
** [http://fun-tech.se/stm32/index.php Ubuntu, Selbstcompilierter GCC, STM32/Cortex-M3]&lt;br /&gt;
** [http://thetoolchain.com The ToolChain] - Automatisch installierende Entwicklungsumgebung mit eigenen und externen Treibern, Unterstützt QtCreator als IDE, Flexibel erweiterbar über Shellskripte&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/214719 Tipps für Installation mit Eclipse]&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter===&lt;br /&gt;
* [http://www.segger.com/jlink-model-overview.html SEGGER J-LINK / J-TRACE] für u.a. alle ARM7/9/11, Cortex-M0/M1/M3/M4/A5/A8/A9/R4 als [http://www.segger.com/cms/j-link-edu.html NonComercial] J-LINK-EDU für ca. 60,- zu haben, läuft in µVision, IAR, GDB (Linux &amp;amp; Windows über einen eigenen [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf GDB-Server]), Keil, ...&lt;br /&gt;
* Keil [http://www.keil.com/ulinkme/ ULINK-ME], [http://www.keil.com/arm/ulink2/ ULINK2], [http://www.keil.com/arm/ulinkpro/ ULINK pro]&lt;br /&gt;
* [http://www.st.com/internet/evalboard/product/219866.jsp ST-LINK], [http://www.st.com/internet/evalboard/product/251168.jsp ST-LINK/V2]&lt;br /&gt;
* Jedes STM32 Discovery board hat einen ST-Link für Programmierung/Debugging per SWD on-board, welcher auch für eigene STM32 Target Hardware benutzt werden kann (ca. 12,- bis 19,-€, je nach Typ).&lt;br /&gt;
* [http://www.raisonance.com/~rlink-debugger-programmer__microcontrollers__tool~tool__T018:4cn9ziz4bnx6.html Raisonance RLink]&lt;br /&gt;
* [http://www.amontec.com Amontec]&lt;br /&gt;
* [http://www.hjtag.com H-JTAG] Personal Edition für ca. 60,- zu haben, läuft mit ADS, SDT, IAR, Vision und RVDS &lt;br /&gt;
* [http://www.isystem.com/products/itag iTag] für 50.- bei Amazon zu bestellen, oder als Eigenbau version (offenes Design) läuft mit der freien winIDEAiTag version (siehe oben)&lt;br /&gt;
&lt;br /&gt;
In der Regel haben die [[JTAG]] Adapter einen 20-Poligen Stecker, den man direkt auf die Demo-Boards, die auch einen 20-Poligen [[JTAG]]-Anschluss haben, einstecken kann. Die Pinbelegung ist genormt, siehe Artikel [[JTAG]]. Die Discovery-Boards haben keinen seperaten JTAG-Stecker, aber zumindest für das STM32F4 Discovery kann man sich leicht einen Adapter Pinheader-&amp;gt;JTAG Stecker selber bauen.&lt;br /&gt;
&lt;br /&gt;
Andere [[JTAG]] Adapter wie z.B. der ULink von Keil funktionieren nur mit dem Keil Compiler.&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter Open-Source===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ Olimex] ARM-USB-OCD (ca. 60.-, hat zusätzlich einen Spannungsausgen und einen COM Port)&lt;br /&gt;
* [http://www.oocdlink.com/ OOCDLink]&lt;br /&gt;
* [https://github.com/texane/stlink Stlink]&lt;br /&gt;
* [http://www.randomprojects.org/wiki/Floss-JTAG FLOSS-JTAG]&lt;br /&gt;
* [http://capitanio.org/mlink/ Linux Demo Code für die Discovery&#039;s ST-Link Programmierung]&lt;br /&gt;
&lt;br /&gt;
Der Controller hat auch einen fest eingebauten Boot-Lader. Damit läßt er sich auch über eine gewöhnliche serielle Schnittstelle programmieren, ohne dass man einen JTAG-Adapter benötigt. Dies erfordert ggf. entsprechende Konfiguration über die BOOTx-Pins und/oder die Option-Bytes.&lt;br /&gt;
&lt;br /&gt;
=== Demo-Projekte ===&lt;br /&gt;
&lt;br /&gt;
* Einführung in die GPIO Programmierung der STM32F10x und STM32F30x Prozessoren am Beispiel des STM32F3 Discovery Boards und Vergleich zur AVR IO Registerstruktur [http://www.mikrocontroller.net/topic/300472#new]&lt;br /&gt;
* [[prog_bsp_timer_1_timer2|Programmbeispiel für die Verwendung von Timer2 zusammen mit dem Interrupt]]&lt;br /&gt;
* [http://www.firefly-power.de/ARM/printf.html Printf() debugging mit minimalem Aufwand]&lt;br /&gt;
* [[STM32_BLDC_Control_with_HALL_Sensor|Programmbeispiel für BLDC Motoransteuerung (Timer 1) mit HALLSensor (Timer 3)]]&lt;br /&gt;
* [[Cortex_M3_OCM3U]]&lt;br /&gt;
* Martin Thomas hat ein umfangreiches Projekt erstellt, in der die Eclipse Einstellungen enthalten sind:&lt;br /&gt;
** [http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html &amp;quot;ChaN&#039;s FAT-Module with STM32 SPI&amp;quot;]&lt;br /&gt;
* [[STM32 USB-FS-Device Lib]]&lt;br /&gt;
* Modellbau-Sender auf STM32-Basis mit vielen Treibern [http://www.rcos.eu www.rcos.eu]&lt;br /&gt;
* Ausführliches [https://github.com/jkerdels/stm32edu Einstiegs-Tutorial] in Codeform für das [http://www.st.com/internet/evalboard/product/252419.jsp STM32F4 discovery board]&lt;br /&gt;
* [http://www.redacom.ch/keillab/ Schweizer Gondelbahnsteuerung über Webserver auf ETT STM32F ARM KIT Board in Keil RTOS] mit Webcam&lt;br /&gt;
* Die [http://ethernut.svn.sourceforge.net/viewvc/ethernut/trunk/ Ethernut SVN Version] unterstützt inzwischen viele STM32 Typen, viele Devices und einige STM32 Demoboards&lt;br /&gt;
&lt;br /&gt;
== Debug- und Trace-Interface (CoreSight™ Debug and Trace Technologie)==&lt;br /&gt;
&lt;br /&gt;
Übersicht über beide Funktionalitäten und den Schnittstellen:&lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_cs_core_sight.htm&lt;br /&gt;
&lt;br /&gt;
Die Coresight-Debug-Architektur ermöglicht ein nicht-invasives Debugging, d.h. es können während des Betriebes (meistens) ohne Beeinflussung des Prozessors Daten vom Speicher gelesen und in selbigen geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
=== Debugger Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Der Debugger-Teil besitzt drei Funktionen:&lt;br /&gt;
* Run Control: z.B. Programm-Start, Stopp und Einzel-Schritte.&lt;br /&gt;
* (Program) Break Points: Ein Programm hält an, wenn der Programm Counter eine bestimmte Programm-Adresse erreicht.&lt;br /&gt;
** Die maximale Anzahl der gleichzeitig möglichen Break Points ist begrenzt (z.B. 6 bei einem STM32).&lt;br /&gt;
** Die Anzahl der Break Points ist nahezu unbegrenzt, wenn ein Debugger über den Memory Access (s.u.) sogenannte Flash Break Points unterstützt. Dabei wird ein geladenes Programm im Flash umprogrammiert, um den Debugger anzuhalten. Diese Funktionalität ist meistens ein kostenpflichtiges Zusatz-Feature des Debugger-Herstellers. &lt;br /&gt;
** Beinhaltet keine Data Watch Funktionalität, welche im Trace-Teil (DWT) realisiert wird.&lt;br /&gt;
* Memory Access: Lesen und Schreiben von Speicheradressen. &lt;br /&gt;
** Diese Funktionalität beinhaltet keine direkte Flash-Programmierung. Der Programmiervorgang für einen Flash ist herstellerspezifisch und muss von dem verwendeten Debugger unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=== Trace Funktionen ===&lt;br /&gt;
Die Trace-Funktionalität wird in drei Funktionen aufgeteilt:&lt;br /&gt;
* ETM (Embedded Trace Macrocell): Optional, nicht jede CPU besitzt diese Hardware (Kostenfaktor, Austattung).&lt;br /&gt;
* ITM (Instrumentation Trace Macrocell): Über diesen Kanal kann ein vereinfachtes Trace des Core ermöglicht werden, sowie &amp;quot;printf-ähnlich&amp;quot; Daten über den ITM Channel 0 geschickt und im Debugger ausgegeben werden.&lt;br /&gt;
* DWT (Data Watchpoint &amp;amp; Trace Unit): &lt;br /&gt;
** Data Watch: 4 Access-Break-Points ( z.B. der Debugger bleibt stehen, wenn das Programm auf einen Speicher zugreift oder der Wert einer Variablen einen bestimmten Wert annimmt). &lt;br /&gt;
** Trace Unit: Programmverlauf (durch Lesen des Program Counters) und Interrupt Aufrufe verfolgen, sowie Zeitmessungen.&lt;br /&gt;
&lt;br /&gt;
Einige der Trace-Funktionalitäten können über die JTAG-Schnittstelle angesprochen werden. Die schnelle Trace-Funktionalität (mit 4 bit Parallel-Port) steht nur mit der erweiterten DEBUG + ETM Schnittstelle zur Verfügung. Im Gegensatz zum Debugger-Teil (Run Control, Break Points und Memory Access) werden Trace-Funktionen nicht von allen Debuggern unterstützt. Debugger mit der vollen Trace-Funktionalität kosten deutlich mehr.&lt;br /&gt;
&lt;br /&gt;
* Beispiele für Trace-Port-Aktivierungen für verschiedene Hersteller: http://www.keil.com/support/man/docs/jlink/jlink_capture_tracedata.htm&lt;br /&gt;
&lt;br /&gt;
Die Aktivierung des parallelen Trace-Ports erfordert, je nach CPU Hersteller, zusätzliche Debugger-Makros für die Aktivierung und Port-Freischaltung. Zusätzlich sind die Schnittstellenauswahl und Einstellung (Frequenzen) im Entwicklungs-Tool (IDE) wichtig, um erfolgreich den Programm-Verlauf &amp;quot;tracen&amp;quot; zu können.&lt;br /&gt;
&lt;br /&gt;
=== Debug und Trace-Schnittstellen ===&lt;br /&gt;
Als Debug Interface stehen zwei Varianten zur Auswahl:&lt;br /&gt;
* [[JTAG]]: Dafür sind mindestens 6 Steuerleitungen nötig. Unterstützt Device Chaining: Mehrere verbundene Geräte können mit einem Debugger/Programmer gleichzeitig angesteuert werden.&lt;br /&gt;
* SWD (Serial Wire Debug): Hier mindestens 2  Steuerleitungen (3 mit SWO, zzgl GND und 3,3V). Die SWD Schnittstelle ist in der Regel schneller und kann auch Funktionen aus dem Trace-Teil beinhalten (z.B. ITM, dafür wird der SWO-Pin benötigt). Device Chaining ist mit dieser Schnittstelle nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Standard-JTAG Steckerbelegungen: &lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm&lt;br /&gt;
&lt;br /&gt;
=== Der 10polige JTAG-Stecker von mmvisual ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe diesen Part in den Artikel [http://www.mikrocontroller.net/articles/JTAG#Der_10-polige_JTAG_Stecker_von_mmvisual JTAG] verschoben.&lt;br /&gt;
Hinzu gekommen ist die Adapterplatine 10-Polig auf Standard JTAG 20 Polig mit TTL/V24 Wandler. [http://www.mikrocontroller.net/articles/JTAG#Die_Adapterplatine Siehe hier.]&lt;br /&gt;
&lt;br /&gt;
== Hardware-Beschaltung ==&lt;br /&gt;
&lt;br /&gt;
Der STM32 benötigt für den Betrieb nur (Minimalbeschaltung):&lt;br /&gt;
&lt;br /&gt;
* VCC 2..3,3V (je nach Typ)&lt;br /&gt;
* AVCC 2..3,3V (sehr wichtig, der STM32 lässt sich ohne diese Spannung nicht programmieren)&lt;br /&gt;
* GND&lt;br /&gt;
* Reset Pin 100nF nach GND (ein Pull-Up Widerstand von ca. 40k ist intern vorhanden)&lt;br /&gt;
* [[#Bootmodi|Boot-Pins]]&lt;br /&gt;
&lt;br /&gt;
ansonsten nur ein paar einzelne Cs 100nF an VCC/GND.&lt;br /&gt;
&lt;br /&gt;
Um Programmieren zu können wird entweder noch die serielle Schnittstelle (Programmieren über den vorprogrammierten Bootloader) oder JTAG oder die SWD Schnittstelle benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Bootmodi ===&lt;br /&gt;
Unterschiedliche Bootmodi lassen sich mittels der PINs BOOT0 und BOOT1 auswählen . Siehe Application Note [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Attachments/18225/AN2606.pdf AN2606]. Ausser F1 besitzen neuere Familien ein SYSCFG_MEMR Register. In dieses Register kann man die gewünschten Boot0/1 Werte schreiben und nach einem Core-Reset (!= System_Reset) startet der Prozessor im gewünschten Mode. Eine Neu- bzw. Deinitialisierung der Peripherie empfiehlt sich! &lt;br /&gt;
&lt;br /&gt;
==== Boot from FLASH ====&lt;br /&gt;
Startadresse wird von 0x08000004 geladen&lt;br /&gt;
 BOOT0 Lo&lt;br /&gt;
 BOOT1 X &lt;br /&gt;
&lt;br /&gt;
==== Boot from SRAM ====&lt;br /&gt;
PC Startadresse wird an 0x200001E0 direkt angesprungen.&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Hi&lt;br /&gt;
Da der interne FLASH der stm32f1x laut Datenblatt nur für 1000 Schreibvorgänge ausgelegt ist, kann mittels BOOT0 (High) und BOOT1 (High) auch aus dem zuvor mit dem Debugger (JTAG/SWD) beschriebenen SRAM booten. &lt;br /&gt;
Hierbei gilt zu beachten:&lt;br /&gt;
 VTOR auf die NVIC Tabelle im SRAM vor dem auslösen des ersten Interrupts remappen.&lt;br /&gt;
&lt;br /&gt;
 Um ein vergleichbares Startverhalten zum FLASH zu erreichen, empfiehlt es sich,&lt;br /&gt;
 0xF1E0F85F an 0x200001E0 zu schreiben. Diese implizite Ausführung von &amp;quot;ldr.w pc,&lt;br /&gt;
 [pc, #-0x01E0]&amp;quot; beim Start erzwingt ein laden der Startadresse von 0x20000004.&lt;br /&gt;
&lt;br /&gt;
==== Boot from SYSMEM (RS232, CAN und USB) ====&lt;br /&gt;
PC Startadresse wird von 0x1FFFF004 geladen&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Lo&lt;br /&gt;
Auch ohne JTAG lässt sich ein STM32 programmieren (Bootloader-Aktivierung). Dabei stehen, je nach CPU-Typ, verschiedene Möglichkeiten zur Verfügung:&lt;br /&gt;
* RS-232 (bisher alle STMs)&lt;br /&gt;
* USB (nur in bestimmten MCUs mit entsprechender Bootloader-Version und PIN-Anzahl, z.B. STM32F105/107)&lt;br /&gt;
* CAN (wie USB nur in bestimmten MCUs)&lt;br /&gt;
&lt;br /&gt;
3 zusätzliche Verbindungen müssen auf dem Board gepatcht werden. Für einen Test geht es auch mit Tastern für RESET und BOOT0.&amp;lt;br&amp;gt;&lt;br /&gt;
RESET=RTS (L-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT0=DTR (H-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT1=LOW&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Details sind hier im Forum: [http://www.mikrocontroller.net/topic/141711 STM32 Programmiertool]&lt;br /&gt;
&lt;br /&gt;
== Bewertung ==&lt;br /&gt;
=== Vorteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber ARM7:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Interrupt-Controller jetzt Teil des Prozessors (als Core Peripheral), die Vector Table ist jetzt eine echte Vektortabelle, keine Sprungliste wie bei ARM7. Durch Automatismen zwischen Core und NVIC (auto register save r0..r3, lr, sp, pc) bei Interrupt Entry wird eine deutlich schnellere Ausführungszeit bei Interrupts erreicht. Der Interrupt Code muss sich nicht mehr selbst um die Sicherung der o.g. Register kümmern und eine besondere Konfiguration der Handler im Compiler entfällt. Sind vor Beendigung einer ISR (d.h. Rücksprung zum User Code) weitere Interrupts pending, so werden diese ausgeführt, ohne dass eine komplette pop-push-sequenz der Register notwendig ist. Schön beschrieben ist es hier im [http://www.st.com/mcu/files/mcu/1221142709.pdf Insider&#039;s Guide] unter 2.4.5 / Seite 20.&lt;br /&gt;
* Thumb-2 Befehlssatz, deutlich schneller als Thumb-1 und ebenso kompakt&lt;br /&gt;
* Weniger Pins für Debugging benötigt durch SWD&lt;br /&gt;
* Mehr Hardware Breakpoints machen debuggen einfacher&lt;br /&gt;
* Software ist einfacher weil die Umschaltung zwischen ARM Mode und Thumb Mode wegfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber LPC1700 und LPC1300:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Flexiblere Gehäuseformen mit mehr Peripherie bei kleinen Gehäusen&lt;br /&gt;
* FW-Lib für alle STM32 gleich, alle AppNotes/Demos beziehen sich auf diese eine FW-Lib was die Entwicklung der eigenen Applikation sehr beschleunigt.&lt;br /&gt;
* Genauerer und flexiblerer ADC, insbesondere gegenüber LPC1300&lt;br /&gt;
* Flexiblere Varianten der Peripherie &amp;gt;&amp;gt; bei weniger einen deutlichen Preisvorteil&lt;br /&gt;
* ab 0,85 EUR (Stand 2010) Allerdings gibts den LPC1100 mit Cortex-M0 schon ab 0,65 $!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber SAM3/4:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fast alle Pins sind 5-Volt tolerant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber anderen &amp;quot;Kleinen&amp;quot; wie z.B. PIC, Atmel usw.&#039;&#039;&#039;&lt;br /&gt;
* nahezu gleicher Preis bei Hobby Anwendungen&lt;br /&gt;
* 32 Bit ohne Umwege in Assembler rechenbar&lt;br /&gt;
* Schnelle direkte Offset-Adressierung ermöglich effizienten Zugriff auf Stack-Variablen, lokal gespeicherte Flash-Konstanten, struct/Array-Elemente&lt;br /&gt;
* Einfache einheitliche Adressierung des gesamten Adressraums, d.h. Pointer auf Peripherieregister, RAM &amp;amp; Flash können exakt gleich behandelt werden, keinerlei Banking/Umschalt-Mechanismen erforderlich auch bei großem Flash/RAM&lt;br /&gt;
* Interrupt-Prioritäten und Prioritätsgruppen&lt;br /&gt;
* Effiziente Pointerarithmetik da Registerbreite=Adressbreite&lt;br /&gt;
* bessere Peripherie wie USB, Ethernet, Vielzahl an Timern&lt;br /&gt;
* der ARM-Core hat eine höhere Taktfrequenz und kann gleichzeitig mehr in weniger Takten berechnen&lt;br /&gt;
* Hardware-Division, bei einigen FPU zur effizienten float-Berechnung&lt;br /&gt;
* Mit größerem Flash/RAM verfügbar&lt;br /&gt;
* Code kann direkt aus dem RAM ausgeführt werden, Speicherschutz und privilegierter Ausführungsmodus können &amp;quot;Kernel&amp;quot;- vor &amp;quot;Anwendungs&amp;quot;-Code schützen, somit wird das dynamische Nachladen von Anwendungen aus externem Speicher effizient &amp;amp; sicher möglich&lt;br /&gt;
* ... und weitere 1000 Punkte ...&lt;br /&gt;
&lt;br /&gt;
=== Nachteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil gegenüber LPC1700:&#039;&#039;&#039;&lt;br /&gt;
* STM32F1xx: nur 72 MHz statt 100 MHz (LPC1759: 120 MHz) Taktfrequenz; STM32F2xx hat diesen Nachteil nicht (ebenfalls 120MHz, STM32F4xx mit 180MHz)&lt;br /&gt;
* Der LPC1700 besitzt deutlich mehr Mechanismen, um die Auswirkung der Waitstates des Flash-ROMs auf Code- und Datenzugriffe zu reduzieren und das bedeutet mehr Performance bei gleicher Taktfrequenz. Beim STM32F2 entfällt dieser Nachteil wohl aufgrund des ART Accelerators. &lt;br /&gt;
* Alle LPC1xxx haben 32 Bit Timer. Bei den STM32 haben das nur die STM32F2xx (2 Stück)&lt;br /&gt;
* I2S Einheit von ST hat keinen FIFO und im 24/32Bit Modus müssen 2x16Bit Halbwörter übertragen werden. Wobei allgemein bei neuen ARM Prozessoren die vorhandenen DMA-Kanäle (basierend auf eigenen BUS-Kanälen und Speicherzugriffen) FIFO in beliebiger Größe bedeutet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil für Hobby-Anwender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Nicht direkt &amp;quot;Steckbrettauglich&amp;quot;, da kein DIL Gehäuse verfügbar. Der ebay-Shop dipmicro führt jedoch sehr günstige Lötadapter für Umsetzung von LQFP48 auf DIP48. QFP64 in 0.5mm Pinabstand und nicht 0.8mm wie AVR&lt;br /&gt;
&lt;br /&gt;
* Viel Peripherie, Clocks müssen alle richtig eingestellt werden, ggf. Anpassung des Startup Codes usw.&lt;br /&gt;
** =&amp;gt; Daher nicht besonders gut für Mikrcontroller Anfänger/Einsteiger geeignet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Errata, Tipps und Tricks ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* AD-Wandler PA0: Im Errata steht, dass hier Fehler in der Wandlung entstehen könnten, also einen anderen Pin verwenden.&lt;br /&gt;
* CAN-Bus PD0/PD1: Remap geht erst ab der 100-Pin-Version. Steht im RM0008 unter 9.3.3.: &amp;quot;CAN1 alternate function remapping&amp;quot;. Alle Infos von RM0008 9.3.x sind interessant&lt;br /&gt;
* CAN und USB sind bei der F1 Serie nur bei der &amp;quot;◦Connectivity-Line&amp;quot; gleichzeitig nutzbar. Siehe Datenblätter.&lt;br /&gt;
* Mit internem RC-Oszillator kann die CPU mit maximal 64MHz betrieben werden. Mit einem externen Quarz sind dann 72MHz möglich.&lt;br /&gt;
* Für USB Betrieb muss die CPU mit 48MHz oder 72MHz betrieben werden (bei STM32F1xx).&lt;br /&gt;
* Der Idle Interrupt vom Usart wird zwar ausgelöst, aber nicht vom entsprechenden Statusflag angezeigt&lt;br /&gt;
* Der DMA fängt beim aktivieren immer von vorn an zu zählen, auch wenn er nur kurz angehalten wurde&lt;br /&gt;
* STM32F2xx hat kein Flash Size Register, bei STM32F4xx ist zwar ein flash Size Register beschrieben, kollidiert aber in der Adresse mit einem anderen Register&lt;br /&gt;
* Derivate mit internem EEPROM und nur einer Speicherbank haben das &amp;quot;Feature&amp;quot; bei write/erase des Data-Flashes (EEPROM) einen kompletten stall der code execution zu verursachen (inkl. ISR&#039;s, DMA). Desgleichen bei write/erase des internen Flash (ISP-routinen, EEPROM-Emulation).&lt;br /&gt;
* Der I2C hat diverse Fehler, welche im Errata des jeweiligen Modells (z.B. [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00238166.pdf STM32F105xx and STM32F107xx Errata sheet] ) zu finden sind. Workarounds hierzu finden sich in der Application Note [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00209826.pdf AN2824]. Am Besten benutzt man jedoch die I2C Communication peripheral application library (CPAL) von ST ([http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF258336 STSW-STM32127])&lt;br /&gt;
* [http://blog.frankvh.com/category/stm32/ weitere undokummentierte Features]&lt;br /&gt;
* Interrupt-Flags in Statusregistern der diversen Peripherals wie der Timer müssen zu &#039;&#039;&#039;Beginn&#039;&#039;&#039; (bzw. möglichst weit vor dem Return) der ISR zurückgesetzt werden, da die ISR sonst eventuell 2x ausgeführt wird ([http://www.mikrocontroller.net/topic/312393#new Siehe Forum]).&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== GCC ====&lt;br /&gt;
Um den GCC direkt zu verwenden (zB. mit selbstgebautem makefile), falls man das nicht von einer Entwicklungsumgebung machen lässt, siehe zunächst [[ARM GCC]]. STM32-spezifisches ist:&lt;br /&gt;
* Wird die [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] und ein Quarz verwendet, so muss noch per Präprozessor-Definition die Frequenz des Quarzes angegeben werden mittels z.B. -DHSE_VALUE=8000000 für 8MHz (wie auf dem STM32F4 Discovery).&lt;br /&gt;
&lt;br /&gt;
===== Startupcode &amp;amp; Linkerscript =====&lt;br /&gt;
* Damit der compilierte Code an den richtigen Stellen im Controller landet (d.h. dem Flash) muss man dem Linker ein Linkerscript mitgeben. Dies geht per &amp;quot;-T &#039;&#039;pfad_zum_linkerscript.ld&#039;&#039;&amp;quot; an den Linker-Befehl. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Linkerscript für die Atollic TrueSTUDIO IDE, dieses kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich das Script im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM324x7I_EVAL/stm32_flash.ld&amp;quot; des Archives.&lt;br /&gt;
* Damit beim Starten die richtigen Initialisierungen vorgenommen werden (wie globale Variablen und bei C++ Konstruktoren globaler Objekt-Instanzen) muss als erstes ein Startupcode laufen, der dann die main()-Funktion aufruft. Der Startupcode ist meistens in Assembler geschrieben, C-Code ist aber auch möglich. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Startupcode für die Atollic TrueSTUDIO IDE, dieser kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich der Code in Assemblerform im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f40xx.s&amp;quot; des Archives. Der Assemblercode kann per arm-none-eabi-as (Flags s.o.) assemblisiert werden, die resultierende .o -Datei normal mitgelinkt.&lt;br /&gt;
&lt;br /&gt;
Zusammen bieten die beiden Dateien der Anwendung ein Standard-C-Interface, d.h. man kann wie gewohnt globale Variablen verwenden und seinen Code in die main()-Funktion schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Tipps für Umsteiger von Atmel/PIC/8051 ===&lt;br /&gt;
* Prozessortakt hat unterschiedliche Taktquellen und eine PLL.&lt;br /&gt;
* Alle Peripheriemodule haben einen extra Clock, den man aktivieren muss.&lt;br /&gt;
* Wenn man z.B. einen UART benutzen möchte, so muss man den Clock vom UART, Alternate Function IO (AFIO) und dem GPIO-Port aktivieren.&lt;br /&gt;
* Ansonsten hat man nahezu doppelt so viele Möglichkeiten in den Peripheriemodulen.&lt;br /&gt;
* Interrupt-Flags müssen in der ISR selber gelöscht werden&lt;br /&gt;
* Forum zu [http://www.mikrocontroller.net/topic/175888 Interrupts vs. Events]&lt;br /&gt;
&lt;br /&gt;
=== Errata vom STM32F4xx die nicht im Errata von ST stehen ===&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267439#2788478 Aktivieren von DMA], wenn mehr als 3 DMA Kanäle aktiviert werden, kann es sein dass die nicht alle korrekt bedient werden. Auch klappt der DMA mit dem FSMC nicht immer zuverlässig. [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FWarning%20limit%20simultaneous%20DMAs%20to%202&amp;amp;FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&amp;amp;currentviews=811 siehe hier] [http://blog.frankvh.com/2012/01/13/stm32f2xx-stm32f4xx-dma-maximum-transactions/ und hier]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/260637#2700761 Nerviger Bug in &amp;quot;stm32f4xx.h&amp;quot;] Änderung Struktur GPIO_TypeDef&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/261690#2714754 Batterie wird leer gezogen], nur bei manchen Chips mit Rev. A&lt;br /&gt;
* [http://www.efton.sk/STM32/STM32F4xx_doc_errors.txt Liste von Dokumentations-Fehlern]&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Versandhäuser für Privatpersonen&lt;br /&gt;
* [http://www.reichelt.de/STM-Controller/2/index.html?;ACTION=2;LA=2;GROUPID=2950; Reichelt]&lt;br /&gt;
* [http://darisusgmbh.de/shop/index.php?cat=c2692_ARM-Cortex.html Darisus]&lt;br /&gt;
* [http://www.hbe-shop.de HBE (Farnell Programm für Private)] &lt;br /&gt;
* [http://www.sander-electronic.de/be00069.html Sander]&lt;br /&gt;
* [http://www.tme.eu/de/katalog/index.phtml#cleanParameters%3D1%26search%3DSTM32F10%26bf_szukaj%3D+ TME] &lt;br /&gt;
* [http://teske-electronics.de/index.php?cPath=3_9_53 Teske electronics]&lt;br /&gt;
* [http://de.rs-online.com/web/c/halbleiter/prozessoren-und-mikrocontroller/mikrocontroller/?sort-by=default&amp;amp;sort-order=default&amp;amp;applied-dimensions=4294417325&amp;amp;lastAttributeSelectedBlock=4294425895 RS-Online]&lt;br /&gt;
&lt;br /&gt;
Gewerblich liefern natürlich viele wie EBV, Mouser, Farnell, Digikey usw...&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Boards ===&lt;br /&gt;
&lt;br /&gt;
* [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=gruppe&amp;amp;id=14 Im Shop von Embedded Projects]&lt;br /&gt;
* [http://www.watterott.com/de/Boards-Kits/ARM/ARM-Cortex-M3 Cortex M3 bei Watterott]&lt;br /&gt;
* [http://www.raisonance.com/~primer-starter-kits__microcontrollers__tool~tool__T018:4enfvamuxbtp.html Primer und Primer2 von Raisonance]&lt;br /&gt;
* [http://www.sander-electronic.de/es0028.html Sander Electronic]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MP32F103-Stick:_Ein_Mini-Mikrocontroller-Board_mit_USB_und_bis_zu_4MB_Datenspeicher Artikel im Wiki, ARM mit USB und 4MB Speicher]&lt;br /&gt;
* [http://www.futurlec.com/STM32_Development_Board.shtml Futurlec Evalboard, ebenso Header-Board]&lt;br /&gt;
* [http://www.propox.com/products/t_174.html Propox, Header-Boards für 103R und 103V sowie Trägerplatine dafür]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Cortex_M3_OCM3U Cortex M3 Artikel im Wiki]&lt;br /&gt;
* [http://olimex.com/dev/index.html STM32 bei Olimex]&lt;br /&gt;
* [http://de.farnell.com/jsp/displayProduct.jsp?sku=1824325&amp;amp;action=view&amp;amp;CMP=GRHS-1000962 STM32Discovery bei Farnell] Mikrocontroller Board (STM32F100RBT6B) mit onboard USB-Programming Interface für ca. 12,50€&lt;br /&gt;
* [http://www.de.rs-online.com/web/p/products/7458434/ STM32Discovery bei RS-Components] 12,65 € +MwSt.&lt;br /&gt;
* [http://www.segor.de/#Q=STM32 VL DISCOVERY] STM32 Discovery bei Segor&lt;br /&gt;
* [http://www.watterott.com/de/STM32F4Discovery STM32F4DISCOVERY] STM32F4 Cortex M4 Controller mit JTAG-Debugger auf der Platine bei Watterott für 16,66EUR.&lt;br /&gt;
* [http://www.conrad.de/ce/de/product/443910/ STM32F4 Discovery Kit bei Conrad] 17,11 €&lt;br /&gt;
* [http://www.mcu-raisonance.com/~open4-development-platform__microcontrollers__tool~tool__T018:g65gu6ghg2n.html/ Open 4 oder auch genannt Evo-Primer]&lt;br /&gt;
* [http://www.wayengineer.com/index.php?main_page=index&amp;amp;cPath=50_66&amp;amp;page=1&amp;amp;sort=3a WayEngineer]&lt;br /&gt;
* [http://thinkembedded.ch/ST-STMicroelectronics:::24.html Im Thinkembedded Shop] in der Schweiz / DiscoveryF4, div. ETT und Olimex Boarde ab 20,18 CHF / 16,15 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://shop.myavr.de/ARM-Produktlinie/STM32F4-Discovery.htm?sp=article.sp.php&amp;amp;artID=200072 Im myAVR Shop] DiscoveryF4 mit möglichem Zubehör 16,45 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://www.keil.com/boards/cortexm.asp Keil/ARM Demoboards]&lt;br /&gt;
* [http://www.phytec.de Phytec]&lt;br /&gt;
* [http://shop.myavr.de/index.php?sp=artlist_kat.sp.php&amp;amp;katID=37 verschiedene ARM Produkte und Erweiterungen bei myAVR]&lt;br /&gt;
&lt;br /&gt;
== Weblinks, Foren, Communities, Tutorials ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/173753 Diskussion zum Artikel]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/mikrocontroller-elektronik?filter=ARM*+STM32*+Cortex* Suche im Forum]&lt;br /&gt;
* [https://my.st.com/public/STe2ecommunities/mcu/Lists/ARM%20CortexM3%20STM32/AllItems.aspx Forum auf der ST Homepage] &lt;br /&gt;
* [http://www.stm32circle.com/hom/index.php STM32 Community] &lt;br /&gt;
*[http://joe-c.de/pages/posts/einstieg_mikrocontroller_stm32f103_101.php Einstieg:  STM32board mit Kamera (deutsch)] &lt;br /&gt;
* [http://www.ebv.com/fileadmin/products/Press_Print/Brochures/Product_Brochures/EBV_Cortex%20Collection_V2.pdf Übersicht der Cortex Prozessoren und deren Hersteller (nicht nur ST, von EBV)]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/258652 Tutorial]&lt;br /&gt;
* [http://diller-technologies.de/stm32_wide.html STM32 Tutorial in Deutsch von Diller Technologies]&lt;br /&gt;
* [http://mySTM32.de STM32 C und C++ Tutorial in Deutsch ]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net STM32F4 Quellcode-Librarys und CooCox-Projekte in Deutsch ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:STM32| ]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=80179</id>
		<title>STM32</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=80179"/>
		<updated>2013-12-27T11:17:16Z</updated>

		<summary type="html">&lt;p&gt;176.94.41.122: /* Controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STM32 ist ein Mikrocontroller-Familie von [http://www.st.com/mcu/inchtml-pages-stm32.html ST] mit einer 32-Bit [http://www.arm.com/products/processors/cortex-m/index.php ARM Cortex-M0/M3/M4] CPU. Diese Architektur ist speziell für den Einsatz in Microcontrollern neu entwickelt und löst damit die bisherigen ARM7-basierten Controller weitestgehend ab. Den STM32 gibt es von ST in unzähligen Varianten mit variabler Peripherie und verschiedenen Gehäusegrößen und -formen. Durch die geringe Chipfläche des Cores ist es ST möglich, eine 32 Bit-CPU für weniger als 1&amp;amp;nbsp;€ anzubieten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:stm32F103xc.png|thumb|right|340px|Blockdiagramm STM32F103xC/D/E]]&lt;br /&gt;
&lt;br /&gt;
== STM32-Familien ==&lt;br /&gt;
&lt;br /&gt;
Bisher gibt es sieben STM32-Familien:&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1588.jsp STM32F0]&lt;br /&gt;
** Cortex M0&lt;br /&gt;
** Mikrocontroller zum Einstieg&lt;br /&gt;
** Bis 48MHz&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1169.jsp STM32F1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 72MHz&lt;br /&gt;
**Verschiedene Unterfamilien:&lt;br /&gt;
*** Connectivity line&lt;br /&gt;
*** Performance line&lt;br /&gt;
*** USB Access line&lt;br /&gt;
*** Access Line&lt;br /&gt;
*** Value line&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1575 STM32F2]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 120MHz&lt;br /&gt;
** Wie die STM32F1 Serie, Camera-Interface, 32-Bit Timer, Crypto-Engine...&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 72MHz&lt;br /&gt;
** Fast 12-bit 5 MSPS and precise 16-bit sigma-delta ADCs&lt;br /&gt;
** Touch sensing controller (TSC)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp STM32F4]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 180MHz&lt;br /&gt;
** Bis zu 2MB Flash&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295 STM32L1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Low Power &lt;br /&gt;
** mit LCD Treiber&lt;br /&gt;
** Bis 32MHz&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1581 STM32W]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** BIS 24MHz&lt;br /&gt;
** RF-MCU &lt;br /&gt;
[http://www.st.com/internet/mcu/class/1734.jsp Hier eine Übersicht zum Auswählen eines STM32Fxxx]&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
* Cortex-M0 / Cortex-M3 / Cortex-M4F Kern (mit FPU)&lt;br /&gt;
* 16KB ... 2MB  [[Flash-ROM]]&lt;br /&gt;
*  4KB ... 256KB [[Speicher#SRAM|SRAM]]&lt;br /&gt;
* 4KB [[Speicher#EEPROM|EEPROM]] (STM32L)&lt;br /&gt;
* SDRAM-Controller bei den [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1577/LN1806 STM32F42xxx und STM32F43xxx], bis 512 MByte externer SDRAM addressierbar&lt;br /&gt;
* 512 one-time programmable Bytes(STM32F2/4)&lt;br /&gt;
* [[IC-Gehäuseformen | Gehäuse]] 36 ... 216 Pins als QFN, LQFP und BGA&lt;br /&gt;
* Derzeit sind über &#039;&#039;&#039;250&#039;&#039;&#039; STM32 Derivate/Varianten verfügbar&lt;br /&gt;
* Bis 72MHz CPU-Takt, bis 120MHz beim STM32F2xx, bis 168/180 MHz beim STM32F4xx, wobei eine spezielle prefetch-hardware bis 120/168 MHz eine Geschwindigkeit erzielen soll, die 0 Wait-States entspricht. Der CPU-Takt wird über einen Multiplikator aus dem internen RC-Takt oder einem externen Quarz-Takt abgeleitet.&lt;br /&gt;
* Externes Businterface (nur bei Gehäusen ab 100 Pin und nur bei STM32F4, STM32F2 und STM32F1 Performance line)&lt;br /&gt;
* LCD Treiber für 8x40 Punkte (nicht beim STM32F2xx)&lt;br /&gt;
* TFT Treiber bei STM32F429 / STM32F439&lt;br /&gt;
* Spannungsbereich 1,65 ... 3,6V, nur eine Betriebsspannung nötig&lt;br /&gt;
* Temperaturbereich bis 125 °C&lt;br /&gt;
* Bis zu 140 IOs, viele davon [[Pegelwandler|5V-tolerant]]&lt;br /&gt;
* Interner, kalibrierter RC-Oszillator mit 8MHz (16MHz bei STM32F2/F4xx)&lt;br /&gt;
* Externer Quarz&lt;br /&gt;
* Real Time Clock mit eigenem Quarz und separater Stromversorgung&lt;br /&gt;
* Bis zu 16 [[Timer]], je Timer bis zu 4 IC/OC/PWM Ausgänge. Davon 2x Motion Control Timer (bei STM32F103xF/G)&lt;br /&gt;
* Systick Counter&lt;br /&gt;
* Bis zu 3 12-Bit [[AD-Wandler]] mit insgesamt 24 AD-Eingängen, integrierter [[Temperatursensor]], Referenzspannung Vrefint und VBatt Spannungsmessung (STM32F4xx)&lt;br /&gt;
* Bis zu 2 12-Bit [[DA-Wandler]] (bis zu 3 beim STM32F3xx)&lt;br /&gt;
* Bis zu 2 [[DMA]] Controller mit bis zu 12 Kanälen (16 beim STM32F2/4xx)&lt;br /&gt;
* Bis zu 2x [[I2C|I²C]]&lt;br /&gt;
* Bis zu 5x [[UART|USART]] mit LIN, IrDA und Modem Control (bis zu 8 beim STM32F2/F4xx)&lt;br /&gt;
* Bis zu 3x [[SPI]] (bis zu 6 beim STM32F4xx)&lt;br /&gt;
* Bis zu 2x [[I2S|I²S]]&lt;br /&gt;
* Bis zu 2x [[CAN#STMicroelectronics STM32 (Cortex M3/M4)|CAN]]&lt;br /&gt;
* Hardware [[CRC]] Unit, bei der STM32F3xx Serie mit einem einstellbaren Polynom &lt;br /&gt;
* Unique device ID register (96 Bits)&lt;br /&gt;
* RNG - Random Number Generator (STM32F2/4xx)&lt;br /&gt;
* Cryptographic Processor (CRYP) (STM32F2/4xx)&lt;br /&gt;
* Hash Processor (HASH) (STM32F2/4xx)&lt;br /&gt;
* Kamera-Interface (DCMI) (STM32F2/4xx)&lt;br /&gt;
* [[USB]] 2.0 Full Speed / OTG&lt;br /&gt;
* [[USB]] 2.0 Hi Speed OTG mit extra PHY-Chip (STM32F2/4xx)&lt;br /&gt;
* SDIO Interface (z.B. SD-Card Reader)&lt;br /&gt;
* Ethernet&lt;br /&gt;
* Watchdog mit Window-Mode&lt;br /&gt;
* Jedes Peripheriemodul ist separat einschaltbar, wodurch sich erheblich [[Ultra low power|Strom sparen]] lässt&lt;br /&gt;
* [[JTAG]] und SWD (Serial Wire Debug) Interface&lt;br /&gt;
* Bis zu 6 Hardware-Breakpoints für Debuggen&lt;br /&gt;
* und vieles mehr . . .&lt;br /&gt;
&lt;br /&gt;
== Struktur der Dokumentation: ==&lt;br /&gt;
Die Dokumentation der STM32 ist zwar umfangreicher und komplexer z.B. die der [[AVR]], enthält aber dennoch alle nötigen Informationen. Sie teilt sich auf in mehrere Dokumente.&lt;br /&gt;
Als Beispiel der Dokumentation soll stellvertretend der [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164486 STM32F103RC] genannt werden. Die Seite von ST beinhaltet alle nötigen Informationen passend zu diesem Prozessor.&lt;br /&gt;
&lt;br /&gt;
Diese Dokumente von ST beschreiben den Controller:&lt;br /&gt;
&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00191185.pdf STM32F103xC/D/E Datasheet] sind die speziellen Eigenschaften einer bestimmten Modellreihe beschrieben und die exakten Daten und Pinouts aufgeführt, sowie die Zuordnung Chipname - Flash/RAM-Größe. Die Peripheriemodule werden nur aufgeführt, nicht detailliert beschrieben.&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf Reference Manual (RM0008)] sind alle Peripheriemodule der jeweiligen STM32-Controllerfamilie im Detail beschrieben.&lt;br /&gt;
* Das [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html ARMv7M Architecture Reference Manual] beschreibt detailliert den Prozessorkern, wie das Exception Model, die CPU Instruktionen inklusive Encoding, etc.&lt;br /&gt;
* Das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00228163.pdf STM32 Cortex-M3 Programming Manual] ist eine Zusammenfassung des ARMv7M Architecture Reference Manual bezogen auf die STM32.&lt;br /&gt;
* Wer nicht die ST Firmware-Library verwendet, der benötigt zusätzlich das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00283419.pdf Flash Programming Manual] für die Betriebsart des Flash-ROMs, d.h. die frequenzabhängige Konfiguration der Waitstates.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten auch die [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00197763.pdf Errata Sheets] beachtet werden. Empfohlen sei auch die Appnote &amp;quot;[http://www.st.com/web/en/resource/technical/document/application_note/CD00164185.pdf AN2586 Getting started with STM32F10xxx hardware development]&amp;quot;.&lt;br /&gt;
Die jeweiligen Dokumentations-PDFs sind auf der Produktseite von ST eines jeden Mikrocontrollers verlinkt.&lt;br /&gt;
&lt;br /&gt;
== Hardware Zugriffs-Libraries ==&lt;br /&gt;
=== CMSIS ===&lt;br /&gt;
&lt;br /&gt;
Die CMSIS (ARM® &#039;&#039;&#039;C&#039;&#039;&#039;ortex™ &#039;&#039;&#039;M&#039;&#039;&#039;icrocontroller &#039;&#039;&#039;S&#039;&#039;&#039;oftware &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;S&#039;&#039;&#039;tandard) ist eine Library von ARM für den Zugriff auf die herstellerübergreifenden Funktionen des ARM-Cores. Hierzu gehört bei den Cortex-M4F-Cores auch die DSP und Floating-Point Funktionalität. Weiterhin existieren eine Zahl von Helferfunktionen für den NVIC, den Sys-Tick-Counter, sowie eine SystemInit-Funktion, welche sich um die PLL kümmert. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen des CMSIS-Standards ([http://www.onARM.com www.onARM.com]) wurden die Headerdateien standardisiert, der Zugriff auf die Register erfolgt per &#039;&#039;&#039;Peripheral-&amp;gt;Register&#039;&#039;&#039;. Die CMSIS C-Dateien bzw. Header enthalten auch Anpassungen für die verschiedenen Compiler. Die Portierung eines Real-Time-Betriebsystems sollte unter Verwendung der CMSIS, für Chips der verschiedenen Hersteller, stark vereinfacht möglich sein (z.B. einheitliche Adressen für Core-Hardware/Sys-Tick-Counter).&lt;br /&gt;
&lt;br /&gt;
Die CMSIS ist im Download der ‎STM32 Standard Peripheral Library enthalten. Die Compiler-Hersteller liefern eine jeweils zur ihrer Tool-Version passende bzw. geprüfte Library (incl. CMSIS) aus. Diese Libs können, gegenüber den Downloads beim Chip-Hersteller, auch ältere Version beinhalten.&lt;br /&gt;
&lt;br /&gt;
=== ‎STM32 Standard Peripheral Library ===&lt;br /&gt;
&lt;br /&gt;
ST bietet für jede Controller-Familie eine umfangreiche zur CMSIS passende Peripherie-Bibliothek. Alle Funktionen um die Peripherie zu benutzen sind gekapselt in einfache Strukturen und Funktionsaufrufe. Somit muss man sich nicht selbst um die Peripherie-Register kümmern. Diese Library und ihre Dokumentation setzen das grundlegende Verständnis der Funktion des jeweiligen Peripheriemoduls voraus, wie es die o.a. Referenz und diverse Appnotes vermitteln. Die Library beinhaltet außerdem für fast jede Peripherie mehrere Beispiele.&lt;br /&gt;
Für die USB Schnittstelle gibt es noch eine extra Library, genauso wie für Ethernet.&lt;br /&gt;
&lt;br /&gt;
Auf der &amp;quot;Design Resources&amp;quot; Seite der Produktseite von ST eines jeden STM32 Mikrocontrollers kann die Library für den jeweiligen Controller heruntergeladen werden, z.B. [http://www.st.com/web/en/catalog/tools/PF257890 hier] für den o.g. STM32F103RC.&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
Zur Programmierung der STM32 gibt es verschiedene Möglichkeiten, sowohl kommerzielle proprietäre als auch mit Freier Software.&lt;br /&gt;
&lt;br /&gt;
Der GCC (in seinen verschiedenen Binärdistributionen) ist der einzige ARM Compiler der [http://de.wikipedia.org/wiki/C%2B%2B11 C++11] unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Freie Software/Freeware ===&lt;br /&gt;
==== Selber zusammenstellen ====&lt;br /&gt;
Man nehme...:&lt;br /&gt;
* Eine Entwicklungsumgebung nach Wahl:&lt;br /&gt;
** [http://www.eclipse.org Eclipse] mit [http://www.eclipse.org/cdt/ C/C++ Development Tooling] und [http://gnuarmeclipse.livius.net/blog/ GNU ARM Plug-in] (Bei Verwendung vom GCC-ARM-Embedded als Toolchain &amp;quot;Sourcery G++ Lite&amp;quot; auswählen, dieser sieht für eclipse gleich aus) (Linux, Windows)&lt;br /&gt;
** [http://netbeans.org/ Netbeans] mit [http://plugins.netbeans.org/plugin/37426/gdbserver GDBserver-Plugin] (Linux, Windows)&lt;br /&gt;
** [http://www.kdevelop.org/ KDevelop] (Linux)&lt;br /&gt;
** [http://www.geany.org/ Geany] (Linux, Windows)&lt;br /&gt;
** Oder ein einfacher Texteditor&lt;br /&gt;
* Einen C,C++ Compiler:&lt;br /&gt;
** Eine der [[ARM_GCC#GCC_Bin.C3.A4rdistributionen|GCC-Binärdistributionen]], siehe auch [[#GCC|GCC]] (je nach Distribution Linux, Windows)&lt;br /&gt;
* Programmiersoftware zum Flashen des Target:&lt;br /&gt;
** [http://openocd.sourceforge.net/ OpenOCD] unterstützt viele Debug/Programmier-Adapter (Linux, Windows)&lt;br /&gt;
** [https://github.com/texane/stlink Texane stlink] funktioniert gut mit den ST-Link Adaptern wie sie zB. auf den STM32 Discovery Boards zu finden sind (Linux)&lt;br /&gt;
** Turtelizer2 oder andere JTAG Programmieradapter&lt;br /&gt;
** Bei Verwendung eines Segger J-Link, den [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf Segger GDB-Server] in Verbindung mit dem beim GCC mitgelieferten GDB (Linux, Windows)&lt;br /&gt;
&lt;br /&gt;
==== Komplette IDE&#039;s ====&lt;br /&gt;
* [http://www.codesourcery.com/sgpp/lite_edition.html Codesourcery Lite Edition]&lt;br /&gt;
* [http://www.coocox.org/ Coocox Eclipse IDE] kostenlose IDE für STM32F0 / F1 / F4 Hilfreiche Infos gibt es im [http://www.mikrocontroller.net/topic/214719?goto=new#2228482 hier] und [http://www.mikrocontroller.net/topic/214719?goto=new#2229943 hier] Forum&lt;br /&gt;
* [http://emide.org/ emIDE] kostenlose IDE die mit dem Segger J-LINK funktioniert.&lt;br /&gt;
* [http://www.emblocks.org EmBlocks] kostenlose IDE, Code::Blocks basiert, unterstützt STM32 L1/F0/F1/F2/F3/F4/W, integrierter GDB Debugger, Jlink/ST-Link, System view (Peripherie Register anzeigen) beim Debuggen, Project Wizzard&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Umgebungen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.keil.com/arm/mdk.asp Keil µVision] (Demo max. 32KB Code): Die sehr komfortable µVison IDE ist neben dem ARM Compiler per Menue auch für einen beliebigen GNU-Compiler konfigurierbar. Damit besteht das 32k-Limit nur noch für den integrierten Debugger / Simulator. µVison selbst kann kostenlos mit dem MDK-Evaluationkit heruntergeladen werden. [https://www.keil.com/arm/demo/eval/arm.htm#DOWNLOAD download]&lt;br /&gt;
* [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR-Embedded-Workbench] (Demo max. 32KB Code) [http://supp.iar.com/Download/SW/?item=EWARM-EVAL download]&lt;br /&gt;
* [http://www.isystem.com/products/itag winIDEAiTag] Keine Code Limitierung, GCC und Testwerkzeug beinhaltet. Läuft mit dem iTag Adapter.&lt;br /&gt;
* [http://www.raisonance.com Raisonance Ride7] (GCC Compiler, kostenlose Version auf Debugging von max. 32KB Code limitiert, keine Limitierung beim Complilieren)&lt;br /&gt;
* [http://www.atollic.com Atollic] (Lite Version (bis V2.3.0) ohne Code-Limit, auf GCC basierend. Die neueste Version ab V3 hat fast keine Beschränkungen mehr außer jetzt einen Code-Limit von 32kB. Außerdem werden jetzt die meisten ARM Familien unterstützt. )&lt;br /&gt;
* [http://www.rowley.co.uk/arm/ Rowley Crossworks] (Demo 30 Tage unbeschränkt, 150$ für nichtkommerzielle Nutzung, auf GCC basierend)&lt;br /&gt;
* [http://www.code-red-tech.com Code Red] (GCC basierend)&lt;br /&gt;
* [http://www.sisy.de/index.php?id=17&amp;amp;no_cache=1 SiSy ARM oder SiSy Micrcontroller++] (Demo verfügbar keine Gößenbegrenzung, basiert auf GNU-Compiler, grafische Programmierung mit UML möglich, integrierter Debugger)&lt;br /&gt;
* [http://www.comsytec.eu/epsdebugger.php EPS Debugger Plugin, für STM32 Development mit Code::Blocks]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials für diverse Tool-Kombinationen ===&lt;br /&gt;
[[STM32 Eclipse Installation|Windows,Linux, Eclipse + Yagarto/CodeSourcery + OpenOCD/ST-Link]]&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
** Eclipse&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/216554 Windows, Eclipse, codesourcery, st-link ]&lt;br /&gt;
*** [http://www.firefly-power.de/ARM/debugging.html Eclipse Plugin &amp;quot;GDB Hardware Debugging&amp;quot; mit OpenOCD]&lt;br /&gt;
** Code::Blocks&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/265600 Windows, Code::Blocks, STM32F4]&lt;br /&gt;
** STM32 mit EmBlocks&lt;br /&gt;
*** [http://www.emblocks.org/web/downloads-main Download EmBlocks]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=coHPJylnzC8 Video STM32 Project Wizzard in EmBlocks]&lt;br /&gt;
** Atollic TrueSTUDIO&lt;br /&gt;
*** [[STM32 LEDBlinken AtollicTrueStudio|Atollic TrueSTUDIO Installation + Demo]]&lt;br /&gt;
** MDK-ARM Lite mit Einstellungen für STM32F0/F4-Discovery Board&lt;br /&gt;
*** [https://www.keil.com/demo/eval/arm.htm KEIL MDK-ARM Download]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=RXOOxby5nns&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;index=1 Installations Video STM32F4 Discovery Board]&lt;br /&gt;
*** [https://www.youtube.com/watch?annotation_id=annotation_203294&amp;amp;feature=iv&amp;amp;index=4&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;src_vid=sN4gDZ7H8gw&amp;amp;v=BeZcQjXxk9A Einstellungen STM32F0 Discovery Board Video]&lt;br /&gt;
** SiSy ARM, STM32&lt;br /&gt;
*** Download: [http://www.sisy.de/index.php?id=59 SiSy DEMO] kein Begrenzung der Codegröße&lt;br /&gt;
*** [http://www.youtube.com/watch?v=84Y3jYLWYpo Videobeispiel]&lt;br /&gt;
* Ubuntu&lt;br /&gt;
** [http://www.seng.de/downloads/HowTo_ToolChain_STM32_Ubuntu.pdf Ubuntu, eclipse, Code Sourcery, OpenOCD] ([http://www.seng.de/downloads/HowTo_ToolChain_STM32_Ubuntu.odt Das Gleiche im bearbeitbaren ODT-Format])&lt;br /&gt;
** [http://fun-tech.se/stm32/index.php Ubuntu, Selbstcompilierter GCC, STM32/Cortex-M3]&lt;br /&gt;
** [http://thetoolchain.com The ToolChain] - Automatisch installierende Entwicklungsumgebung mit eigenen und externen Treibern, Unterstützt QtCreator als IDE, Flexibel erweiterbar über Shellskripte&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/214719 Tipps für Installation mit Eclipse]&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter===&lt;br /&gt;
* [http://www.segger.com/jlink-model-overview.html SEGGER J-LINK / J-TRACE] für u.a. alle ARM7/9/11, Cortex-M0/M1/M3/M4/A5/A8/A9/R4 als [http://www.segger.com/cms/j-link-edu.html NonComercial] J-LINK-EDU für ca. 60,- zu haben, läuft in µVision, IAR, GDB (Linux &amp;amp; Windows über einen eigenen [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf GDB-Server]), Keil, ...&lt;br /&gt;
* Keil [http://www.keil.com/ulinkme/ ULINK-ME], [http://www.keil.com/arm/ulink2/ ULINK2], [http://www.keil.com/arm/ulinkpro/ ULINK pro]&lt;br /&gt;
* [http://www.st.com/internet/evalboard/product/219866.jsp ST-LINK], [http://www.st.com/internet/evalboard/product/251168.jsp ST-LINK/V2]&lt;br /&gt;
* Jedes STM32 Discovery board hat einen ST-Link für Programmierung/Debugging per SWD on-board, welcher auch für eigene STM32 Target Hardware benutzt werden kann (ca. 12,- bis 19,-€, je nach Typ).&lt;br /&gt;
* [http://www.raisonance.com/~rlink-debugger-programmer__microcontrollers__tool~tool__T018:4cn9ziz4bnx6.html Raisonance RLink]&lt;br /&gt;
* [http://www.amontec.com Amontec]&lt;br /&gt;
* [http://www.hjtag.com H-JTAG] Personal Edition für ca. 60,- zu haben, läuft mit ADS, SDT, IAR, Vision und RVDS &lt;br /&gt;
* [http://www.isystem.com/products/itag iTag] für 50.- bei Amazon zu bestellen, oder als Eigenbau version (offenes Design) läuft mit der freien winIDEAiTag version (siehe oben)&lt;br /&gt;
&lt;br /&gt;
In der Regel haben die [[JTAG]] Adapter einen 20-Poligen Stecker, den man direkt auf die Demo-Boards, die auch einen 20-Poligen [[JTAG]]-Anschluss haben, einstecken kann. Die Pinbelegung ist genormt, siehe Artikel [[JTAG]]. Die Discovery-Boards haben keinen seperaten JTAG-Stecker, aber zumindest für das STM32F4 Discovery kann man sich leicht einen Adapter Pinheader-&amp;gt;JTAG Stecker selber bauen.&lt;br /&gt;
&lt;br /&gt;
Andere [[JTAG]] Adapter wie z.B. der ULink von Keil funktionieren nur mit dem Keil Compiler.&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter Open-Source===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ Olimex] ARM-USB-OCD (ca. 60.-, hat zusätzlich einen Spannungsausgen und einen COM Port)&lt;br /&gt;
* [http://www.oocdlink.com/ OOCDLink]&lt;br /&gt;
* [https://github.com/texane/stlink Stlink]&lt;br /&gt;
* [http://www.randomprojects.org/wiki/Floss-JTAG FLOSS-JTAG]&lt;br /&gt;
* [http://capitanio.org/mlink/ Linux Demo Code für die Discovery&#039;s ST-Link Programmierung]&lt;br /&gt;
&lt;br /&gt;
Der Controller hat auch einen fest eingebauten Boot-Lader. Damit läßt er sich auch über eine gewöhnliche serielle Schnittstelle programmieren, ohne dass man einen JTAG-Adapter benötigt. Dies erfordert ggf. entsprechende Konfiguration über die BOOTx-Pins und/oder die Option-Bytes.&lt;br /&gt;
&lt;br /&gt;
=== Demo-Projekte ===&lt;br /&gt;
&lt;br /&gt;
* Einführung in die GPIO Programmierung der STM32F10x und STM32F30x Prozessoren am Beispiel des STM32F3 Discovery Boards und Vergleich zur AVR IO Registerstruktur [http://www.mikrocontroller.net/topic/300472#new]&lt;br /&gt;
* [[prog_bsp_timer_1_timer2|Programmbeispiel für die Verwendung von Timer2 zusammen mit dem Interrupt]]&lt;br /&gt;
* [http://www.firefly-power.de/ARM/printf.html Printf() debugging mit minimalem Aufwand]&lt;br /&gt;
* [[STM32_BLDC_Control_with_HALL_Sensor|Programmbeispiel für BLDC Motoransteuerung (Timer 1) mit HALLSensor (Timer 3)]]&lt;br /&gt;
* [[Cortex_M3_OCM3U]]&lt;br /&gt;
* Martin Thomas hat ein umfangreiches Projekt erstellt, in der die Eclipse Einstellungen enthalten sind:&lt;br /&gt;
** [http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html &amp;quot;ChaN&#039;s FAT-Module with STM32 SPI&amp;quot;]&lt;br /&gt;
* [[STM32 USB-FS-Device Lib]]&lt;br /&gt;
* Modellbau-Sender auf STM32-Basis mit vielen Treibern [http://www.rcos.eu www.rcos.eu]&lt;br /&gt;
* Ausführliches [https://github.com/jkerdels/stm32edu Einstiegs-Tutorial] in Codeform für das [http://www.st.com/internet/evalboard/product/252419.jsp STM32F4 discovery board]&lt;br /&gt;
* [http://www.redacom.ch/keillab/ Schweizer Gondelbahnsteuerung über Webserver auf ETT STM32F ARM KIT Board in Keil RTOS] mit Webcam&lt;br /&gt;
* Die [http://ethernut.svn.sourceforge.net/viewvc/ethernut/trunk/ Ethernut SVN Version] unterstützt inzwischen viele STM32 Typen, viele Devices und einige STM32 Demoboards&lt;br /&gt;
&lt;br /&gt;
== Debug- und Trace-Interface (CoreSight™ Debug and Trace Technologie)==&lt;br /&gt;
&lt;br /&gt;
Übersicht über beide Funktionalitäten und den Schnittstellen:&lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_cs_core_sight.htm&lt;br /&gt;
&lt;br /&gt;
Die Coresight-Debug-Architektur ermöglicht ein nicht-invasives Debugging, d.h. es können während des Betriebes (meistens) ohne Beeinflussung des Prozessors Daten vom Speicher gelesen und in selbigen geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
=== Debugger Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Der Debugger-Teil besitzt drei Funktionen:&lt;br /&gt;
* Run Control: z.B. Programm-Start, Stopp und Einzel-Schritte.&lt;br /&gt;
* (Program) Break Points: Ein Programm hält an, wenn der Programm Counter eine bestimmte Programm-Adresse erreicht.&lt;br /&gt;
** Die maximale Anzahl der gleichzeitig möglichen Break Points ist begrenzt (z.B. 6 bei einem STM32).&lt;br /&gt;
** Die Anzahl der Break Points ist nahezu unbegrenzt, wenn ein Debugger über den Memory Access (s.u.) sogenannte Flash Break Points unterstützt. Dabei wird ein geladenes Programm im Flash umprogrammiert, um den Debugger anzuhalten. Diese Funktionalität ist meistens ein kostenpflichtiges Zusatz-Feature des Debugger-Herstellers. &lt;br /&gt;
** Beinhaltet keine Data Watch Funktionalität, welche im Trace-Teil (DWT) realisiert wird.&lt;br /&gt;
* Memory Access: Lesen und Schreiben von Speicheradressen. &lt;br /&gt;
** Diese Funktionalität beinhaltet keine direkte Flash-Programmierung. Der Programmiervorgang für einen Flash ist herstellerspezifisch und muss von dem verwendeten Debugger unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=== Trace Funktionen ===&lt;br /&gt;
Die Trace-Funktionalität wird in drei Funktionen aufgeteilt:&lt;br /&gt;
* ETM (Embedded Trace Macrocell): Optional, nicht jede CPU besitzt diese Hardware (Kostenfaktor, Austattung).&lt;br /&gt;
* ITM (Instrumentation Trace Macrocell): Über diesen Kanal kann ein vereinfachtes Trace des Core ermöglicht werden, sowie &amp;quot;printf-ähnlich&amp;quot; Daten über den ITM Channel 0 geschickt und im Debugger ausgegeben werden.&lt;br /&gt;
* DWT (Data Watchpoint &amp;amp; Trace Unit): &lt;br /&gt;
** Data Watch: 4 Access-Break-Points ( z.B. der Debugger bleibt stehen, wenn das Programm auf einen Speicher zugreift oder der Wert einer Variablen einen bestimmten Wert annimmt). &lt;br /&gt;
** Trace Unit: Programmverlauf (durch Lesen des Program Counters) und Interrupt Aufrufe verfolgen, sowie Zeitmessungen.&lt;br /&gt;
&lt;br /&gt;
Einige der Trace-Funktionalitäten können über die JTAG-Schnittstelle angesprochen werden. Die schnelle Trace-Funktionalität (mit 4 bit Parallel-Port) steht nur mit der erweiterten DEBUG + ETM Schnittstelle zur Verfügung. Im Gegensatz zum Debugger-Teil (Run Control, Break Points und Memory Access) werden Trace-Funktionen nicht von allen Debuggern unterstützt. Debugger mit der vollen Trace-Funktionalität kosten deutlich mehr.&lt;br /&gt;
&lt;br /&gt;
* Beispiele für Trace-Port-Aktivierungen für verschiedene Hersteller: http://www.keil.com/support/man/docs/jlink/jlink_capture_tracedata.htm&lt;br /&gt;
&lt;br /&gt;
Die Aktivierung des parallelen Trace-Ports erfordert, je nach CPU Hersteller, zusätzliche Debugger-Makros für die Aktivierung und Port-Freischaltung. Zusätzlich sind die Schnittstellenauswahl und Einstellung (Frequenzen) im Entwicklungs-Tool (IDE) wichtig, um erfolgreich den Programm-Verlauf &amp;quot;tracen&amp;quot; zu können.&lt;br /&gt;
&lt;br /&gt;
=== Debug und Trace-Schnittstellen ===&lt;br /&gt;
Als Debug Interface stehen zwei Varianten zur Auswahl:&lt;br /&gt;
* [[JTAG]]: Dafür sind mindestens 6 Steuerleitungen nötig. Unterstützt Device Chaining: Mehrere verbundene Geräte können mit einem Debugger/Programmer gleichzeitig angesteuert werden.&lt;br /&gt;
* SWD (Serial Wire Debug): Hier mindestens 2  Steuerleitungen (3 mit SWO, zzgl GND und 3,3V). Die SWD Schnittstelle ist in der Regel schneller und kann auch Funktionen aus dem Trace-Teil beinhalten (z.B. ITM, dafür wird der SWO-Pin benötigt). Device Chaining ist mit dieser Schnittstelle nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Standard-JTAG Steckerbelegungen: &lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm&lt;br /&gt;
&lt;br /&gt;
=== Der 10polige JTAG-Stecker von mmvisual ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe diesen Part in den Artikel [http://www.mikrocontroller.net/articles/JTAG#Der_10-polige_JTAG_Stecker_von_mmvisual JTAG] verschoben.&lt;br /&gt;
Hinzu gekommen ist die Adapterplatine 10-Polig auf Standard JTAG 20 Polig mit TTL/V24 Wandler. [http://www.mikrocontroller.net/articles/JTAG#Die_Adapterplatine Siehe hier.]&lt;br /&gt;
&lt;br /&gt;
== Hardware-Beschaltung ==&lt;br /&gt;
&lt;br /&gt;
Der STM32 benötigt für den Betrieb nur (Minimalbeschaltung):&lt;br /&gt;
&lt;br /&gt;
* VCC 2..3,3V (je nach Typ)&lt;br /&gt;
* AVCC 2..3,3V (sehr wichtig, der STM32 lässt sich ohne diese Spannung nicht programmieren)&lt;br /&gt;
* GND&lt;br /&gt;
* Reset Pin 100nF nach GND (ein Pull-Up Widerstand von ca. 40k ist intern vorhanden)&lt;br /&gt;
* [[#Bootmodi|Boot-Pins]]&lt;br /&gt;
&lt;br /&gt;
ansonsten nur ein paar einzelne Cs 100nF an VCC/GND.&lt;br /&gt;
&lt;br /&gt;
Um Programmieren zu können wird entweder noch die serielle Schnittstelle (Programmieren über den vorprogrammierten Bootloader) oder JTAG oder die SWD Schnittstelle benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Bootmodi ===&lt;br /&gt;
Unterschiedliche Bootmodi lassen sich mittels der PINs BOOT0 und BOOT1 auswählen . Siehe Application Note [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Attachments/18225/AN2606.pdf AN2606]. Ausser F1 besitzen neuere Familien ein SYSCFG_MEMR Register. In dieses Register kann man die gewünschten Boot0/1 Werte schreiben und nach einem Core-Reset (!= System_Reset) startet der Prozessor im gewünschten Mode. Eine Neu- bzw. Deinitialisierung der Peripherie empfiehlt sich! &lt;br /&gt;
&lt;br /&gt;
==== Boot from FLASH ====&lt;br /&gt;
Startadresse wird von 0x08000004 geladen&lt;br /&gt;
 BOOT0 Lo&lt;br /&gt;
 BOOT1 X &lt;br /&gt;
&lt;br /&gt;
==== Boot from SRAM ====&lt;br /&gt;
PC Startadresse wird an 0x200001E0 direkt angesprungen.&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Hi&lt;br /&gt;
Da der interne FLASH der stm32f1x laut Datenblatt nur für 1000 Schreibvorgänge ausgelegt ist, kann mittels BOOT0 (High) und BOOT1 (High) auch aus dem zuvor mit dem Debugger (JTAG/SWD) beschriebenen SRAM booten. &lt;br /&gt;
Hierbei gilt zu beachten:&lt;br /&gt;
 VTOR auf die NVIC Tabelle im SRAM vor dem auslösen des ersten Interrupts remappen.&lt;br /&gt;
&lt;br /&gt;
 Um ein vergleichbares Startverhalten zum FLASH zu erreichen, empfiehlt es sich,&lt;br /&gt;
 0xF1E0F85F an 0x200001E0 zu schreiben. Diese implizite Ausführung von &amp;quot;ldr.w pc,&lt;br /&gt;
 [pc, #-0x01E0]&amp;quot; beim Start erzwingt ein laden der Startadresse von 0x20000004.&lt;br /&gt;
&lt;br /&gt;
==== Boot from SYSMEM (RS232, CAN und USB) ====&lt;br /&gt;
PC Startadresse wird von 0x1FFFF004 geladen&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Lo&lt;br /&gt;
Auch ohne JTAG lässt sich ein STM32 programmieren (Bootloader-Aktivierung). Dabei stehen, je nach CPU-Typ, verschiedene Möglichkeiten zur Verfügung:&lt;br /&gt;
* RS-232 (bisher alle STMs)&lt;br /&gt;
* USB (nur in bestimmten MCUs mit entsprechender Bootloader-Version und PIN-Anzahl, z.B. STM32F105/107)&lt;br /&gt;
* CAN (wie USB nur in bestimmten MCUs)&lt;br /&gt;
&lt;br /&gt;
3 zusätzliche Verbindungen müssen auf dem Board gepatcht werden. Für einen Test geht es auch mit Tastern für RESET und BOOT0.&amp;lt;br&amp;gt;&lt;br /&gt;
RESET=RTS (L-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT0=DTR (H-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT1=LOW&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Details sind hier im Forum: [http://www.mikrocontroller.net/topic/141711 STM32 Programmiertool]&lt;br /&gt;
&lt;br /&gt;
== Bewertung ==&lt;br /&gt;
=== Vorteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber ARM7:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Interrupt-Controller jetzt Teil des Prozessors (als Core Peripheral), die Vector Table ist jetzt eine echte Vektortabelle, keine Sprungliste wie bei ARM7. Durch Automatismen zwischen Core und NVIC (auto register save r0..r3, lr, sp, pc) bei Interrupt Entry wird eine deutlich schnellere Ausführungszeit bei Interrupts erreicht. Der Interrupt Code muss sich nicht mehr selbst um die Sicherung der o.g. Register kümmern und eine besondere Konfiguration der Handler im Compiler entfällt. Sind vor Beendigung einer ISR (d.h. Rücksprung zum User Code) weitere Interrupts pending, so werden diese ausgeführt, ohne dass eine komplette pop-push-sequenz der Register notwendig ist. Schön beschrieben ist es hier im [http://www.st.com/mcu/files/mcu/1221142709.pdf Insider&#039;s Guide] unter 2.4.5 / Seite 20.&lt;br /&gt;
* Thumb-2 Befehlssatz, deutlich schneller als Thumb-1 und ebenso kompakt&lt;br /&gt;
* Weniger Pins für Debugging benötigt durch SWD&lt;br /&gt;
* Mehr Hardware Breakpoints machen debuggen einfacher&lt;br /&gt;
* Software ist einfacher weil die Umschaltung zwischen ARM Mode und Thumb Mode wegfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber LPC1700 und LPC1300:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Flexiblere Gehäuseformen mit mehr Peripherie bei kleinen Gehäusen&lt;br /&gt;
* FW-Lib für alle STM32 gleich, alle AppNotes/Demos beziehen sich auf diese eine FW-Lib was die Entwicklung der eigenen Applikation sehr beschleunigt.&lt;br /&gt;
* Genauerer und flexiblerer ADC, insbesondere gegenüber LPC1300&lt;br /&gt;
* Flexiblere Varianten der Peripherie &amp;gt;&amp;gt; bei weniger einen deutlichen Preisvorteil&lt;br /&gt;
* ab 0,85 EUR (Stand 2010) Allerdings gibts den LPC1100 mit Cortex-M0 schon ab 0,65 $!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber SAM3/4:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fast alle Pins sind 5-Volt tolerant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber anderen &amp;quot;Kleinen&amp;quot; wie z.B. PIC, Atmel usw.&#039;&#039;&#039;&lt;br /&gt;
* nahezu gleicher Preis bei Hobby Anwendungen&lt;br /&gt;
* 32 Bit ohne Umwege in Assembler rechenbar&lt;br /&gt;
* Schnelle direkte Offset-Adressierung ermöglich effizienten Zugriff auf Stack-Variablen, lokal gespeicherte Flash-Konstanten, struct/Array-Elemente&lt;br /&gt;
* Einfache einheitliche Adressierung des gesamten Adressraums, d.h. Pointer auf Peripherieregister, RAM &amp;amp; Flash können exakt gleich behandelt werden, keinerlei Banking/Umschalt-Mechanismen erforderlich auch bei großem Flash/RAM&lt;br /&gt;
* Interrupt-Prioritäten und Prioritätsgruppen&lt;br /&gt;
* Effiziente Pointerarithmetik da Registerbreite=Adressbreite&lt;br /&gt;
* bessere Peripherie wie USB, Ethernet, Vielzahl an Timern&lt;br /&gt;
* der ARM-Core hat eine höhere Taktfrequenz und kann gleichzeitig mehr in weniger Takten berechnen&lt;br /&gt;
* Hardware-Division, bei einigen FPU zur effizienten float-Berechnung&lt;br /&gt;
* Mit größerem Flash/RAM verfügbar&lt;br /&gt;
* Code kann direkt aus dem RAM ausgeführt werden, Speicherschutz und privilegierter Ausführungsmodus können &amp;quot;Kernel&amp;quot;- vor &amp;quot;Anwendungs&amp;quot;-Code schützen, somit wird das dynamische Nachladen von Anwendungen aus externem Speicher effizient &amp;amp; sicher möglich&lt;br /&gt;
* ... und weitere 1000 Punkte ...&lt;br /&gt;
&lt;br /&gt;
=== Nachteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil gegenüber LPC1700:&#039;&#039;&#039;&lt;br /&gt;
* STM32F1xx: nur 72 MHz statt 100 MHz (LPC1759: 120 MHz) Taktfrequenz; STM32F2xx hat diesen Nachteil nicht (ebenfalls 120MHz, STM32F4xx mit 180MHz)&lt;br /&gt;
* Der LPC1700 besitzt deutlich mehr Mechanismen, um die Auswirkung der Waitstates des Flash-ROMs auf Code- und Datenzugriffe zu reduzieren und das bedeutet mehr Performance bei gleicher Taktfrequenz. Beim STM32F2 entfällt dieser Nachteil wohl aufgrund des ART Accelerators. &lt;br /&gt;
* Alle LPC1xxx haben 32 Bit Timer. Bei den STM32 haben das nur die STM32F2xx (2 Stück)&lt;br /&gt;
* I2S Einheit von ST hat keinen FIFO und im 24/32Bit Modus müssen 2x16Bit Halbwörter übertragen werden. Wobei allgemein bei neuen ARM Prozessoren die vorhandenen DMA-Kanäle (basierend auf eigenen BUS-Kanälen und Speicherzugriffen) FIFO in beliebiger Größe bedeutet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil für Hobby-Anwender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Nicht direkt &amp;quot;Steckbrettauglich&amp;quot;, da kein DIL Gehäuse verfügbar. Der ebay-Shop dipmicro führt jedoch sehr günstige Lötadapter für Umsetzung von LQFP48 auf DIP48. QFP64 in 0.5mm Pinabstand und nicht 0.8mm wie AVR&lt;br /&gt;
&lt;br /&gt;
* Viel Peripherie, Clocks müssen alle richtig eingestellt werden, ggf. Anpassung des Startup Codes usw.&lt;br /&gt;
** =&amp;gt; Daher nicht besonders gut für Mikrcontroller Anfänger/Einsteiger geeignet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Errata, Tipps und Tricks ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* AD-Wandler PA0: Im Errata steht, dass hier Fehler in der Wandlung entstehen könnten, also einen anderen Pin verwenden.&lt;br /&gt;
* CAN-Bus PD0/PD1: Remap geht erst ab der 100-Pin-Version. Steht im RM0008 unter 9.3.3.: &amp;quot;CAN1 alternate function remapping&amp;quot;. Alle Infos von RM0008 9.3.x sind interessant&lt;br /&gt;
* CAN und USB sind bei der F1 Serie nur bei der &amp;quot;◦Connectivity-Line&amp;quot; gleichzeitig nutzbar. Siehe Datenblätter.&lt;br /&gt;
* Mit internem RC-Oszillator kann die CPU mit maximal 64MHz betrieben werden. Mit einem externen Quarz sind dann 72MHz möglich.&lt;br /&gt;
* Für USB Betrieb muss die CPU mit 48MHz oder 72MHz betrieben werden (bei STM32F1xx).&lt;br /&gt;
* Der Idle Interrupt vom Usart wird zwar ausgelöst, aber nicht vom entsprechenden Statusflag angezeigt&lt;br /&gt;
* Der DMA fängt beim aktivieren immer von vorn an zu zählen, auch wenn er nur kurz angehalten wurde&lt;br /&gt;
* STM32F2xx hat kein Flash Size Register, bei STM32F4xx ist zwar ein flash Size Register beschrieben, kollidiert aber in der Adresse mit einem anderen Register&lt;br /&gt;
* Derivate mit internem EEPROM und nur einer Speicherbank haben das &amp;quot;Feature&amp;quot; bei write/erase des Data-Flashes (EEPROM) einen kompletten stall der code execution zu verursachen (inkl. ISR&#039;s, DMA). Desgleichen bei write/erase des internen Flash (ISP-routinen, EEPROM-Emulation).&lt;br /&gt;
* Der I2C hat diverse Fehler, welche im Errata des jeweiligen Modells (z.B. [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00238166.pdf STM32F105xx and STM32F107xx Errata sheet] ) zu finden sind. Workarounds hierzu finden sich in der Application Note [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00209826.pdf AN2824]. Am Besten benutzt man jedoch die I2C Communication peripheral application library (CPAL) von ST ([http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF258336 STSW-STM32127])&lt;br /&gt;
* [http://blog.frankvh.com/category/stm32/ weitere undokummentierte Features]&lt;br /&gt;
* Interrupt-Flags in Statusregistern der diversen Peripherals wie der Timer müssen zu &#039;&#039;&#039;Beginn&#039;&#039;&#039; (bzw. möglichst weit vor dem Return) der ISR zurückgesetzt werden, da die ISR sonst eventuell 2x ausgeführt wird ([http://www.mikrocontroller.net/topic/312393#new Siehe Forum]).&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== GCC ====&lt;br /&gt;
Um den GCC direkt zu verwenden (zB. mit selbstgebautem makefile), falls man das nicht von einer Entwicklungsumgebung machen lässt, siehe zunächst [[ARM GCC]]. STM32-spezifisches ist:&lt;br /&gt;
* Wird die [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] und ein Quarz verwendet, so muss noch per Präprozessor-Definition die Frequenz des Quarzes angegeben werden mittels z.B. -DHSE_VALUE=8000000 für 8MHz (wie auf dem STM32F4 Discovery).&lt;br /&gt;
&lt;br /&gt;
===== Startupcode &amp;amp; Linkerscript =====&lt;br /&gt;
* Damit der compilierte Code an den richtigen Stellen im Controller landet (d.h. dem Flash) muss man dem Linker ein Linkerscript mitgeben. Dies geht per &amp;quot;-T &#039;&#039;pfad_zum_linkerscript.ld&#039;&#039;&amp;quot; an den Linker-Befehl. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Linkerscript für die Atollic TrueSTUDIO IDE, dieses kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich das Script im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM324x7I_EVAL/stm32_flash.ld&amp;quot; des Archives.&lt;br /&gt;
* Damit beim Starten die richtigen Initialisierungen vorgenommen werden (wie globale Variablen und bei C++ Konstruktoren globaler Objekt-Instanzen) muss als erstes ein Startupcode laufen, der dann die main()-Funktion aufruft. Der Startupcode ist meistens in Assembler geschrieben, C-Code ist aber auch möglich. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Startupcode für die Atollic TrueSTUDIO IDE, dieser kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich der Code in Assemblerform im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f40xx.s&amp;quot; des Archives. Der Assemblercode kann per arm-none-eabi-as (Flags s.o.) assemblisiert werden, die resultierende .o -Datei normal mitgelinkt.&lt;br /&gt;
&lt;br /&gt;
Zusammen bieten die beiden Dateien der Anwendung ein Standard-C-Interface, d.h. man kann wie gewohnt globale Variablen verwenden und seinen Code in die main()-Funktion schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Tipps für Umsteiger von Atmel/PIC/8051 ===&lt;br /&gt;
* Prozessortakt hat unterschiedliche Taktquellen und eine PLL.&lt;br /&gt;
* Alle Peripheriemodule haben einen extra Clock, den man aktivieren muss.&lt;br /&gt;
* Wenn man z.B. einen UART benutzen möchte, so muss man den Clock vom UART, Alternate Function IO (AFIO) und dem GPIO-Port aktivieren.&lt;br /&gt;
* Ansonsten hat man nahezu doppelt so viele Möglichkeiten in den Peripheriemodulen.&lt;br /&gt;
* Interrupt-Flags müssen in der ISR selber gelöscht werden&lt;br /&gt;
* Forum zu [http://www.mikrocontroller.net/topic/175888 Interrupts vs. Events]&lt;br /&gt;
&lt;br /&gt;
=== Errata vom STM32F4xx die nicht im Errata von ST stehen ===&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267439#2788478 Aktivieren von DMA], wenn mehr als 3 DMA Kanäle aktiviert werden, kann es sein dass die nicht alle korrekt bedient werden. Auch klappt der DMA mit dem FSMC nicht immer zuverlässig. [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FWarning%20limit%20simultaneous%20DMAs%20to%202&amp;amp;FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&amp;amp;currentviews=811 siehe hier] [http://blog.frankvh.com/2012/01/13/stm32f2xx-stm32f4xx-dma-maximum-transactions/ und hier]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/260637#2700761 Nerviger Bug in &amp;quot;stm32f4xx.h&amp;quot;] Änderung Struktur GPIO_TypeDef&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/261690#2714754 Batterie wird leer gezogen], nur bei manchen Chips mit Rev. A&lt;br /&gt;
* [http://www.efton.sk/STM32/STM32F4xx_doc_errors.txt Liste von Dokumentations-Fehlern]&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Versandhäuser für Privatpersonen&lt;br /&gt;
* [http://www.reichelt.de/STM-Controller/2/index.html?;ACTION=2;LA=2;GROUPID=2950; Reichelt]&lt;br /&gt;
* [http://darisusgmbh.de/shop/index.php?cat=c2692_ARM-Cortex.html Darisus]&lt;br /&gt;
* [http://www.hbe-shop.de HBE (Farnell Programm für Private)] &lt;br /&gt;
* [http://www.sander-electronic.de/be00069.html Sander]&lt;br /&gt;
* [http://www.tme.eu/de/katalog/index.phtml#cleanParameters%3D1%26search%3DSTM32F10%26bf_szukaj%3D+ TME] &lt;br /&gt;
* [http://teske-electronics.de/index.php?cPath=3_9_53 Teske electronics]&lt;br /&gt;
* [http://de.rs-online.com/web/c/halbleiter/prozessoren-und-mikrocontroller/mikrocontroller/?sort-by=default&amp;amp;sort-order=default&amp;amp;applied-dimensions=4294417325&amp;amp;lastAttributeSelectedBlock=4294425895 RS-Online]&lt;br /&gt;
* [http://shop.myavr.de/index.php?sp=artlist_kat.sp.php&amp;amp;katID=37 myAVR]&lt;br /&gt;
&lt;br /&gt;
Gewerblich liefern natürlich viele wie EBV, Mouser, Farnell, Digikey usw...&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Boards ===&lt;br /&gt;
&lt;br /&gt;
* [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=gruppe&amp;amp;id=14 Im Shop von Embedded Projects]&lt;br /&gt;
* [http://www.watterott.com/de/Boards-Kits/ARM/ARM-Cortex-M3 Cortex M3 bei Watterott]&lt;br /&gt;
* [http://www.raisonance.com/~primer-starter-kits__microcontrollers__tool~tool__T018:4enfvamuxbtp.html Primer und Primer2 von Raisonance]&lt;br /&gt;
* [http://www.sander-electronic.de/es0028.html Sander Electronic]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MP32F103-Stick:_Ein_Mini-Mikrocontroller-Board_mit_USB_und_bis_zu_4MB_Datenspeicher Artikel im Wiki, ARM mit USB und 4MB Speicher]&lt;br /&gt;
* [http://www.futurlec.com/STM32_Development_Board.shtml Futurlec Evalboard, ebenso Header-Board]&lt;br /&gt;
* [http://www.propox.com/products/t_174.html Propox, Header-Boards für 103R und 103V sowie Trägerplatine dafür]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Cortex_M3_OCM3U Cortex M3 Artikel im Wiki]&lt;br /&gt;
* [http://olimex.com/dev/index.html STM32 bei Olimex]&lt;br /&gt;
* [http://de.farnell.com/jsp/displayProduct.jsp?sku=1824325&amp;amp;action=view&amp;amp;CMP=GRHS-1000962 STM32Discovery bei Farnell] Mikrocontroller Board (STM32F100RBT6B) mit onboard USB-Programming Interface für ca. 12,50€&lt;br /&gt;
* [http://www.de.rs-online.com/web/p/products/7458434/ STM32Discovery bei RS-Components] 12,65 € +MwSt.&lt;br /&gt;
* [http://www.segor.de/#Q=STM32 VL DISCOVERY] STM32 Discovery bei Segor&lt;br /&gt;
* [http://www.watterott.com/de/STM32F4Discovery STM32F4DISCOVERY] STM32F4 Cortex M4 Controller mit JTAG-Debugger auf der Platine bei Watterott für 16,66EUR.&lt;br /&gt;
* [http://www.conrad.de/ce/de/product/443910/ STM32F4 Discovery Kit bei Conrad] 17,11 €&lt;br /&gt;
* [http://www.mcu-raisonance.com/~open4-development-platform__microcontrollers__tool~tool__T018:g65gu6ghg2n.html/ Open 4 oder auch genannt Evo-Primer]&lt;br /&gt;
* [http://www.wayengineer.com/index.php?main_page=index&amp;amp;cPath=50_66&amp;amp;page=1&amp;amp;sort=3a WayEngineer]&lt;br /&gt;
* [http://thinkembedded.ch/ST-STMicroelectronics:::24.html Im Thinkembedded Shop] in der Schweiz / DiscoveryF4, div. ETT und Olimex Boarde ab 20,18 CHF / 16,15 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://shop.myavr.de/ARM-Produktlinie/STM32F4-Discovery.htm?sp=article.sp.php&amp;amp;artID=200072 Im myAVR Shop] DiscoveryF4 mit möglichem Zubehör 16,45 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://www.keil.com/boards/cortexm.asp Keil/ARM Demoboards]&lt;br /&gt;
* [http://www.phytec.de Phytec]&lt;br /&gt;
* [http://shop.myavr.de/index.php?sp=artlist_kat.sp.php&amp;amp;katID=37 verschiedene ARM Produkte und Erweiterungen bei myAVR]&lt;br /&gt;
&lt;br /&gt;
== Weblinks, Foren, Communities, Tutorials ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/173753 Diskussion zum Artikel]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/mikrocontroller-elektronik?filter=ARM*+STM32*+Cortex* Suche im Forum]&lt;br /&gt;
* [https://my.st.com/public/STe2ecommunities/mcu/Lists/ARM%20CortexM3%20STM32/AllItems.aspx Forum auf der ST Homepage] &lt;br /&gt;
* [http://www.stm32circle.com/hom/index.php STM32 Community] &lt;br /&gt;
*[http://joe-c.de/pages/posts/einstieg_mikrocontroller_stm32f103_101.php Einstieg:  STM32board mit Kamera (deutsch)] &lt;br /&gt;
* [http://www.ebv.com/fileadmin/products/Press_Print/Brochures/Product_Brochures/EBV_Cortex%20Collection_V2.pdf Übersicht der Cortex Prozessoren und deren Hersteller (nicht nur ST, von EBV)]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/258652 Tutorial]&lt;br /&gt;
* [http://diller-technologies.de/stm32_wide.html STM32 Tutorial in Deutsch von Diller Technologies]&lt;br /&gt;
* [http://mySTM32.de STM32 C und C++ Tutorial in Deutsch ]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net STM32F4 Quellcode-Librarys und CooCox-Projekte in Deutsch ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:STM32| ]]&lt;/div&gt;</summary>
		<author><name>176.94.41.122</name></author>
	</entry>
</feed>