XMC4500: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
 
(48 dazwischenliegende Versionen von 18 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Wettbewerb Header}}
{{Wettbewerb Header}}
Die Controller XMC4500 von Infeneon basieren auf einem 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 Pherepherie.  Die Controller laufen alle auf einem internen Systemtakt von 120MHz. In diesem Artikel soll dieser Controllertyp mit Hilfe des "XMC4500 Relaxed Kit/ Lite Kit", welches beide Developmendboards von Infineon sind, vorgestellt werden. Auch die von Infineon dazu angebotene Entwicklungsumgebung DAVE3 wird kurz vorgestellt.  
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 "XMC4500 Relax Kit/ Lite Kit", welches beide Developmentboards von Infineon sind, vorgestellt werden. Auch die von Infineon dazu angebotene Entwicklungsumgebung DAVE3 wird kurz vorgestellt.  
= Technische Daten im Überblick =
= Technische Daten im Überblick =
[[Bild:Relaxed (Lite) Kit.JPG|thumb|rechts|500px|"Relaxed Kit" (oben) und "Relaxed Lite Kit" (unten)]]
[[Bild:Relaxed (Lite) Kit.JPG|thumb|rechts|500px|"Relax Kit" (oben) und "Relax Lite Kit" (unten)]]
Ein kurzer Überblick über die On-Chip Pherepherie mit den wichtigsten Mermalen
Ein kurzer Überblick über die On-Chip-Peripherie mit den wichtigsten Merkmalen
*3.3V Operating Voltage  
*3.3 V Operating Voltage  
*32-Bit Architektur ARM Cortex M4 CPU
*32-Bit-Architektur ARM Cortex M4 CPU
*FPU
*FPU
*120MHz Systemtakt
*120 MHz Systemtakt
*512kB-1024kB Flashmemory, je nach Typ
*512 kB - 1024 kB Flashmemory, je nach Typ
**Auf den "XMC4500 Relaxed (Lite) Kits" ist die Variante mit 1MB Flash verbaut.
**Auf den "XMC4500 Relax (Lite) Kits" ist die Variante mit 1 MB Flash verbaut.
*128kB oder 512kB RAM
*128 kB oder 160 kB RAM
**Auf den "XMC4500 Relaxed (Lite) Kits" ist die Variante mit 512KB RAM verbaut.
**Auf den "XMC4500 Relax (Lite) Kits" ist die Variante mit 160 kB RAM verbaut.
*Maximal 1GB RAM über natives externes RAM-Interface adressierbar  
*Maximal 1 GB RAM über natives externes RAM-Interface adressierbar  
*Zwei Programmstacks  
*Zwei Programmstacks  
**Verwendung umschaltbar, Verwendung eines OS einfacher.
**Verwendung umschaltbar, Verwendung eines OS einfacher.
Zeile 21: Zeile 21:
**PHY nicht integriert, Anbindung über RMII-Interface
**PHY nicht integriert, Anbindung über RMII-Interface
**Der komplette Frame wird von der Hardware generiert
**Der komplette Frame wird von der Hardware generiert
*USB2.0, sowohl als Host, als auch als Slave
*USB 2.0, sowohl als Host, als auch als Slave
*5 USIC--> Universeller Serieller Interface Kanal für SPI, I²C,UART, etc
*5 USIC: Universeller, serieller Interface-Kanal für SPI, I²C, UART, etc.
**Einstellbare Framelänge von bis zu 64 Bit
**Einstellbare Framelänge von bis zu 64 Bit
**Flexibles CRC-Modul, Prüfsummen können von der Hardware generiert werden
**Flexibles CRC-Modul, Prüfsummen können von der Hardware generiert werden
Zeile 28: Zeile 28:
**11-Bit oder 29-Bit Objekt Indentifier  
**11-Bit oder 29-Bit Objekt Indentifier  
**maximal 64 Objekt Indentifier definierbar
**maximal 64 Objekt Indentifier definierbar
**3 eigenständige CAN Module  
**3 eigenständige CAN-Module  
*SD/MMC-Card Interface mit internem 512Byte FIFO
*SD/MMC-Card Interface mit internem 512-Byte-FIFO
**4Bit Interface
**4-Bit-Interface
*Bis zu 12 DMA Kanäle
*Bis zu 12 DMA-Kanäle
*12Bit 8 Kanal ADC
*4 12-Bit-8-Kanal-ADCs 
**OVP durch Komperatoren an den Eingängen
**OVP durch Komperatoren an den Eingängen
**Programmierbarer Gain
**Programmierbarer Gain
**Verbindung mit dem DMA möglich  
**Verbindung mit dem DMA möglich  
*12Bit DAC mit FIFO
*12-Bit DAC mit FIFO
*Delta-Sigma Demodulator
*Delta-Sigma-Demodulator
*2 Timer-Module mit jeweils 4 Kanälen
*2 Timer-Module mit jeweils 4 Modulen mit jeweils 4 Timern
**Diverse verschiedene Modi, unter anderem Compare-und Capture Mode, kopplung an externe Signale möglich
**Intsgesamt 32 Timer
**Bis zu 64-Bit PWM (HRPWM)
**Diverse verschiedene Modi, unter anderem Compare-und-Capture-Mode, Kopplung an externe Signale möglich
**Eigener Prescaller für jeden Kanal  
**Bis zu 64 Bit PWM (HRPWM)
**Deadtime Modus für Brückensteuerungen  
**Eigener Prescaler für jeden Kanal  
*POSIF--> Position Interface Unit für Drehencoder
**Deadtime-Modus für Brückensteuerungen  
*POSIF: Position Interface Unit für Drehencoder
**Kopplung an Timer-Module möglich
**Kopplung an Timer-Module möglich
*GPIOs mit anpassbarem Schaltverhalten, bzw Flankencharakteristik
*GPIOs mit anpassbarem Schaltverhalten, bzw. Flankencharakteristik
**Push-Pull oder Open Collector
**Push-pull oder Open Collector
**Pull Up oder Pull Down Widerstand zuschaltbar
**Pull-up- oder Pull-down-Widerstand zuschaltbar
**Tri-State Modus
**Tri-State-Modus
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&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&fileId=db3a304335b504400135bdca7ed86742 Dukomentation] über die allgemeinen Eigenschaften der XMC4500 Controllerserie und die unterschiedlichen Varianten.
Dies sind die wesentlichen Merkmale des XMC4500-Controllertyps, 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&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&fileId=db3a304335b504400135bdca7ed86742 Dokumentation] über die allgemeinen Eigenschaften der XMC4500-Controllerserie und die unterschiedlichen Varianten.


= Das XMC4500 Relaxed Kit/Relaxed Lite Kit =
= Das XMC4500 Relax Kit/Relax Lite Kit =
==Allgemeines==
==Allgemeines==
[[Bild:Wichtige Elemente XMC4500.JPG|thumb|rechts|250px|Die wesentlichen Elemtente auf dem XMC4500 "Relaxed (Lite) Kit"]]
[[Bild:Wichtige Elemente XMC4500.JPG|thumb|rechts|250px|Die wesentlichen Elemtente auf dem XMC4500 "Relax (Lite) Kit"]]
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. Praktischer Weise 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.  
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.  
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 Verbundung zum Programmieren oder Debuggen wieder hergestellt werden.  
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*4 poligen Header kann die Verbindung zum Programmieren oder Debuggen wiederhergestellt werden.  


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.   
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.   


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.<br>
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.<br>


