element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Sustain The World - Design Challenge
  • Challenges & Projects
  • Design Challenges
  • Sustain The World - Design Challenge
  • More
  • Cancel
Sustain The World - Design Challenge
Blog Sustain The World - Smart Portable Freezer #3 The XMC series MCU
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: fyaocn
  • Date Created: 31 Aug 2020 5:43 AM Date Created
  • Views 427 views
  • Likes 2 likes
  • Comments 0 comments
Related
Recommended

Sustain The World - Smart Portable Freezer #3 The XMC series MCU

fyaocn
fyaocn
31 Aug 2020

        • 1. The XMC series by Infineon
        • 2. XMC for Arduino
        • 3. KIT_XMC47_RELAX_LITE
        • 4. Platform2GO XMC4200 MCU
        • 5. Design with Arduino

1. The XMC series by Infineon

XMC is one of core MCU line by Infineon, this is for general purpose and others for automobile and TLE series for IGBT control. ARM-M0 and Arm-M4 core are covered. As follows,

image

All XMC4000 devices are powered by ARMRegistered CortexRegistered-M4 with a built-in DSP instruction set. The Single Precision Floating Point Unit, Direct Memory Access (DMA) feature and Memory Protection Unit (MPU) ,with comprehensive set of common, fast and precise analog/mixed signal, Timer/PWM and communication peripherals. XMC4000 family is available in seven series: XMC4100, XMC4200, XMC4300, XMC4400, XMC4500, XMC4700 and XMC4800 with more than 75 devices in VQFN, LQFP and LFBGA packages scaling from 48 to 196 pins.

ARMRegistered CortexRegistered-M4 with floating point unit (FPU), single-cycle DSP MAC, 80-144MHz CPU frequency, with Up to 2MB embedded Flash with 22ns access time and error correction unit and Up to 352kB embedded RAM.

There are two choice for MCU , one for XMC4700 and the other XMC4200 and shall be compared accordingly..

 

 

2. XMC for Arduino

XMC for arduino  is prefered development platform in this design. Dave can provide more basic control over peripherals and more sample project for reference. But quick start is the best part of arduino. And with more close look into arduino lib for XMC , the performance can be assured as well.

First , add https://github.com/Infineon/XMC-for-Arduino/releases/latest/download/package_infineon_index.json  into the preference menu, the xmc boards can be accessed in arduino IDE.

image

While only  XMC Platform 2Go is provided. I have just added XMC4200 platform 2Go for migration. It is not successful now.

The rest part  is like any other arduino board like MKR.

 

3. KIT_XMC47_RELAX_LITE

The XMC4[78]00 devices are members of the XMC4000 Family of microcontrollers based on the ARM Cortex-M4 processor core. The XMC4000 is a family of high performance and energy efficient microcontrollers. With basic  features like,

• CPU Core

– High Performance 32-bit ARM Cortex-M4 CPU

– 16-bit and 32-bit Thumb2 instruction set

– DSP/MAC instructions

– System timer (SysTick) for Operating System support

• Floating Point Unit

• Memory Protection Unit

• Nested Vectored Interrupt Controller

• General Purpose DMA with up-to 12 channels

• Event Request Unit (ERU) for programmable processing of external and internal service requests

• Flexible CRC Engine (FCE) for multiple bit error detection

On-Chip Memories

• 16 KB on-chip boot ROM

• 96 KB on-chip high-speed program memory

• 128 KB on-chip high speed data memory

• 128 KB on-chip high-speed communication memory

• 2,048 KB on-chip Flash Memory with 8 KB instruction cache

The arduino library saves the labour of reading chip reference manual, but it would be good if know what is going on.

image

4. Platform2GO XMC4200 MCU

The platform 2Go is rich is peripherals and as many as pins can be exposed for designs. While the arduino can not support XMC4200 , only for XMC4400, which is more powerful.

I have just revised the file boards.txt in C:\Users\$your Username\AppData\Local\Arduino15\packages\Infineon\hardware\arm\1.5.0

Part of code in boards.txt is

