text: /**
   * @file xmc_device.h
   * @date 2016-02-26
   *
   * @cond
    *********************************************************************************************************************
   * XMClib v2.1.6 - XMC Peripheral Driver Library
   *
   * Copyright (c) 2015-2016, Infineon Technologies AG
   * All rights reserved.                        
   *                                             
   * Redistribution and use in source and binary forms, with or without modification,are permitted provided that the 
   * following conditions are met:   
   *                                                                              
   * Redistributions of source code must retain the above copyright notice, this list of conditions and the following 
   * disclaimer.                        
   * 
   * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following 
   * disclaimer in the documentation and/or other materials provided with the distribution.                       
   * 
   * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote 
   * products derived from this software without specific prior written permission.                                           
   *                                                                              
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE  
   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE  FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR  
   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
   * WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                                  
   *                                                                              
   * To improve the quality of the software, users are encouraged to share modifications, enhancements or bug fixes with 
   * Infineon Technologies AG dave@infineon.com).                                                          
   *********************************************************************************************************************
   *
   * Change History
   * --------------
   *
   * 2015-06-20:
   *     - Initial version
   *
   * 2015-09-23:
   *     - Added XMC14 and XMC48/47
   *
   * 2015-11-19:
   *     - Added XMC43
   *
   * 2016-02-26:
   *     - Fixed CCU8 version for XMC43/47/48
   *
   * @endcond 
   *
   */
  
  #ifndef XMC_DEVICE_H
  #define XMC_DEVICE_H
   
  /* Family definitions  */
  #define    XMC4       (4)
  #define    XMC1       (1)
  
  /* Series definitions  */
  #define    XMC48      (48)
  #define    XMC47      (47)
  #define    XMC45      (45)
  #define    XMC44      (44)
  #define    XMC43      (43)
  #define    XMC42      (42)
  #define    XMC41      (41)
  #define    XMC14      (14)
  #define    XMC13      (13)
  #define    XMC12      (12)
  #define    XMC11      (11)
  
  /* Device definitions  */
  #define    XMC4800    (4800)
  #define    XMC4700    (4700)
  #define    XMC4500    (4500)
  #define    XMC4502    (4502)
  #define    XMC4504    (4504)
  #define    XMC4400    (4400)
  #define    XMC4402    (4402)
  #define    XMC4300    (4300)
  #define    XMC4200    (4200)
  #define    XMC4100    (4100)
  #define    XMC4104    (4104)
  #define    XMC4108    (4108)
  #define    XMC1401    (1401)
  #define    XMC1402    (1402)
  #define    XMC1403    (1403)
  #define    XMC1404    (1404)
  #define    XMC1300    (1300)
  #define    XMC1301    (1301)
  #define    XMC1302    (1302)
  #define    XMC1200    (1200)
  #define    XMC1201    (1201)
  #define    XMC1202    (1202)
  #define    XMC1203    (1203)
  #define    XMC1100    (1100)
  
  /* Package definitions */
  #define    BGA144     (1)
  #define    LQFP144    (2)
  #define    LQFP100    (3)
  #define    BGA64      (4)
  #define    LQFP64     (5)
  #define    VQFN48     (6)
  #define    TSSOP38    (7)
  #define    TSSOP28    (8)
  #define    TSSOP16    (9) 
  #define    VQFN24     (10)
  #define    VQFN40     (11)
  #define    VQFN64     (12)
  #define    BGA196     (13)
  
  #if defined(XMC4800_E196x2048)	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   BGA196
  #define UC_FLASH     (2048UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4800_F144x2048)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   LQFP144
  #define UC_FLASH     (2048UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4800_F100x2048)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (2048UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4800_E196x1536)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   BGA196
  #define UC_FLASH     (1536UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4800_F144x1536)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   LQFP144
  #define UC_FLASH     (1536UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4800_F100x1536)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (1536UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4800_E196x1024)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   BGA196
  #define UC_FLASH     (1024UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4800_F144x1024)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   LQFP144
  #define UC_FLASH     (1024UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4800_F100x1024)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC48
  #define UC_DEVICE    XMC4800
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (1024UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4700_E196x2048)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC47
  #define UC_DEVICE    XMC4700
  #define UC_PACKAGE   BGA196
  #define UC_FLASH     (2048UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4700_F144x2048)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC47
  #define UC_DEVICE    XMC4700
  #define UC_PACKAGE   LQFP144
  #define UC_FLASH     (2048UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4700_F100x2048)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC47
  #define UC_DEVICE    XMC4700
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (2048UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4700_E196x1536)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC47
  #define UC_DEVICE    XMC4700
  #define UC_PACKAGE   BGA196
  #define UC_FLASH     (1536UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4700_F144x1536)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC47
  #define UC_DEVICE    XMC4700
  #define UC_PACKAGE   LQFP144
  #define UC_FLASH     (1536UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4700_F100x1536)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC47
  #define UC_DEVICE    XMC4700
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (1536UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4500_E144x1024)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC45
  #define UC_DEVICE    XMC4500
  #define UC_PACKAGE   BGA144
  #define UC_FLASH     (1024UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4500_F144x1024) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC45
  #define UC_DEVICE    XMC4500
  #define UC_PACKAGE   LQFP144
  #define UC_FLASH     (1024UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4500_F100x1024)	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC45
  #define UC_DEVICE    XMC4500
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (1024UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4500_F144x768) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC45
  #define UC_DEVICE    XMC4500
  #define UC_PACKAGE   LQFP144
  #define UC_FLASH     (768UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4500_F100x768) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC45
  #define UC_DEVICE    XMC4500
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (768UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4502_F100x768) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC45
  #define UC_DEVICE    XMC4502
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (768UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4504_F100x512) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC45
  #define UC_DEVICE    XMC4504
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (512UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4504_F144x512) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC45
  #define UC_DEVICE    XMC4504
  #define UC_PACKAGE   LQFP144
  #define UC_FLASH     (512UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4400_F100x512) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC44
  #define UC_DEVICE    XMC4400
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (512UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4400_F64x512) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC44
  #define UC_DEVICE    XMC4400
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (512UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4400_F100x256) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC44
  #define UC_DEVICE    XMC4400
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (256UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4400_F64x256) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC44
  #define UC_DEVICE    XMC4400
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (256UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4402_F100x256) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC44
  #define UC_DEVICE    XMC4402
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (256UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4402_F64x256) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC44
  #define UC_DEVICE    XMC4402
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (256UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4300_F100x256)	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC43
  #define UC_DEVICE    XMC4300
  #define UC_PACKAGE   LQFP100
  #define UC_FLASH     (256UL)
  #define MULTICAN_PLUS
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC4200_E64x256) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC42
  #define UC_DEVICE    XMC4200
  #define UC_PACKAGE   BGA64
  #define UC_FLASH     (256UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4200_F64x256) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC42
  #define UC_DEVICE    XMC4200
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (256UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4200_Q48x256) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC42
  #define UC_DEVICE    XMC4200
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (256UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4100_E64x128) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4100
  #define UC_PACKAGE   BGA64
  #define UC_FLASH     (128UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4100_F64x128) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4100
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (128UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4100_Q48x128) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4100
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (128UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4104_E64x64) 	    
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4104
  #define UC_PACKAGE   BGA64
  #define UC_FLASH     (64UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4104_F64x64) 	    
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4104
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (64UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4104_Q48x64) 	    
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4104
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (64UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4104_E64x128) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4104
  #define UC_PACKAGE   BGA64
  #define UC_FLASH     (128UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4104_F64x128) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4104
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (128UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4104_Q48x128) 	
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4104
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (128UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4108_Q48x64)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4108
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (64UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC4108_F64x64)
  #define UC_FAMILY    XMC4
  #define UC_SERIES    XMC41
  #define UC_DEVICE    XMC4108
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (64UL)
  #define CCU4V1
  #define CCU8V1
  
  #elif defined(XMC1100_Q024x0008)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (8UL)
  #define CCU4V2
  
  #elif defined(XMC1100_Q024x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1100_Q024x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1100_Q024x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (64UL)
  #define CCU4V2
  
  #elif defined(XMC1100_Q040x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1100_Q040x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1100_Q040x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (64UL)
  #define CCU4V2
  
  #elif defined(XMC1100_T016x0008)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (8UL)
  #define CCU4V2
  
  #elif defined(XMC1100_T016x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1100_T016x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1100_T016x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (64UL)
  #define CCU4V2
  
  #elif defined(XMC1100_T038x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1100_T038x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1100_T038x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC11
  #define UC_DEVICE    XMC1100
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (64UL)
  #define CCU4V2
  
  #elif defined(XMC1201_Q040x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1201_Q040x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1201_Q040x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (64UL)
  #define CCU4V2
  
  #elif defined(XMC1201_Q040x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (128UL)
  #define CCU4V2
  
  #elif defined(XMC1201_Q040x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (200UL)
  #define CCU4V2
  
  #elif defined(XMC1201_T038x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1201_T038x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1201_T038x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (64UL)
  #define CCU4V2
  
  #elif defined(XMC1201_T038x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (128UL)
  #define CCU4V2
  
  #elif defined(XMC1201_T038x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1201
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (200UL)
  #define CCU4V2
  
  #elif defined(XMC1202_Q024x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1202_Q024x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1202_Q040x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1202_Q040x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1202_T016x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1202_T016x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1202_T028x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   TSSOP28
  #define UC_FLASH     (16UL)
  #define CCU4V2
  
  #elif defined(XMC1202_T028x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   TSSOP28
  #define UC_FLASH     (64UL)
  #define CCU4V2
  
  #elif defined(XMC1202_T028x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1202
  #define UC_PACKAGE   TSSOP28
  #define UC_FLASH     (32UL)
  #define CCU4V2
  
  #elif defined(XMC1200_T038x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC12
  #define UC_DEVICE    XMC1200
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (200UL)
  #define CCU4V2
  
  #elif defined(XMC1301_Q024x0008)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (8UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_Q024x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (16UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_Q040x0008)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (8UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_Q040x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (16UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_Q040x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (32UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_T016x0008)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (8UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_T016x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (16UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_T038x0008)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (8UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_T038x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (16UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_T038x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (32UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1301_T038x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1301
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (64UL)
  
  #elif defined(XMC1302_Q024x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (16UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_Q024x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (32UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_Q024x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   VQFN24
  #define UC_FLASH     (64UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_Q040x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (16UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_Q040x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (32UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_Q040x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (64UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_Q040x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (128UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_T038x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (16UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_T038x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (32UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_T038x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (64UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_T038x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (128UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_T038x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   TSSOP38
  #define UC_FLASH     (200UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_T016x0008)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (8UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_T016x0016)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (16UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1302_T016x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC13
  #define UC_DEVICE    XMC1302
  #define UC_PACKAGE   TSSOP16
  #define UC_FLASH     (32UL)
  #define CCU4V2
  #define CCU8V2
  
  #elif defined(XMC1401_Q048x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1401
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (64UL)
  #define CCU4V3
  
  #elif defined(XMC1401_Q048x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1401
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (128UL)
  #define CCU4V3
  
  #elif defined(XMC1401_F064x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1401
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (64UL)
  #define CCU4V3
  
  #elif defined(XMC1401_F064x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1401
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (128UL)
  #define CCU4V3
  
  #elif defined(XMC1402_Q040x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (32UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_Q040x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (64UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_Q040x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN40
  #define UC_FLASH     (128UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_Q048x0032)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (32UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_Q048x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (64UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_Q048x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (128UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_Q064x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (64UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_Q064x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (128UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_Q064x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (200UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_F064x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (64UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_F064x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (128UL)
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1402_F064x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1402
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (200UL)
  #define CCU4V3
  #define CCU8V3
  
  
  #elif defined(XMC1403_Q048x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1403
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (64UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  
  #elif defined(XMC1403_Q048x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1403
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (128UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  
  #elif defined(XMC1403_Q048x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1403
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (200UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  
  #elif defined(XMC1403_Q064x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1403
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (64UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  
  #elif defined(XMC1403_Q064x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1403
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (128UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  
  #elif defined(XMC1403_Q064x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1403
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (200UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  
  #elif defined(XMC1404_Q048x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (64UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1404_Q048x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (128UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1404_Q048x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   VQFN48
  #define UC_FLASH     (200UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1404_Q064x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (64UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1404_Q064x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (128UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1404_Q064x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   VQFN64
  #define UC_FLASH     (200UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1404_F064x0064)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (64UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1404_F064x0128)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (128UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #elif defined(XMC1404_F064x0200)
  #define UC_FAMILY    XMC1
  #define UC_SERIES    XMC14
  #define UC_DEVICE    XMC1404
  #define UC_PACKAGE   LQFP64
  #define UC_FLASH     (200UL)
  #define MULTICAN_PLUS
  #define CCU4V3
  #define CCU8V3
  
  #else
  #error "xmc_device.h: device not supported"
  #endif 	    
  
  #if UC_SERIES == XMC45
  #include "XMC4500.h"
  #define PERIPHERAL_RESET_SUPPORTED
  #define USB_OTG_SUPPORTED
  
  #elif UC_SERIES == XMC44
  #include "XMC4400.h"
  #define CLOCK_GATING_SUPPORTED
  #define PERIPHERAL_RESET_SUPPORTED
  #define USB_OTG_SUPPORTED
  
  #elif UC_SERIES == XMC43
  #include "XMC4300.h"
  #define CLOCK_GATING_SUPPORTED
  #define PERIPHERAL_RESET_SUPPORTED
  #define USB_OTG_SUPPORTED
  
  #elif UC_SERIES == XMC42
  #include "XMC4200.h"
  #define CLOCK_GATING_SUPPORTED
  #define PERIPHERAL_RESET_SUPPORTED
  
  #elif UC_SERIES == XMC41
  #include "XMC4100.h"
  #define CLOCK_GATING_SUPPORTED
  #define PERIPHERAL_RESET_SUPPORTED
  
  #elif UC_SERIES == XMC47
  #include "XMC4700.h"
  #define CLOCK_GATING_SUPPORTED
  #define PERIPHERAL_RESET_SUPPORTED
  #define USB_OTG_SUPPORTED
  
  #elif UC_SERIES == XMC48
  #include "XMC4800.h"
  #define CLOCK_GATING_SUPPORTED
  #define PERIPHERAL_RESET_SUPPORTED
  #define USB_OTG_SUPPORTED
  
  #elif UC_SERIES == XMC11
  #include "XMC1100.h"
  #define CLOCK_GATING_SUPPORTED
  
  #elif UC_SERIES == XMC12
  #include "XMC1200.h"
  #define CLOCK_GATING_SUPPORTED
  
  #elif UC_SERIES == XMC13
  #include "XMC1300.h"
  #define CLOCK_GATING_SUPPORTED
  
  #elif UC_SERIES == XMC14
  #include "XMC1400.h"
  #define CLOCK_GATING_SUPPORTED
  #endif
  
  #endif /* XMC_DEVICE_H */
  