==Bezugsquellen und Kosten==
==Bezugsquellen und Kosten==
Die beiden Developmentboadrs sind im wesentlichen leider schwer erhältlich, nur wenige der großen Distributoren haben welche auf Lager. Gefunden habe ich die Boads zu den normalen Preisen von etwa 10€+MwSt. für das "Relaxed Lite Kit" und etwa 30€+MwSt. für das "Relaxed Kit" bei diesen Distributoren:
Die beiden Developmentboards 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 "Relax Lite Kit" und etwa 30€+MwSt. für das "Relax Kit" bei diesen Distributoren:
*Mouser: [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_V1/?qs=sGAEpiMZZMsPA1KxyASVZLKMJHcHfbVb "Relaxed Kit"] [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_LITE_V1/?qs=sGAEpiMZZMsPA1KxyASVZDJJB6HCuCyi "Relaxed Lite Kit"] ''Stand 3/2013''
*Mouser: [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_V1/?qs=sGAEpiMZZMsPA1KxyASVZLKMJHcHfbVb "Relax Kit"] [http://de.mouser.com/ProductDetail/Infineon-Technologies/KIT_XMC45_RELAX_LITE_V1/?qs=sGAEpiMZZMsPA1KxyASVZDJJB6HCuCyi "Relax Lite Kit"] ''Stand 3/2013''
*myAVR: [http://shop.myavr.de/ARM-Produktlinie/XMC4500%20Relax%20Lite%20Kit.htm?sp=article.sp.php&artID=200120 "Relax Lite Kit"]
 
Die Boards werden beide vom Hersteller Hitex angeboten.
Hitex:http://www.ehitex.de/cortex-development/xmc4000?sCoreId=65de769a6c30c181ab899fcf7bcfcd3c


Hat man die Möglichkeit, als Firma und/oder mit Gewerbeschein zu bestellen, so kann man bei dem von Infieon vorgeschlagenen Distributor hitex bestellen: <br>
Hat man die Möglichkeit, als Firma und/oder mit Gewerbeschein zu bestellen, so kann man bei dem von Infieon vorgeschlagenen Distributor hitex bestellen: <br>
*[http://www.ehitex.de/cortex-development/xmc4000/448/xmc4500-relax-kit "Relaxed Kit"][http://www.ehitex.de/cortex-development/xmc4000/447/xmc4500-relax-lite-kit "Relaxed Lite Kit"]
*[http://www.ehitex.de/cortex-development/xmc4000/448/xmc4500-relax-kit "Relax Kit"][http://www.ehitex.de/cortex-development/xmc4000/447/xmc4500-relax-lite-kit "Relax Lite Kit"]
Aus urheberrechtlichen Gründen können die die Schaltpläne und Layout hier nur verlinkt werden:
Aus urheberrechtlichen Gründen können die Schaltpläne und das Layout hier nur verlinkt werden:
*[http://www.infineon.com/dgdl/Board_Users_Manual_XMC4500_Relax_Kit-V1_R1.1_released.pdf?folderId=db3a3043133ffd30011343fd894b018d&fileId=db3a30433acf32c9013adf6b97b112f9 User's Manual]<br>
*[http://www.infineon.com/dgdl/Board_Users_Manual_XMC4500_Relax_Kit-V1_R1.1_released.pdf?folderId=db3a3043133ffd30011343fd894b018d&fileId=db3a30433acf32c9013adf6b97b112f9 User's Manual]<br>
*[http://www.infineon.com/dgdl/PCB_Sources_Eagle_XMC4500_Relax_V1.zip?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433afc7e3e013afe95a5a40e7a PCB-Dateien im eagle-Format]
*[http://www.infineon.com/dgdl/PCB_Sources_Eagle_XMC4500_Relax_V1.zip?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433afc7e3e013afe95a5a40e7a PCB-Dateien im eagle-Format]


== Unterschiede zwischen dem "Relaxed Kit" und dem "Relaxed Lite Kit" ==
== Unterschiede zwischen dem "Relax Kit" und dem "Relax Lite Kit" ==
Die Unterschiede zwischen dem "Relaxed Kit" und dem "Relaxed Lite Kit" kurz zusammen gefasst:
Die Unterschiede zwischen dem "Relax Kit" und dem "Relax Lite Kit" kurz zusammen gefasst:
{| {{Tabelle}}
{| {{Tabelle}}
|- bgcolor="#d0d0ff"
|- bgcolor="#d0d0ff"
!colspan="4"| Unterschiede zwischen dem "Relaxed Kit" und dem "Relaxed Lite Kit"
!colspan="4"| Unterschiede zwischen dem "Relax Kit" und dem "Relax Lite Kit"
|- bgcolor="#e8e8ff"
|- bgcolor="#e8e8ff"
! Hardware || "Relaxed Kit" || "Relaxed Lite Kit" || Nachbestückbar?
! Hardware || "Relax Kit" || "Relax Lite Kit" || Nachbestückbar?
|-
|-
|Ethernet ||align="center"|Ja ||align="center"| Nein ||Schwer bis unmöglich, da der Ethernetcontroller im QFN24 Gehäuse verbaut ist.
|Ethernet ||align="center"|Ja ||align="center"| Nein ||Schwer bis unmöglich, da der Ethernetcontroller im QFN24 Gehäuse verbaut ist.
Zeile 83: Zeile 88:
|Micro-SD|| align="center"| Ja||align="center"|Nein ||Gut möglich, jedoch müssen Bauteile in Baugröße 0603 und 0402 verlötet werden.
|Micro-SD|| align="center"| Ja||align="center"|Nein ||Gut möglich, jedoch müssen Bauteile in Baugröße 0603 und 0402 verlötet werden.
|-
|-
|RTC-Quarz||align="center"| Ja ||align="center"|Nein ||Der Quarz ist leicht zu verlöten, es müssen aber auch zwei 0402 Kondensatoren verlötet werden.
|RTC-Quarz||align="center"| Ja ||align="center"|Nein ||Der Quarz ist leicht zu verlöten, es müssen jedoch zwei 0402 Kondensatoren verlötet werden.
|-
|-
|4Mbit SPI-Flash||align="center"|Ja ||align="center"| 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.
|32-Mbit SPI-Flash||align="center"|Ja ||align="center"| 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.
|-
|-
|}
|}


==Nachbestückung==
==Nachbestückung==
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 "Relaxed Kit" doch schon ziemlich viel, da die Bauteile für das was verwenden will nur etwa 5€ kosten.
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 "Relax Kit" ziemlich viel, da die Bauteile für das was verwenden will nur etwa 5€ kosten.
Selbiges gilt für den 4Mbit SPI-Flash. Mit etwas Lötgeschick ist es ohne weiteres möglich, ein "Relaxed Lite Kit" aufzurüsten. Die dafür notwendigen Bauteile beschränken sich im wesentlichen auf Standartbauteile:
Selbiges gilt für den 32Mbit SPI-Flash. Mit etwas Lötgeschick ist es ohne weiteres möglich ein "Relax Lite Kit" aufzurüsten. Die dafür notwendigen Bauteile beschränken sich im wesentlichen auf Standardbauteile:
*micro-SD Card:
*micro-SD Card: [[Bild:MicroSD-SPI-Flash.jpg|thumb|300px|rechts|Der alternative SD-Card Halter und der SPI-Flash sind nachbestückt worden.]]
**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]
**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.
**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. --> Bild
**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.
*RTC-Quarz:
*RTC-Quarz:
**Bei dem Quarz selber handelt es sich um einen speziellen Quarz von Epson, der unter anderem bei Digikey erhältlich ist, wo er aber nicht immer auf Lager ist: [http://www.digikey.de/product-detail/de/MC-306%2032.768K-E3:ROHS/SER2417CT-ND/1532560 Quarz]
**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]
**Die üblichen Anschwingkondensatoren sind auch hier vorhanden, zwei 0402 15pF Kondensatoren.
**Die üblichen Anschwingkondensatoren sind auch hier vorhanden, zwei 0402 15pF Kondensatoren.
*SPI-Flash:
*SPI-Flash:
**Der Flash selber ist unter anderem bei Farnell erhältlich:[http://de.farnell.com/jsp/displayProduct.jsp?sku=1972442&action=view&CMP=GRHB-FINDCHIPS1-1006506 SPI-Flash].Dabei handelt es sich um einen NOR-Flash von Spansion "S25FL032P0XMFI011".[http://www.spansion.com/Support/Datasheets/S25FL032P_00.pdf Datenblatt]
**Der Flash ist unter anderem bei Farnell erhältlich:[http://de.farnell.com/jsp/displayProduct.jsp?sku=1972442&action=view&CMP=GRHB-FINDCHIPS1-1006506 SPI-Flash]. Dabei handelt es sich um einen NOR-Flash von Spansion "S25FL032P0XMFI011". [http://www.spansion.com/Support/Datasheets/S25FL032P_00.pdf Datenblatt]
**Dazu kommt das übliche Hühnerfutter, in diesem Fall ein 0402 100nF Kondensator und 3 0402 10K Widerstände.
**Dazu kommt das übliche Hühnerfutter, in diesem Fall ein 0402 100nF Kondensator und 3 0402 10K Widerstände.


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 Equiepment und lässt sich von Würth eine Ethernetbuchse schenken, so ist eine Nachbestückung möglich. Der Vollständigkeit halber wird diese Baugruppe auch behandelt. [[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]]  
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.  
*Bauteile:
*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]]  
**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).
**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).
**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.
**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 kulant 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&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].
**Quarz: 25MHz Quarz, passen tut zum Beispiel der [http://www.reichelt.de/index.html?ACTION=3;ARTICLE=101043;SEARCH=25,000000-MT Quarz von Reichelt]
**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]
**Widerstände:  
**Widerstände:  
***2* 0603 120 Ohm  (R201,R207)
***2* 0603 120 Ohm  (R201,R207)
Zeile 119: Zeile 124:
***2  BLM18PG600 (L200,L201)
***2  BLM18PG600 (L200,L201)
***2  BAT54-02V  (D200,D201)
***2  BAT54-02V  (D200,D201)
An die Standartbauteile werden keine speziellen Anforderungen gestellt, lediglich R204 sollte eine möglichst kleine Toleranz haben (<=1%).
An die Standardbauteile werden keine speziellen Anforderungen gestellt, lediglich R204 sollte eine möglichst kleine Toleranz haben (<=1%).


= DAVE3 =
= DAVE3 =
== Allgemeines ==
== Allgemeines ==
[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 Ifineon bereitgestellte IDE unter anderem für die XMC4500 Controller und basiert auf Eclipse. Neben den Standartfunktionen 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.<br>
[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.<br>
Die IDE selber kann auf der Seite von Infineon [http://www.infineon.com/cms/en/product/promopages/aim-mc/DAVE_3_Download.html herrunter geladen] werden, zudem gibt es ein [http://www.movingimage24.com/video_369288?width=640&height=395&player=35&scwm=2&chapter=0&overlays=1&cbarPlayPauseFlag=1&cbarTrackFlag=1&cbarTimeTotalFlag=1&cbarTimeDurationFlag=1&cbarvolumeBarFlag=1&cbarFullScreenFlag=1&qs=1&adbtn=1&adbtn1=1&adbtn5=1&bg=c1d2e2&fg=336699&ctcb1=336699&ctcb2=e10030&ctcb3=7c7c7c&ctcb4=c1d2e2&ctcb7=dae5e3&ctab1=000000&ctab2=ffffff&ctab3=abbbd0&wvm=3&start=0&volume=100&loadtime=0&wmode=transparent&fupdate=1&cwm=0&ctp=0&stillimg=0&plang=default&qd=3 Video] von Ifineon über die Installation, das jedoch relativ dürftig ausfällt, wenn es darum geht, das gezeigte zu erklären. Die Größe des Installerpaktes beträgt in etwa 246MB.
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&height=395&player=35&scwm=2&chapter=0&overlays=1&cbarPlayPauseFlag=1&cbarTrackFlag=1&cbarTimeTotalFlag=1&cbarTimeDurationFlag=1&cbarvolumeBarFlag=1&cbarFullScreenFlag=1&qs=1&adbtn=1&adbtn1=1&adbtn5=1&bg=c1d2e2&fg=336699&ctcb1=336699&ctcb2=e10030&ctcb3=7c7c7c&ctcb4=c1d2e2&ctcb7=dae5e3&ctab1=000000&ctab2=ffffff&ctab3=abbbd0&wvm=3&start=0&volume=100&loadtime=0&wmode=transparent&fupdate=1&cwm=0&ctp=0&stillimg=0&plang=default&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.
Im großen und ganzen macht DAVE3 einen recht aufgeräumten Eindruck, ist aber relativ recourcenaufwändig, da die IDE JAVA benutzt.
*RAM-Auslastung: (Windows 7) 229MB.
Es handelt sich hier bei um ein komplettes Paket, es müssen für die Funktionalität der IDE keine Plugins mehr nachinstaliert werden.
;<u>Syntax Highlighting:</u>
*Das Syntax Highlighting in der DAVE 3 IDE ist eindeutig, jedoch nicht so aufdringlich wie im aktuellen AVR Studio (Version 6).
**Die Farben sind standartmäßig nicht so grell eingestellt, wie im AVR Studio und sind dementsprechend besser lessbar.
**Zueinander gehörige Klammern werden markiert
**Schleifen und Abfragen werden hervorgehoben
**Klammern werden automatisch bei diversen Strukturen eingefügt
**Eine Autovervollständigung für Variablen und Konstanten gibt es nicht
Als seht angenehm, bzw praktisch fällt die vollständige Liste aller Konstanten, Funktionen und globale Varibalen, die von DAVE 3 angezeigt wird auf.
Aus der Liste können Schnellzugriffe auf alle aufgeführten Objekte ausgeführt werden, was besonders für größere Programme sehr praktisch ist. Lokale Varibalen werden nicht in der Liste angezeigt. Zudem verfügt die IDE über die Möglichkeit Updates automatisch zu laden und zu installieren. Das selbe gilt für das Updaten von Include-Bibliothelen und Apps. Zu dieser Funktionalität kommt noch der interne Dateimanager hinzu, der eine gute Übersicht über alle verwendeten Datein bietet.<br>
Etwas unschön fällt auf, das die IDE bei manchen Aufgaben, besonders beim Starten sehr langsam ist.


== DAVE Apps==
== DAVE Apps==
[[Bild:DAVE-APP Screenshot.JPG|thumb|rechts|200px|Die UART02-App, alle Einstellungen können in diesem Fenster gemacht werden.]]
[[Bild:DAVE-APP Screenshot.JPG|thumb|rechts|200px|Die UART02-App, alle Einstellungen können in diesem Fenster gemacht werden.]]
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 nicht mehr Hardwaremodule benansprucht werden, als wirklich vorhanden sind. Der wesentliche Vorteil dieser Programmierung ist, das sie sehr schnell und effizient ist, da die Apps im wesentlichen gut dokumentiert und das Konfigurationsmenü übersichtlich und intuitiv ist. <br>
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. <br>
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 fertigen Webserver oder einen BLCD-Motorcontroller, gut ausgebaut.
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.
Auf Beispiele wird in diesem Artikel verzichtet, da das Quickstart-Tutorial von Infineon bereits alle Fragen und Ansätze klärt, bzw bietet.
Auf Beispiele wird in diesem Artikel verzichtet, da das Quickstart-Tutorial von Infineon bereits alle Fragen klärt und Ansätze bietet.
<br>
<br>
Ein Quick-Start-Tutorial über die Verwendung gibt es von Infineon [http://www.infineon.com/dgdl?folderId=db3a3043134dde6001134ef5f8ff0281&fileId=db3a304336797ff901367daea1a847d0 hier].
Ein Quick-Start-Tutorial für die Verwendung gibt es von Infineon [http://www.infineon.com/dgdl?folderId=db3a3043134dde6001134ef5f8ff0281&fileId=db3a304336797ff901367daea1a847d0 hier].


== Programmieren und Debuggen des "XMC4500 Relaxed (Lite) Kit"==
== Programmieren und Debuggen des "XMC4500 Relax (Lite) Kit"==
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 biete 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..<br>
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..<br>
Programmiert wird der Controller über [[JTAG]].
Programmiert wird der Controller über [[JTAG]].
;<u>Nachteile des On-Board Programmer und Debuggers</u>
;<u>Nachteile des On-Board Programmers und Debuggers</u>
Die Abload-Rate zum Controller ist relativ bescheiden, was bei kleineren Programmen noch nicht so tragisch ist, aber bei größeren Quellcodes wird dieß schon zu einer unschönen Tatsache. 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.
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.
<br>Für den On-Board-Debugger wird das [http://www.movingimage24.com/video_369288?width=640&height=395&player=35&scwm=2&chapter=0&overlays=1&cbarPlayPauseFlag=1&cbarTrackFlag=1&cbarTimeTotalFlag=1&cbarTimeDurationFlag=1&cbarvolumeBarFlag=1&cbarFullScreenFlag=1&qs=1&adbtn=1&adbtn1=1&adbtn5=1&bg=c1d2e2&fg=336699&ctcb1=336699&ctcb2=e10030&ctcb3=7c7c7c&ctcb4=c1d2e2&ctcb7=dae5e3&ctab1=000000&ctab2=ffffff&ctab3=abbbd0&wvm=3&start=0&volume=100&loadtime=0&wmode=transparent&fupdate=1&cwm=0&ctp=0&stillimg=0&plang=default&qd=3 hier]ab Minute 5.50 beschrieben. Ähnlich wird dies bei anderen Geräten ablaufen.
<br>Für den On-Board-Debugger wird das [http://www.movingimage24.com/video_369288?width=640&height=395&player=35&scwm=2&chapter=0&overlays=1&cbarPlayPauseFlag=1&cbarTrackFlag=1&cbarTimeTotalFlag=1&cbarTimeDurationFlag=1&cbarvolumeBarFlag=1&cbarFullScreenFlag=1&qs=1&adbtn=1&adbtn1=1&adbtn5=1&bg=c1d2e2&fg=336699&ctcb1=336699&ctcb2=e10030&ctcb3=7c7c7c&ctcb4=c1d2e2&ctcb7=dae5e3&ctab1=000000&ctab2=ffffff&ctab3=abbbd0&wvm=3&start=0&volume=100&loadtime=0&wmode=transparent&fupdate=1&cwm=0&ctp=0&stillimg=0&plang=default&qd=3 hier] ab Minute 5.50 beschrieben. Ähnlich wird dies bei anderen Geräten ablaufen.
 
= Vorwort zur On-Chip Perepherie =
Die On-Chip Perepherie der XMC4500 Controllerserie ist sehr stark auf eine allgemeine Flexibilität getrimmt. So können die Ein-und Ausgänge der Hardwaremodule auf verschiedene Pins gemapped werden, was auch während der Laufzeit wieder geändert werden kann. Zudem ist es möglich, mehrere Module mit einem Pin zu verbinden. Eine komplette Liste mit allen Möglichkeitden der GPIOs ist im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 2585 zu finden. Neben den besonderen Merkmalen, wie den USIC-Module und den Timer-Modulen, speziell die High Resolution PWM und weitere (SD/MMC-Interface, etc) sind noch mehrere andere Perepherie-Eimheiten vorhanden, wie USB, CAN, ADCs und den DAC. Diese werden in diesem Artikel bis auf den ADC nicht behandelt, da diese Module auch in vielen anderen ARM-basierten Controllern vorhanden sind. Im Abschnitt über die Perepherie werden also nur einige besondere Module behandelt, auch da sonst dieser Artikel sehr lang werden würde. Auch werden nicht alle Möglichkeiten der einzelnen Module beleuchtet, die wichtigen Informationen sollten aber nicht unterschlagen werden.<br>
<br>
Die bereits angesprochene Möglichkeit die Eingangs-und Ausgangspins variabel zu wählen, ist im Prinzip bei allen Hardwaremodulen gleich. Die Prozedur wird aber in allen drei Kapiteln über die Hardwaremodule (USIC, ADC, Timer) angesprochen, da die Funktionsweise Unterschiede aufweist.
 
= GPIOs =
== Allgemeines ==
Die <b>G</b>eneral<b>P</b>urpose<b>I</b>nputs/<b>O</b>utputs der XMC4500 Controllerfamilie bieten diverse Möglichkeiten und Funktionen. So gibt es verschiede Ausgangstreiber mit unterschiedlichen Schaltcharacteristika, auf die auch besonderes Augenmerk gelegt werden soll. Man spricht in diesem Zusammenhang von unterschiedlichen PAD-Klassen. Die wesentlichen Merkmale im Überblick:
*GPIOs mit anpassbarem Schaltverhalten, bzw Flankencharakteristik
**Push-Pull oder Open Collector
**Pull Up oder Pull Down Widerstand zuschaltbar
**Tri-State Modus
Alle Konfigurationen, ob Eingang oder Ausgang und welche Zusatz funktionen genutzt werden, werden über ein Bitfeld konfiguriert.<br>
Zuerst aber die Registerübersicht:
{| {{Tabelle}} 
|-bgcolor="#d0d0ff"
! colspan="3"| Registerübersicht
|-bgcolor="#e8e8ff"
! style="width:17%" align="left"|Registername !!align="center" style="width:43%" |Aufbau!! align="center" style="width:40%" |Funktion
|-
| IOCR (0,4,8,12)<br> <b>I</b>nput/<b>O</b>utput <b>C</b>ontrol <b>R</b>egister
|| Es gibt vier dieser Register, wobei jeweils vier Pins pro Register konfiguriert werden können. Um dabei Rechenzeit zu spraren, befindet sich das Bitfeld für die Konfiguration in jeweils einem Byte. <br>
{| {{Tabelle}}
|-
|<b>Bit-Nummer</b>||31||30||29||28||27||26||25||24||23||22||21||20||19||18||17||16
|-
|<b>Bitfeld</b>|| colspan="5" align="center"|Pin 15/11/7/3||colspan="3" align="center"| DC|| colspan="5" align="center"| Pin 14/10/6/2||colspan="3" align="center"| DC
|-
|<b>Bit-Nummer</b> ||15||14||13||12||11||10||9||8||7||6||5||4||3||2||1||0
|-
|<b>Bitfeld</b>|| colspan="5" align="center"| Pin 13/9/5/1||colspan="3" align="center"| DC|| colspan="5" align="center"| Pin 12/8/4/0||colspan="3" align="center"| DC
|-
|} DC: Don't care
<br>
Ein Port hat maximal 16 Pins, wobei diese nicht immer alle vorhanden sein müssen. Intsgesamt gibt es 7 normale Ports (Port0-6) und zwei analoge Ports, welche nur als digitale oder analoge Eingänge genutzt werden können. Je nach Gehäuse Variante sind die Ports mehr oder weniger vollständig. In der BGA und in der LQFP-Gehäuse Variante stehen die meisten PortPins zur Verfügung. Auf dem XMC4500 "Relaxed (Lite) Kit" ist die LQFP100-Gehäuse Variante verbaut, es sind also deutlich weniger IOs verfügbar. Eine Übersicht, wie viele IOs an welchem Port zur Verfügung stehen gibt es im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 2549.
|| In den jeweiligen Bitfeldern für die einzelnen Pins wird das Verhalten des GPIOs konfiguriert. Es stehen dabei mehrere Möglichkeiten zur Auswahl:
*Direkter Input
**Pull Up-und Pull Down Widerstand können dazu geschatet werden
*Invertierter Input
**Pull Up-und Pull Down Widerstand können dazu geschatet werden
*Open Drain Ausgang
**Je nach Pad-Klasse unterschiedliche Flanken und Treiber selektierbar
*Push-Pull Ausgang
**Je nach Pad-Klasse unterschiedliche Flanken und Treiber selektierbar
Die einzelnen Bitmuster sind im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 2565 und 2566 zu finden. Auf die Unterschiedlichen Pad-Klassen wird bei der Beschreibung des PD Registers eingegangen.
|-
| PDR (1,0)<br> <b>P</b>ad <b>D</b>river Mode <b>R</b>egister
||
{| {{Tabelle}}
|-
|<b>Bit-Nummer</b>||31||30||29||28||27||26||25||24||23||22||21||20||19||18||17||16
|-
|<b>Bitfeld</b>||align="center"|NC||colspan="3" align="center"| Pin 15/7|| align="center"| NC||colspan="3" align="center"| Pin 14/6 ||align="center"|NC||colspan="3" align="center"| Pin 13/6||align="center"|NC||colspan="3" align="center"| Pin 12/5
|-
|<b>Bit-Nummer</b> ||15||14||13||12||11||10||9||8||7||6||5||4||3||2||1||0
|-
|<b>Bitfeld</b>||align="center"| NC||colspan="3" align="center"| Pin 11/4 ||  align="center"| NC ||colspan="3" align="center"| Pin 10/3||align="center"| NC||colspan="3" align="center"| Pin 9/2 || align="center"| NC ||colspan="3" align="center"| Pin 8/0
|-
|} DC: Don't care <br>
Es gibt intsgesamt drei verschiedene Pad-Klassen: (<b> A1, A1+, A2</b>), wobei die Klasse A2 die Beste ist. Zu den elektrischen Parametern gibt es von Infineon eine extra [http://www.infineon.com/dgdl/xmc4500_ds_v1+0_2013_01.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a304335b504400135bdca7ed86742 Dokumentation] auf Seite 39-42. <br>
Die meisten Möglichkeiten hat die Pad-Klasse A2, die neben den schnellsten Schaltzeiten auch drei verschiedene Treiber anbietet. Für den stärksten Treiber können zudem drei verschiede Schaltflanken gewählt werden. Diese werden im weiteren Verlauf dieses Artikels noch genauer untersucht. Eine Übersicht, welcher Pin welcher Pad-Klasse zugeordnet ist, findet man im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 2579 bis 2581.
|| Die verschiedenen Pad-Klassen im Überblick:
*A1:
**Rise Time/ Fall Time:
*** Schwacher Treiber: 150ns
*** Mittlerer Treiber: 50ns
**Ausgangskapperzität max.: 10pF
*A1+:
**Rise Time/ Fall Time:
*** Schwacher Treiber: 150ns
*** Mittlerer Treiber: 50ns
*** Starker Treiber, langsame Flanke: 28ns
*** Starker Treiber, weiche Flanke: 16ns
**Ausgangskapperzität max.: 10pF
*A2:
**Rise Time /Fall Time:
*** Schwacher Treiber: 150ns
*** Mittlerer Treiber: 50ns
*** Starker Treiber, weiche Flanke: 16ns
*** Starker Treiber, mittlerere Flanke: 7ns
*** Starker Treiber, scharfe Flanke: 3.7ns
**Ausgangskapperzität max.: 10pF
Für alle Anstiegs-und Abfallzeiten gilt, das es sich hierbei um Maximalwerte handelt. <br>
Die Bitmuster für die jeweilige Kofiguration findet man im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 2567.
|-
| PDISC <br> <b>P</b>in Function <b>D</b>eci<b>s</b>ion <b>C</b>ontrol Register
|| <b>Dieses Register ist nur für die Input-Only Ports, Port14 und Port15 relevant. </b>
{| {{Tabelle}}
|-
|<b>Bit-Nummer</b>||31||30||29||28||27||26||25||24||23||22||21||20||19||18||17||16
|-
|<b>Bitfeld</b>|| colspan="16" align="center"|NC
|-
|<b>Bit-Nummer</b> ||15||14||13||12||11||10||9||8||7||6||5||4||3||2||1||0
|-
|<b>Bitfeld</b>||P15||P14||P13||P12||P11||P10||P9||P8||P7||P6||P5||P4||P3||P2||P1||P0
|-
|} DC: Don't care <br>
[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] Seite 2570
|| Die jeweiligen Bits aktivieren (0) oder deaktivieren (1) den digitalen Einagsteil der Pins. Ist der digitale Teil deaktiviert, so kann der Pin für den ADC genutzt werden.
|-
| OUT
||
{| {{Tabelle}}
|-
|<b>Bit-Nummer</b>||31||30||29||28||27||26||25||24||23||22||21||20||19||18||17||16
|-
|<b>Bitfeld</b>|| colspan="16" align="center"|NC
|-
|<b>Bit-Nummer</b> ||15||14||13||12||11||10||9||8||7||6||5||4||3||2||1||0
|-
|<b>Bitfeld</b>||P15||P14||P13||P12||P11||P10||P9||P8||P7||P6||P5||P4||P3||P2||P1||P0
|-
|} DC: Don't care <br>
[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] Seite 2572
|| In diesem Register werden die Ausgangpegel für die einzelnen Pins bestimmt. Durch das setzen des Bits das zu dem jeweiligen Pin gehört, wird dieser auf HIGH gesetzt. Das löschen dieses Bits setzt den Pin wieder auf LOW. <br>
Eine deutlich elegantere Varinate ist es jedoch, das OMR zu nutzen. <br>
Im Deep Sleep Mode bestimmt das OUT-Register welcher definierter Pegel von der Hardware bei der Abfrage eines Pins eingelesen wird. Dies soll den Controller vor falschen Signalen im Deep Sleep Mode schützen.
|-
| IN
||
{| {{Tabelle}}
|-
|<b>Bit-Nummer</b>||31||30||29||28||27||26||25||24||23||22||21||20||19||18||17||16
|-
|<b>Bitfeld</b>|| colspan="16" align="center"|NC
|-
|<b>Bit-Nummer</b> ||15||14||13||12||11||10||9||8||7||6||5||4||3||2||1||0
|-
|<b>Bitfeld</b>||P15||P14||P13||P12||P11||P10||P9||P8||P7||P6||P5||P4||P3||P2||P1||P0
|-
|} DC: Don't care <br>
[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] Seite 2574
|| Über dieses Register wird der aktuelle Pegel an dem jeweiligen Pin abgefragt. Diese Möglichkeit bleibt auch bestehen, wenn der Pin als Ausgang konfiguriert ist. So ist es möglich, über Software nachzurpüfen ob der Pin den gewünschten Pegel auch angenommen hat.
|-
| OMR <br> <b>O</b>utput <b>M</b>odification<b>R</b>egister
||
{| {{Tabelle}}
|-
|<b>Bit-Nummer</b>||31||30||29||28||27||26||25||24||23||22||21||20||19||18||17||16
|-
|<b>Bitfeld</b>||P15||P14||P13||P12||P11||P10||P9||P8||P7||P6||P5||P4||P3||P2||P1||P0
|-
|<b>Bit-Nummer</b> ||15||14||13||12||11||10||9||8||7||6||5||4||3||2||1||0
|-
|<b>Bitfeld</b>||P15||P14||P13||P12||P11||P10||P9||P8||P7||P6||P5||P4||P3||P2||P1||P0
|-
|} <br>
Die oberen 16 Bits setzen den jeweiligen Pin auf HIGH, während die unteren 16 Bits den jeweiligen Pin auf LOW setzen. <br>
[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] Seite 2573.
|| Der Effekt dieses Register ist der selbe, wie wenn das OUT-Register verwendet wird, jedoch kann so ohne Ausmaskierung der anderen Bits ein Pin im Pegel geändert werden. Wird sowohl das Bit zum LOW setzen, als auch das Bit zum HIGH setzen gesetzt, so wird der Pin getoggelt. Sollen andere Pins nicht beeinflusst werden, wenn ein anderer Pin geändert werden soll, so ist der Zugriff über das OMR schneller als über das OUT-Register.
|-
| PPS <br> <b>P</b>in <b>P</b>ower <b>S</b>ave Register
||
{| {{Tabelle}}
|-
|<b>Bit-Nummer</b>||31||30||29||28||27||26||25||24||23||22||21||20||19||18||17||16
|-
|<b>Bitfeld</b>|| colspan="16" align="center"|NC
|-
|<b>Bit-Nummer</b> ||15||14||13||12||11||10||9||8||7||6||5||4||3||2||1||0
|-
|<b>Bitfeld</b>||P15||P14||P13||P12||P11||P10||P9||P8||P7||P6||P5||P4||P3||P2||P1||P0
|-
|} DC: Don't care <br>
|| Wenn sich der Controller im Deep Sleep Mode befindet und das zum jeweiligen Pin gehörende Bit ist gesetzt, so liegt der Pin auf dem Pegel welcher im OUT Register steht. Dies gilt ebenfalls für Eingänge.
<b> ACHTUNG:</b> Diese Regelung gilt nur, wenn keine Pull Up-oder Pull Down Widerstände am jeweiligen Pin aktiv sind. Im Deep Sleep Mode werden diese deaktiviert, für Pins mit aktiviertem Pull-Up wird dann immer 1 aus dem IN Register gelesen. Für Pins mit aktiviertem Pull-Down wird immer 0 ausgelsesen.
Die genaue Beschreibung ist im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 2575 zu finden. 
|-
| HWSEL <br> <b>H</b>ard<b>w</b>are <b>Sel</b>ect Register
||
{| {{Tabelle}}
|-
|<b>Bit-Nummer</b>||31||30||29||28||27||26||25||24||23||22||21||20||19||18||17||16
|-
|<b>Bitfeld</b>||colspan="2" align="center"|P15||colspan="2" align="center"|P14||colspan="2" align="center"|P13||colspan="2" align="center"|P12||colspan="2" align="center"|P11||colspan="2" align="center"|P10||colspan="2" align="center"|P9||colspan="2" align="center"|P8
|-
|<b>Bit-Nummer</b> ||15||14||13||12||11||10||9||8||7||6||5||4||3||2||1||0
|-
|<b>Bitfeld</b>|| colspan="2" align="center"|P7||colspan="2" align="center"|P6||colspan="2" align="center"|P5||colspan="2" align="center"|P4||colspan="2" align="center"|P3||colspan="2" align="center"|P2||colspan="2" align="center"|P1||colspan="2" align="center"|P0
|-
|}
|| Für jeden einzelen Pin kann bestimmt werden, ob On-Chip Pherepherie die Eigentschaften des Pins verändern kann. Die Werte für das entsprechende Bitfeld:
*0b00: Software access only
*0b01: HW0 kann den Pin überschreiben
*0b01: HW1 kann den Pin überschreiben
Dieses Register wird erst dann relevant, wenn eine On-Chip Pherepherie auf an einen bestimmten Pin gemappt werden soll. Hierrauf wird im weiteren Verlauf des Artikels noch Bezug genommen.<br>
[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] Seite 2576.
|-
|}
 
== Verknüpfung mit anderer Hardware ==
Diverse GPIOs haben alternative Funktionen, wobei die jeweiligen Pins dann mit der On-Chip Pherepherie verbunden werden. Die Verknüpfung selber findet aber bei der Konfiguration der On-Chip Perepherie und nicht bei der Konfiguration der GPIOs statt. Jedoch hat der gewählte Ausgang oder Eingang dann die Eigenschaften, wie im IOCR eingestellt. Dies kann umgangen werden, wenn die Kontrolle über den jeweiligen GPIO auch an die Hardware weiter gegeben wird. Dies wird über die Konfiguration im HWSEL eingestellt. Ist es für die jeweilige On-Chip Perepherie notwendig, so kann diese kann die Eigenschaften des jeweiligen Pins verändern.


== Verschiedene Schaltverhalten ==
== Verschiedene Schaltverhalten ==
In diesem Abschnitt sollen die verschiedene Flanken und Treiber noch einmal thematisiert werden. Dafür wurden die jeweiligen Flanken mittels eines Oszilloskpes vermessen. Es wurde eine Single-Shot Messung durchgeführt.<br> Die Ergebnisse:
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.<br>  
--> Bilder fehlen
;<u>Messaufbau</u>
 
*PORT1.3 direkt ans Oszilloskop angeschlossen
== Input-Only GPIs ==
**Pad Klasse A2
Die Ports 14 und 15 sind speziell auf die Bedürfnisse von analogen Signalen angepasst. Aus diesem Grund verfügen sie über keine Ausgangstreiber. Sie können also nur als Eingang für digitale Signale oder für ADC-Kanäle genutzt werden. Das Register OUT ist an diesen Ports nur für den Deep Sleep Mode vorhanden. Auf die besondere Funktion des PDISC ist bereits in der Registerzusammenfassung eingegangen worden.
*Single Shot
<br><br>
Die Ergebnisse:
 
<gallery perrow="5" class="float-left">
= USIC =
Bild:Weak Driver.JPG|Weak Driver
== Überblick über den Aufbau ==
Bild:Medium Driver.JPG|Medium Driver
Jeder Controller der XMC4500 Controllerfamilie verfügt über vier USIC (<b>U</b>niversal <b>S</b>erial <b>I</b>nterface <b>C</b>hannel) Module, die jeweils aus zwei unabhängigen Kanälen bestehen, die jeweils in verschiedenen Modi arbeiten können. Intsgesamt sind fünf verschiedene Modi möglich:
Bild:Strong Driver Soft edge.JPG|Strong Driver Soft Edge
*ASC (asynchronous serial channel) besser bekannt als UART
Bild:Strong Driver Medium Edge.JPG|Strong Driver Medium Edge
*LIN-Bus
Bild:Strong Driver Sharp Edge.jpg|Strong Driver Sharp Edge
*SSC/SPI
</gallery>
**bis zu 4 parallele Datenleitungen möglich
Da die Bilder nicht optimal sind, habe ich die dazu gehörigen .WFM-Datein mit hochgeladen:
*IIC oder auch I²C
[[Datei:Schaltverhalten Messungen.zip| Messdaten]]
*IIS-Bus
Innerhalb eines Modules können die verschiedenen Modi beliebig kombiniert werden, da jeder Kanal seine eigene Clock-Generation und Controll-Logik hat. Wird der Baudratengenerator nicht für das gewählte Protokoll gebraucht, so das Ausgangssignal als ein weiterer Timer genutzt werden, und/oder auf einen Ausgang gemappt werden um damit eine Taktquelle bereit zu stellen. <br><br>
Neben diesen Funktionen bietet jeder Kanal noch weitere Funktionen, die eine hohe Datenrate ermöglichen:
*64 Byte FIFO, jedoch nur für das komplette Modul
*Maximal sechs Interruptsignale, die je nach Anforderung gewählt werden können
*Variable Framelänge, maximal jedoch 63 Datenbits
*Eine Datenübertragung kann durch ein externes Event getriggert werden
*Loop Back-Modus zum simulieren einer Datenübertragung innherhalb des Chips
Die USIC Module vereinigen schnelle Datenübertragung mit einer sehr großen Flexibilität, weshalb auch die Dukomentation sehr groß ausfällt. Aus diesem Grund werden in diesem Artikel nur zwei Beispiele gegeben, wie USIC-Module verwendet werden können. Auch wird auf eine Registerbeschreibung verzichtet, da diese schlicht zu umfassend sein würde und eine Kürzung ohne den Verlust von Informationen nur schwer möglich ist. Die komplette Dukomentation zu den USIC-Modulen findet man im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf den Seiten 1563-1808. Nur zum  Vergleich, im Datenblatt des ATMega32 nimmt die Beschreibung aller Schnittstellen nur 66 Seiten in Anspruch.
== Besondere Funktionen ==
Neben den allgemeinen Möglichkeiten, wie die Auswahl verschiedener Protokolle und die vielen möglichen Pins gibt es noch einige Sonderfunktionen.<br> In diesem Abschnitt werden diese Funktionen genauer beschrieben:
*FIFO
*Clock-Generierung für externe Hardware
*Beonderes Debugging Verhalten


=== FIFO ===
Erstellt wurden die Bilder mit [http://www.downv.com/Windows/install-WFM-Viewer-10554073.htm WFM Viewer]
<b>F</b>irst <b>I</b>n <b>F</b>irst <b>O</b>ut Buffer<br>
Jedes USIC-Modul verfügt, wie schon beschrieben über 64 Speicherstellen, die jeweils 32 Bit breit sind. Eine weitere Teilung der Speicherstellen ist nicht möglich, jedoch kann der komplette FIFO variabel partioniert werden. Eine Abbildung und eine Beschreibung der kompletten Details des FIFOs findet man im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 1602.<br>
Der FIFO kann unabhängig von einer möglichen Verbindung mit einem DMA betrieben werden. Jedoch kann der DMA über einen vom FIFO aufgerufenen Interrupt getriggert werden. Dabei sind mehere Quellen möglich. Dazu gehören:
*FIFO leer
*FIFO voll
*FIFO Füllstand unter einem bestimmten Level
*FIFO Füllstand über einem bestimmen Level
Die Schaltschwellen für die Triggerung können für jeden Kanal und für Senden und Empfangen einzeln konfiguriert werden.<br>
Ist es notwendig eine Datenübertragung aus dem FIFO für eine wichtigeres Pakekt zu unterbrechen, so kann ein Bypass aktiviert werden. Dabei bleiben die Daten im FIFO gültig. Ist das Paket fertig gesendet. So kann der FIFO wieder hinzugeschaltet werden, ohne das Daten verloren gehen.<br>
=== Clock-Generation für externe Hardware ===
Sowohl die Masterclock des jeweiligen Kanals, als auch die Clock die als Taktquelle für das Shift-Register kann auf einen Pin gemappt werden. In Protokollen, wo die Shift-Clock benötigt wird, zum Beispiel SPI(->SCK) oder I²C (->SCL) ist diese Funktion nicht möglich, jedoch nur für die Shift-Clock. Die Master-Clock kann nach wie vor zur Taktung von externer Hardware genutzt werden. <br>
Benötigt das gewählte Übertragungsprotokoll keine eigene Clock, wie SPI als Slave oder I²C als Slave, so können die beiden Clock-Signale für beliebige Anwendungen genutzt werden. Dabei kann auch die Frequenz von beiden Clocks frei gewählt werden.<br>
Die Taktquelle für den Baudratengenator selber kann ebenfalls variabel gewählt werden. Es sind zwei Optionen möglich:
*Interne Clock
*Takt, der an einem PortPin anliegt. Dieser darf aber maximal 60MHz betragen (F_CPU/2)
<br>
Der Baudratengenerator verfügt über zwei Prescaller-Modi für die Shift-Clock. Bei dem einen handelt es sich um einen ganzzahligen Teiler, welcher die Eingangsfrequenz durch einen ganzahligen Faktor. Im zweiten Modus wird ein fraktioneller Teiler verwendet, mit dem Teiler möglich sind, die nicht ganzzahlig sind. Dieser Modus wird verwendet, wenn eine Frequenz sehr genau im Vergleich zu einem berechnetem Wert erreicht werden muss.
Die genaue Beschreibung ist im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 1587 zu finden.


=== Besonderes Debugging Verhalten ===
= Weblinks und Quellenverzeichnis =
Um beim In-Circut-Debugging die Funktion der USIC-Module nicht zu beinträchtigen, wird der Inhalt des FIFO-Buffers in einen extra Buffer gespiegelt, welcher nur für das Debugging verwendet wird. Dadurch können die Daten im FIFO gelesen werden, ohne die Funktion zu beeinträchtigen.<br>
*[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt der XMC4500 Controllerfamilie]
Dies ist besonders dann sehr hilfreich, wenn ein Loop-Back Test innerhalb des Chips durchgeführt wird. Mit Hilfe des extra Buffers können die empfangenden Daten besser analysiert werden und Fehler leichter identifiziert werden.<br>
*[http://www.infineon.com/dgdl/xmc4500_ds_v1+0_2013_01.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a304335b504400135bdca7ed86742 Elektrische Daten und Zusammenfassung]
Das komplette Verhalten im Debug-Modus ist im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 1714 beschrieben.
*[http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php Dokumentation über den Cortex M4 Kern]
*[http://www.infineon.com/xmc-dev Seite von Infineon über das XMC4500 "Relax (Lite) Kit"]
*[https://github.com/furtnerthomas/Linux-XMC-Development Eclipse IDE als Entwicklungsumgebung für XMC Controller unter Linux]
*Videos von Infineon über das XMC4500 "Relax (Lite) Kit"
**[http://www.movingimage24.com/video_369286?width=640&height=395&player=35&scwm=2&chapter=0&overlays=1&cbarPlayPauseFlag=1&cbarTrackFlag=1&cbarTimeTotalFlag=1&cbarTimeDurationFlag=1&cbarvolumeBarFlag=1&cbarFullScreenFlag=1&qs=1&adbtn=1&adbtn1=1&adbtn5=1&bg=c1d2e2&fg=336699&ctcb1=336699&ctcb2=e10030&ctcb3=7c7c7c&ctcb4=c1d2e2&ctcb7=dae5e3&ctab1=000000&ctab2=ffffff&ctab3=abbbd0&wvm=3&start=0&volume=100&loadtime=0&wmode=transparent&fupdate=1&cwm=0&ctp=0&stillimg=0&plang=default&qd=3 Beschreibung des Webservers]
**[http://www.movingimage24.com/video_369288?width=640&height=395&player=35&scwm=2&chapter=0&overlays=1&cbarPlayPauseFlag=1&cbarTrackFlag=1&cbarTimeTotalFlag=1&cbarTimeDurationFlag=1&cbarvolumeBarFlag=1&cbarFullScreenFlag=1&qs=1&adbtn=1&adbtn1=1&adbtn5=1&bg=c1d2e2&fg=336699&ctcb1=336699&ctcb2=e10030&ctcb3=7c7c7c&ctcb4=c1d2e2&ctcb7=dae5e3&ctab1=000000&ctab2=ffffff&ctab3=abbbd0&wvm=3&start=0&volume=100&loadtime=0&wmode=transparent&fupdate=1&cwm=0&ctp=0&stillimg=0&plang=default&qd=3 Getting startet mit dem XMC4500 "Relax (Lite) Kit"]
**[http://www.movingimage24.com/video_369290?width=640&height=395&player=35&scwm=2&chapter=0&overlays=1&cbarPlayPauseFlag=1&cbarTrackFlag=1&cbarTimeTotalFlag=1&cbarTimeDurationFlag=1&cbarvolumeBarFlag=1&cbarFullScreenFlag=1&qs=1&adbtn=1&adbtn1=1&adbtn5=1&bg=c1d2e2&fg=336699&ctcb1=336699&ctcb2=e10030&ctcb3=7c7c7c&ctcb4=c1d2e2&ctcb7=dae5e3&ctab1=000000&ctab2=ffffff&ctab3=abbbd0&wvm=3&start=0&volume=100&loadtime=0&wmode=transparent&fupdate=1&cwm=0&ctp=0&stillimg=0&plang=default&qd=3 Noch mehr zum Webserver].
*[http://www.myXMC.de XMC Tutorial]
*[https://code.google.com/p/arduino-to-xmc/ Arduino Wiring Language porting to XMC microcontrollers]


== Einfache serielle Kommunikation mit dem PC ==
Es gibt ein Forum von Infineon, wo sowohl die IDEs von Infineon diskutiert werden, als auch die Controller:
Ein Beispiel für die Verwendung eines USIC Kanals. Es wird bewusst auf die Verwendung von Apps verzichtet, um  die notwenigen Register zu zeigen.  
*[http://www.infineonforums.com/ Forum]
Es wird das UART-Protokoll mit einem Startbit, 8 Datenbits und einem Stoppbit gewählt.
<b> Alle Bilder in diese, Artikel sind selbst gemacht und können beliebig für andere Dokumentationen oder Projektbeschreibungen genutzt werden.</b>
<c>#Code fehlt</c>


= Timer-Module =
==Zugehörige Artikel oder Threads ==
Die XMC4500 Controller Familie verfügt über zwei Timer-Module: CCU4 und CCU8. Jedes dieser Module besteht aus 4 sogenannten Timer-Slices, wobei diese wieder jeweils 4 eigenständige Kanäle besitzen. Jeder Kanal besteht aus einem 16-Bit Timer mit der dazugehörigen Logik. Jeder Kanal hat seine eigenen Interrupts und mögliche Port Pins, auf die die Ausgänge gemappt werden können. Die einzelnen Kanäle innerhalb eines Timer-Slices können verbunden werden, um eine höhere Auflösung zu erreichen. Werden alle vier Kanäle verbunden, so sind 64-Bit Auflösung möglich die auch für die PWM genutzt werden können. <br>
*[[XMCxxxx]]
Als Taktquellen können verwendet werden:
*[[Einstieg in die ARM Entwicklung]]
*Internert Takt, jedes Timer-Slices hat seinen eigenen Prescaller
*[http://www.mikrocontroller.net/articles/Kategorie:Daten%C3%BCbertragung Datenübertragung]
*Externer Takt, für jeden Kanal einzeln wählbar
Die jeweiligen Kanäle können in verschiedenen Modi arbeiten:
*Capture Modus
**Es stehen bis zu vier Capture-Register zum Zeitmessen zur Verfügung
*Compare Modus
**Jeweils zwei Compare-Register je Kanal
Es stehen auch bei den Timer-Modulen für jedes Slice zwei Prescaller-Modi zur Verfügung. Neben einem ganzzahligen Teiler gibt es alternativ auch einen fraktionellen Teiler.<br>
Interrupts können auf dieverse Events getriggert werden, unter anderem auf den Compare-Match und auf verschiedene Events im Capture-Modus.<br>
Eine PWM kann nur im Compare-Mode generiert werden. Die diversen Möglichkeiten der verschiedenen Modi werden in diesem Artikel nicht näher erläutert, jedoch wird auf die PWM genauer eingegangen. Die Beschreibung der Timer-Module startet im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 2143. <br>
Neben den bereits angesprochenen Funktionen können die Timer-Kanäle noch weitere Aufgaben übernehmen:
*Modus für H-Brücken-Ansteuerung
*Totzeitüberwachung zum Beispiel für IGBTs
*Kopplung mit dem POSIF-Interface möglich
**Das POSIF Interface dekodiert die Signale von externen Drehgebern. Eine Kopplung macht dementsprechend eine verbesserte Motoransteuerung möglich.
== PWM ==
Die XMC4500 Controller-Familie bietet eine sehr breite Pallette an PWM-Modi und eine maximale Auflösung von 64 Bit. Dafür wird dann jedoch ein komplettes Timer-Slice benötigt. Es sind jedoch auch die Auflösungen von 16,32 und 48 Bit möglich. Diese benötigen dann einen, zwei oder drei Timerkanäle. Der so erstellte Timer kann in verschiedenen Modi arbeiten.
*
**In diesem Modus zählt der Timer bis zum eingestellten Compare-Wert und wird dann resettet. Über dieses Parameter wird die Periodendauer eingestellt. Über ein weiteres Register wird der Compare-Wert eingestellt, an dem der jeweilige PortPin geändert wird.<br> [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] Seite 2161.
*Center Aligned Mode
**In diesem Modus zählt der Timer erst bis zum Compare-Wert für die Periodendauer, wird danach aber nicht wieder resettet, sondern zählt nun abwärts. Der jeweilige PortPin wird in aufsteigene Zählrichtung bei dem Compare-Wert für das Tastverhältnis gesetzt und beim selben Wert bei  Modeabsteigender Zählrichtung wieder gelöscht.<br> [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] Seite 2162.
Beide Modi können entweder in Dauerschleife laufen und so ein dauerhaftes PWM-Signal generieren oder im Single-Shot Modus laufen. Im Single-Shot Modus wird nur ein Puls generiert, danach stoppt der Timer von alleine.
== Software-Beispiel ==
In diesem Software Beispiel wird der Timer0 im Timer-Slice CCU40 für eine Edge Aligned-PWM konfiguriert und auf einen Ausgang gemappt. Als Taktquelle wird der intere Takt verwendet.
<c>#Code fehlt</c>


= ADC =
[[Kategorie:ARM]]
Die XMC4500 Controllerfamilie hat nicht wie bei anderen Controllertypen, nur einen ADC der dann auf mehrere Eingänge gemultiplexed werden, sondern vier ADCs, die jeweils auf maximal acht Kanäle geamppt werden. Jedoch hängt die maximale Anzahl der möglichen Kanäle wieder von der Gehäusevariante ab. Die maximale Anzahl an Kanälen hängt von der Verfügbarkeit von PortPins an den Ports 14 und 15 ab. Die genauen Verfügbarkeiten stehen im [http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] auf Seite 2579 bis 2581.
[[Kategorie:Infineon XMC]]
== Features des ADCs ==
*Pro ADC jeweils zwei Referenzen möglich
**AREF oder Channel0
*Varibale Auflösung
**8,10 oder 12 Bit
*Verbindung an einen DMA-Kanal möglich
*Wandlungen können durch Software und/oder durch Hardwareevents getriggert werden.
*Mehrere Wandlungsmodi:
**Ein Kanal wird immer wieder gemmessen
**Abfolge von Kanälen die gemessen werden
**Parallele Messungen von allen vier ADCs
**Wandlungszeiten <1µs möglich
*Broken Wire Detection
*Selbst-Kallibierung
*Modus, ob Quelle noch am Pin angeschlossen
[http://www.infineon.com/dgdl/xmc4500_Reference_Manual_v1+1_2012_07.pdf?folderId=db3a30433580b3710135a47f3eb76c98&fileId=db3a30433580b3710135a5f8b7bc6d13 Datenblatt] Seite 1934.
== Interrupts durch den ADC ==
Die einzelnen ADC-Module können jeweils mehrere Interrupts generieren. Dabei sind unter anderem diese Events möglich:
*Wandlung gestartet
*Wandlung beendet
*Wandlung beendet und Wert über/unter einem bestimmten Wert

Aktuelle Version vom 27. März 2018, 08:22 Uhr

Dieser Artikel nimmt am Artikelwettbewerb 2012/2013 teil.

Die Controller XMC4500 von Infineon basieren auf einem 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 "XMC4500 Relax Kit/ Lite Kit", welches beide Developmentboards von Infineon sind, vorgestellt werden. Auch die von Infineon dazu angebotene Entwicklungsumgebung DAVE3 wird kurz vorgestellt.

Technische Daten im Überblick

"Relax Kit" (oben) und "Relax Lite Kit" (unten)

Ein kurzer Überblick über die On-Chip-Peripherie mit den wichtigsten Merkmalen

  • 3.3 V Operating Voltage
  • 32-Bit-Architektur ARM Cortex M4 CPU
  • FPU
  • 120 MHz Systemtakt
  • 512 kB - 1024 kB Flashmemory, je nach Typ
    • Auf den "XMC4500 Relax (Lite) Kits" ist die Variante mit 1 MB Flash verbaut.
  • 128 kB oder 160 kB RAM
    • Auf den "XMC4500 Relax (Lite) Kits" ist die Variante mit 160 kB RAM verbaut.
  • Maximal 1 GB RAM über natives externes RAM-Interface adressierbar
  • Zwei Programmstacks
    • Verwendung umschaltbar, Verwendung eines OS einfacher.
  • JTAG
  • Interrupt-Level Controller mit 64 Leveln
  • Interne RTC
  • Ethernet MAC On-Chip
    • PHY nicht integriert, Anbindung über RMII-Interface
    • Der komplette Frame wird von der Hardware generiert
  • USB 2.0, sowohl als Host, als auch als Slave
  • 5 USIC: Universeller, serieller Interface-Kanal für SPI, I²C, UART, etc.
    • Einstellbare Framelänge von bis zu 64 Bit
    • Flexibles CRC-Modul, Prüfsummen können von der Hardware generiert werden
  • multiCAN On-Chip
    • 11-Bit oder 29-Bit Objekt Indentifier
    • maximal 64 Objekt Indentifier definierbar
    • 3 eigenständige CAN-Module
  • SD/MMC-Card Interface mit internem 512-Byte-FIFO
    • 4-Bit-Interface
  • Bis zu 12 DMA-Kanäle
  • 4 12-Bit-8-Kanal-ADCs
    • OVP durch Komperatoren an den Eingängen
    • Programmierbarer Gain
    • Verbindung mit dem DMA möglich
  • 12-Bit DAC mit FIFO
  • Delta-Sigma-Demodulator
  • 2 Timer-Module mit jeweils 4 Modulen mit jeweils 4 Timern
    • Intsgesamt 32 Timer
    • Diverse verschiedene Modi, unter anderem Compare-und-Capture-Mode, Kopplung an externe Signale möglich
    • Bis zu 64 Bit PWM (HRPWM)
    • Eigener Prescaler für jeden Kanal
    • Deadtime-Modus für Brückensteuerungen
  • POSIF: Position Interface Unit für Drehencoder
    • Kopplung an Timer-Module möglich
  • GPIOs mit anpassbarem Schaltverhalten, bzw. Flankencharakteristik
    • Push-pull oder Open Collector
    • Pull-up- oder Pull-down-Widerstand zuschaltbar
    • Tri-State-Modus

Dies sind die wesentlichen Merkmale des XMC4500-Controllertyps, weiter sollen diese hier nicht aufgelistet werden, da allein das für einen ausführlichen Artikel reicht. Das Datenblatt hat nicht ohne Grund über 2000 Seiten. Zudem gibt es eine zusätzliche Dokumentation über die allgemeinen Eigenschaften der XMC4500-Controllerserie und die unterschiedlichen Varianten.

Das XMC4500 Relax Kit/Relax Lite Kit

Allgemeines

Die wesentlichen Elemtente auf dem XMC4500 "Relax (Lite) Kit"

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. 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*4 poligen Header kann die Verbindung zum Programmieren oder Debuggen wiederhergestellt werden.

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.

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.

Bezugsquellen und Kosten

Die beiden Developmentboards 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 "Relax Lite Kit" und etwa 30€+MwSt. für das "Relax Kit" bei diesen Distributoren:

Die Boards werden beide vom Hersteller Hitex angeboten. Hitex:http://www.ehitex.de/cortex-development/xmc4000?sCoreId=65de769a6c30c181ab899fcf7bcfcd3c

Hat man die Möglichkeit, als Firma und/oder mit Gewerbeschein zu bestellen, so kann man bei dem von Infieon vorgeschlagenen Distributor hitex bestellen:

Aus urheberrechtlichen Gründen können die Schaltpläne und das Layout hier nur verlinkt werden:

Unterschiede zwischen dem "Relax Kit" und dem "Relax Lite Kit"

Die Unterschiede zwischen dem "Relax Kit" und dem "Relax Lite Kit" kurz zusammen gefasst:

Unterschiede zwischen dem "Relax Kit" und dem "Relax Lite Kit"
Hardware "Relax Kit" "Relax Lite Kit" Nachbestückbar?
Ethernet Ja Nein Schwer bis unmöglich, da der Ethernetcontroller im QFN24 Gehäuse verbaut ist.
Micro-SD Ja Nein Gut möglich, jedoch müssen Bauteile in Baugröße 0603 und 0402 verlötet werden.
RTC-Quarz Ja Nein Der Quarz ist leicht zu verlöten, es müssen jedoch zwei 0402 Kondensatoren verlötet werden.
32-Mbit SPI-Flash Ja 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.

Nachbestückung

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 "Relax Kit" ziemlich viel, da die Bauteile für das was verwenden will nur etwa 5€ kosten. Selbiges gilt für den 32Mbit SPI-Flash. Mit etwas Lötgeschick ist es ohne weiteres möglich ein "Relax Lite Kit" aufzurüsten. Die dafür notwendigen Bauteile beschränken sich im wesentlichen auf Standardbauteile:

  • micro-SD Card:
    Der alternative SD-Card Halter und der SPI-Flash sind nachbestückt worden.
    • 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: Alternativer Slot, siehe Bild.
    • 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.
  • RTC-Quarz:
    • Der Quarz ist bei Digikey erhältlich, allerdings nicht immer auf Lager: Quarz
    • Die üblichen Anschwingkondensatoren sind auch hier vorhanden, zwei 0402 15pF Kondensatoren.
  • SPI-Flash:
    • Der Flash ist unter anderem bei Farnell erhältlich:SPI-Flash. Dabei handelt es sich um einen NOR-Flash von Spansion "S25FL032P0XMFI011". Datenblatt
    • Dazu kommt das übliche Hühnerfutter, in diesem Fall ein 0402 100nF Kondensator und 3 0402 10K Widerstände.

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.

  • Bauteile:
    Gehäusevergleich ziwschen dem QFN24 Gehäuse des Ethernetkontrollers und einem normalen 0402 Gehäuse
    • Ethernetcontroller: KSZ8031RNL von Mircel, erhältlich bei allen großen Distributoren, aber sehr schwer zu verlöten, da 0.5mm Pin-Pitch (QFN24).
    • Ethernetbuchse: Würth 7499010211A, nicht käuflich oder nur sehr schwer erwerbbar. Jedoch scheint Würth auf Sampleanfragen sehr kulant zu sein, sofern man ehrlich schreibt, wofür man die Bauteile benötigt. Bei Digikey kostet die Buchse knapp acht Euro. Alternativ kann man auch eine kompatible Nonamebuchse ohne LEDs verwenden, beispielsweise eine fuer 46 cent.
    • Quarz: 25MHz Quarz, es passt zum Beispiel der Quarz von Reichelt
    • Widerstände:
      • 2* 0603 120 Ohm (R201,R207)
      • 2* 0402 1K (R200, R203)
      • 1* 0603 6,49K (RBIAS=R204)
    • Kondensatoren:
      • 5 0402 100nF (C201,C203,C205,C208,C209)
      • 2 0402 22pF (C206,C207)
      • 3 0805 22µF/10V (C200,C202,C204)
      • 1 0805 10µF/10V (C210)
    • Sonstiges:
      • 2 BLM18PG600 (L200,L201)
      • 2 BAT54-02V (D200,D201)

An die Standardbauteile werden keine speziellen Anforderungen gestellt, lediglich R204 sollte eine möglichst kleine Toleranz haben (<=1%).

DAVE3

Allgemeines

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.
Die IDE kann auf der Seite von Infineon heruntergeladen werden, zudem gibt es ein 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.

DAVE Apps

Die UART02-App, alle Einstellungen können in diesem Fenster gemacht werden.

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.
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. Auf Beispiele wird in diesem Artikel verzichtet, da das Quickstart-Tutorial von Infineon bereits alle Fragen klärt und Ansätze bietet.
Ein Quick-Start-Tutorial für die Verwendung gibt es von Infineon hier.

Programmieren und Debuggen des "XMC4500 Relax (Lite) Kit"

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..
Programmiert wird der Controller über JTAG.

Nachteile des On-Board Programmers und Debuggers

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.
Für den On-Board-Debugger wird das hier ab Minute 5.50 beschrieben. Ähnlich wird dies bei anderen Geräten ablaufen.

Verschiedene Schaltverhalten

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.

Messaufbau
  • PORT1.3 direkt ans Oszilloskop angeschlossen
    • Pad Klasse A2
  • Single Shot

Die Ergebnisse:

Da die Bilder nicht optimal sind, habe ich die dazu gehörigen .WFM-Datein mit hochgeladen: Datei:Schaltverhalten Messungen.zip

Erstellt wurden die Bilder mit WFM Viewer

Weblinks und Quellenverzeichnis

Es gibt ein Forum von Infineon, wo sowohl die IDEs von Infineon diskutiert werden, als auch die Controller:

Alle Bilder in diese, Artikel sind selbst gemacht und können beliebig für andere Dokumentationen oder Projektbeschreibungen genutzt werden.

Zugehörige Artikel oder Threads