####################################################
XMC4200_Platform2GO.name=XMC4200 Platform 2GO
XMC4200_Platform2GO.upload.tool=xmcprog
XMC4200_Platform2GO.upload.speed=115200
XMC4200_Platform2GO.upload.resetmethod=ck
XMC4200_Platform2GO.upload.maximum_size=512000
XMC4200_Platform2GO.upload.wait_for_upload_port=true
   
XMC4200_Platform2GO.communication=usb
XMC4200_Platform2GO.protocol=dragon_isp
XMC4200_Platform2GO.program.protocol=dragon_isp
XMC4200_Platform2GO.program.tool=xmcprog
XMC4200_Platform2GO.program.extra_params=-Pusb
  
XMC4200_Platform2GO.serial.disableDTR=true
XMC4200_Platform2GO.serial.disableRTS=true
   
XMC4200_Platform2GO.build.mcu=cortex-m4
XMC4200_Platform2GO.build.f_cpu=80000000L
XMC4200_Platform2GO.build.board=ARM_XMC
XMC4200_Platform2GO.build.board.version=4200
XMC4200_Platform2GO.build.board.type=F64x256
XMC4200_Platform2GO.build.board.v=256
XMC4200_Platform2GO.build.core=./
XMC4200_Platform2GO.build.variant=XMC4200
XMC4200_Platform2GO.build.board_variant=XMC4200_Platform2GO
XMC4200_Platform2GO.build.flash_size=250K
XMC4200_Platform2GO.build.flash_ld=linker_script.ld
XMC4200_Platform2GO.build.extra_flags=-DARM_MATH_CM4 -DARM_MATH_DSP 
#-DUSB0


XMC4200_Platform2GO.menu.UART.debug=PC
XMC4200_Platform2GO.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC
XMC4200_Platform2GO.menu.UART.onBoard=On Board
XMC4200_Platform2GO.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD


XMC4200_Platform2GO.menu.LIB.NONE=None
XMC4200_Platform2GO.menu.LIB.NONE.library.selected=
XMC4200_Platform2GO.menu.LIB.DSPNN=ARM DSP / ARM NN Framework
XMC4200_Platform2GO.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN
XMC4200_Platform2GO.menu.LIB.NN=ARM NN Framework 
XMC4200_Platform2GO.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN
XMC4200_Platform2GO.menu.LIB.DSP=ARM DSP
XMC4200_Platform2GO.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP


####################################################
XMC4400_Platform2GO.name=XMC4400 Platform 2GO
XMC4400_Platform2GO.upload.tool=xmcprog
XMC4400_Platform2GO.upload.speed=115200
XMC4400_Platform2GO.upload.resetmethod=ck
XMC4400_Platform2GO.upload.maximum_size=512000
XMC4400_Platform2GO.upload.wait_for_upload_port=true
   
XMC4400_Platform2GO.communication=usb
XMC4400_Platform2GO.protocol=dragon_isp
XMC4400_Platform2GO.program.protocol=dragon_isp
XMC4400_Platform2GO.program.tool=xmcprog
XMC4400_Platform2GO.program.extra_params=-Pusb
  
XMC4400_Platform2GO.serial.disableDTR=true
XMC4400_Platform2GO.serial.disableRTS=true
   
XMC4400_Platform2GO.build.mcu=cortex-m4
XMC4400_Platform2GO.build.f_cpu=144000000L
XMC4400_Platform2GO.build.board=ARM_XMC
XMC4400_Platform2GO.build.board.version=4400
XMC4400_Platform2GO.build.board.type=F100x512
XMC4400_Platform2GO.build.board.v=512
XMC4400_Platform2GO.build.core=./
XMC4400_Platform2GO.build.variant=XMC4400
XMC4400_Platform2GO.build.board_variant=XMC4400_Platform2GO
XMC4400_Platform2GO.build.flash_size=500K
XMC4400_Platform2GO.build.flash_ld=linker_script.ld
XMC4400_Platform2GO.build.extra_flags=-DARM_MATH_CM4 -DARM_MATH_DSP 
#-DUSB0


XMC4400_Platform2GO.menu.UART.debug=PC
XMC4400_Platform2GO.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC
XMC4400_Platform2GO.menu.UART.onBoard=On Board
XMC4400_Platform2GO.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD


XMC4400_Platform2GO.menu.LIB.NONE=None
XMC4400_Platform2GO.menu.LIB.NONE.library.selected=
XMC4400_Platform2GO.menu.LIB.DSPNN=ARM DSP / ARM NN Framework
XMC4400_Platform2GO.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN
XMC4400_Platform2GO.menu.LIB.NN=ARM NN Framework 
XMC4400_Platform2GO.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN
XMC4400_Platform2GO.menu.LIB.DSP=ARM DSP
XMC4400_Platform2GO.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP


####################################################
XMC4700_Radar_Baseboard.name=DEMO Radar BB XMC4700
XMC4700_Radar_Baseboard.upload.tool=xmcprog
XMC4700_Radar_Baseboard.upload.speed=115200
XMC4700_Radar_Baseboard.upload.resetmethod=ck
XMC4700_Radar_Baseboard.upload.maximum_size=2048000
XMC4700_Radar_Baseboard.upload.wait_for_upload_port=true
   
XMC4700_Radar_Baseboard.communication=usb
XMC4700_Radar_Baseboard.protocol=dragon_isp
XMC4700_Radar_Baseboard.program.protocol=dragon_isp
XMC4700_Radar_Baseboard.program.tool=xmcprog
XMC4700_Radar_Baseboard.program.extra_params=-Pusb
  
XMC4700_Radar_Baseboard.serial.disableDTR=true
XMC4700_Radar_Baseboard.serial.disableRTS=true
   
XMC4700_Radar_Baseboard.build.mcu=cortex-m4
XMC4700_Radar_Baseboard.build.f_cpu=144000000L
XMC4700_Radar_Baseboard.build.board=ARM_XMC
XMC4700_Radar_Baseboard.build.board.version=4700
XMC4700_Radar_Baseboard.build.board.type=E196x2048
XMC4700_Radar_Baseboard.build.board.v=2048
XMC4700_Radar_Baseboard.build.core=./
XMC4700_Radar_Baseboard.build.variant=XMC4700
XMC4700_Radar_Baseboard.build.board_variant=XMC4700_Radar_Baseboard
XMC4700_Radar_Baseboard.build.flash_size=2000K
XMC4700_Radar_Baseboard.build.flash_ld=linker_script.ld
XMC4700_Radar_Baseboard.build.extra_flags=-DARM_MATH_CM4 -DINTERRUPT_USE_ERU -DSERIAL_USE_U1C1 -DXMC4_SERIES


XMC4700_Radar_Baseboard.menu.LIB.DSPNN=ARM DSP / ARM NN Framework
XMC4700_Radar_Baseboard.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN
XMC4700_Radar_Baseboard.menu.LIB.NONE=None
XMC4700_Radar_Baseboard.menu.LIB.NONE.library.selected=
XMC4700_Radar_Baseboard.menu.LIB.NN=ARM NN Framework 
XMC4700_Radar_Baseboard.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN
XMC4700_Radar_Baseboard.menu.LIB.DSP=ARM DSP
XMC4700_Radar_Baseboard.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP


####################################################
XMC4700_Relax_Kit.name=XMC4700 Relax Kit
XMC4700_Relax_Kit.upload.tool=xmcprog
XMC4700_Relax_Kit.upload.speed=115200
XMC4700_Relax_Kit.upload.resetmethod=ck
XMC4700_Relax_Kit.upload.maximum_size=2048000
XMC4700_Relax_Kit.upload.wait_for_upload_port=true
   
XMC4700_Relax_Kit.communication=usb
XMC4700_Relax_Kit.protocol=dragon_isp
XMC4700_Relax_Kit.program.protocol=dragon_isp
XMC4700_Relax_Kit.program.tool=xmcprog
XMC4700_Relax_Kit.program.extra_params=-Pusb
  
XMC4700_Relax_Kit.serial.disableDTR=true
XMC4700_Relax_Kit.serial.disableRTS=true
   
XMC4700_Relax_Kit.build.mcu=cortex-m4
XMC4700_Relax_Kit.build.f_cpu=144000000L
XMC4700_Relax_Kit.build.board=ARM_XMC
XMC4700_Relax_Kit.build.board.version=4700
XMC4700_Relax_Kit.build.board.type=F144x2048
XMC4700_Relax_Kit.build.board.v=2048
XMC4700_Relax_Kit.build.core=./
XMC4700_Relax_Kit.build.variant=XMC4700
XMC4700_Relax_Kit.build.board_variant=XMC4700_Relax_Kit
XMC4700_Relax_Kit.build.flash_size=2000K
XMC4700_Relax_Kit.build.flash_ld=linker_script.ld
XMC4700_Relax_Kit.build.extra_flags=-DARM_MATH_CM4 -DXMC4_SERIES


XMC4700_Relax_Kit.menu.LIB.DSPNN=ARM DSP / ARM NN Framework
XMC4700_Relax_Kit.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN
XMC4700_Relax_Kit.menu.LIB.NONE=None
XMC4700_Relax_Kit.menu.LIB.NONE.library.selected=
XMC4700_Relax_Kit.menu.LIB.NN=ARM NN Framework 
XMC4700_Relax_Kit.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN
XMC4700_Relax_Kit.menu.LIB.DSP=ARM DSP
XMC4700_Relax_Kit.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP


####################################################
# Not up to date
#XMC4800_Relax_Kit.name=XMC4800 Relax Kit
#XMC4800_Relax_Kit.upload.tool=xmcprog
#XMC4800_Relax_Kit.upload.speed=115200
#XMC4800_Relax_Kit.upload.resetmethod=ck
#XMC4800_Relax_Kit.upload.maximum_size=2000000
#XMC4800_Relax_Kit.upload.maximum_data_size=352000
#XMC4800_Relax_Kit.upload.wait_for_upload_port=true
#
#XMC4800_Relax_Kit.communication=usb
#XMC4800_Relax_Kit.protocol=dragon_isp
#XMC4800_Relax_Kit.program.protocol=dragon_isp
#XMC4800_Relax_Kit.program.tool=xmcprog
#XMC4800_Relax_Kit.program.extra_params=-Pusb
#
#XMC4800_Relax_Kit.serial.disableDTR=true
#XMC4800_Relax_Kit.serial.disableRTS=true
#
#XMC4800_Relax_Kit.build.mcu=cortex-m4
#XMC4800_Relax_Kit.build.f_cpu=144000000L
#XMC4800_Relax_Kit.build.board=ARM_XMC
#XMC4800_Relax_Kit.build.board.version=4800
#XMC4800_Relax_Kit.build.board.type=F144x2048
#XMC4800_Relax_Kit.build.board.v=2048
#XMC4800_Relax_Kit.build.core=./
#XMC4800_Relax_Kit.build.variant=XMC4800
#XMC4800_Relax_Kit.build.board_variant=XMC4800_Relax_Kit
#XMC4800_Relax_Kit.build.flash_size=2000K
#XMC4800_Relax_Kit.build.flash_ld=linker_script.ld
#XMC4800_Relax_Kit.build.extra_flags=-DARM_MATH_CM4 -DXMC4_SERIES


#XMC4800_Relax_Kit.menu.LIB.DSPNN=ARM DSP / ARM NN Framework
#XMC4800_Relax_Kit.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN
#XMC4800_Relax_Kit.menu.LIB.NONE=None
#XMC4800_Relax_Kit.menu.LIB.NONE.library.selected=
#XMC4800_Relax_Kit.menu.LIB.NN=ARM NN Framework 
#XMC4800_Relax_Kit.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN
#XMC4800_Relax_Kit.menu.LIB.DSP=ARM DSP
#XMC4800_Relax_Kit.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP

Copy the XMC4400 directory with new name XMC4200, then the XMC Platform 2Go can be accessced from IDE boards.

5. Design with Arduino

As kind of routine, start the blink.ino as first step using XMC4700 relax lite, build the code and download , the led blink every 1 second . It passes the first test.

/*
  Blink


  Turns an LED on for one second, then off for one second, repeatedly.


  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products


  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman


  This example code is in the public domain.


  http://www.arduino.cc/en/Tutorial/Blink
*/


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}


// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

image

 

image

  • Sign in to reply
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube