/**
 * @file xmc_device.h
 * @date 2019-07-26
 *
 * @cond
 *****************************************************************************
 * XMClib v2.2.0 - XMC Peripheral Driver Library
 *
 * Copyright (c) 2015-2020, Infineon Technologies AG
 * All rights reserved.
 *
 * Boost Software License - Version 1.0 - August 17th, 2003
 *
 * Permission is hereby granted, free of charge, to any person or organization
 * obtaining a copy of the software and accompanying documentation covered by
 * this license (the "Software") to use, reproduce, display, distribute,
 * execute, and transmit the Software, and to prepare derivative works of the
 * Software, and to permit third-parties to whom the Software is furnished to
 * do so, all subject to the following:
 *
 * The copyright notices in the Software and this entire statement, including
 * the above license grant, this restriction and the following disclaimer,
 * must be included in all copies of the Software, in whole or in part, and
 * all derivative works of the Software, unless such copies or derivative
 * works are solely in the form of machine-executable object code generated by
 * a source language processor.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
 * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 * To improve the quality of the software, users are encouraged to share
 * modifications, enhancements or bug fixes with Infineon Technologies AG
 * at XMCSupport@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
 *
 * 2016-06-14:
 *     - Added XMC1201_T028x0016, XMC1202_T016x0064, XMC1301_T016x0032, XMC1302_Q040x0200,
 *             XMC1302_T028x0016, XMC1402_T038x0032, XMC1402_T038x0064, XMC1402_T038x0128,
 *             XMC1403_Q040x0064, XMC1403_Q040x0128, XMC1403_Q040x0200, XMC1402_T038x0200
 *             XMC1402_Q040x0200, XMC1402_Q048x0200, XMC1201_T028x0032
 *
 * 2018-07-30
 *     - Added XMC1302_T028x0200, XMC1302_T028x0128, XMC1302_T028x0064, XMC1302_T028x0032
 *
 * 2019-07-26
 *     - Added XMC1404_Q040x0200, XMC1404_Q040x0128, XMC1404_Q040x0064
 *
 * @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    XMC1301    (1301)
#define    XMC1302    (1302)
#define    XMC1200    (1200)
#define    XMC1201    (1201)
#define    XMC1202    (1202)
#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(XMC1201_T028x0032)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC12
#define UC_DEVICE    XMC1201
#define UC_PACKAGE   TSSOP28
#define UC_FLASH     (32UL)
#define CCU4V2

#elif defined(XMC1201_T028x0016)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC12
#define UC_DEVICE    XMC1201
#define UC_PACKAGE   TSSOP28
#define UC_FLASH     (16UL)
#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_T016x0064)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC12
#define UC_DEVICE    XMC1202
#define UC_PACKAGE   TSSOP16
#define UC_FLASH     (64UL)
#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_T016x0032)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC13
#define UC_DEVICE    XMC1301
#define UC_PACKAGE   TSSOP16
#define UC_FLASH     (32UL)
#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_Q040x0200)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC13
#define UC_DEVICE    XMC1302
#define UC_PACKAGE   VQFN40
#define UC_FLASH     (200UL)
#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_T028x0200)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC13
#define UC_DEVICE    XMC1302
#define UC_PACKAGE   TSSOP28
#define UC_FLASH     (200UL)
#define CCU4V2
#define CCU8V2

#elif defined(XMC1302_T028x0128)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC13
#define UC_DEVICE    XMC1302
#define UC_PACKAGE   TSSOP28
#define UC_FLASH     (128UL)
#define CCU4V2
#define CCU8V2

#elif defined(XMC1302_T028x0064)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC13
#define UC_DEVICE    XMC1302
#define UC_PACKAGE   TSSOP28
#define UC_FLASH     (64UL)
#define CCU4V2
#define CCU8V2

#elif defined(XMC1302_T028x0032)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC13
#define UC_DEVICE    XMC1302
#define UC_PACKAGE   TSSOP28
#define UC_FLASH     (32UL)
#define CCU4V2
#define CCU8V2

#elif defined(XMC1302_T028x0016)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC13
#define UC_DEVICE    XMC1302
#define UC_PACKAGE   TSSOP28
#define UC_FLASH     (16UL)
#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_T038x0032)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1402
#define UC_PACKAGE   TSSOP38
#define UC_FLASH     (32UL)
#define CCU4V3
#define CCU8V3

#elif defined(XMC1402_T038x0064)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1402
#define UC_PACKAGE   TSSOP38
#define UC_FLASH     (64UL)
#define CCU4V3
#define CCU8V3

#elif defined(XMC1402_T038x0128)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1402
#define UC_PACKAGE   TSSOP38
#define UC_FLASH     (128UL)
#define CCU4V3
#define CCU8V3

#elif defined(XMC1402_T038x0200)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1402
#define UC_PACKAGE   TSSOP38
#define UC_FLASH     (200UL)
#define CCU4V3
#define CCU8V3

#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_Q040x0200)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1402
#define UC_PACKAGE   VQFN40
#define UC_FLASH     (200UL)
#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_Q048x0200)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1402
#define UC_PACKAGE   VQFN48
#define UC_FLASH     (200UL)
#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_Q040x0064)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1403
#define UC_PACKAGE   VQFN40
#define UC_FLASH     (64UL)
#define MULTICAN_PLUS
#define CCU4V3

#elif defined(XMC1403_Q040x0128)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1403
#define UC_PACKAGE   VQFN40
#define UC_FLASH     (128UL)
#define MULTICAN_PLUS
#define CCU4V3

#elif defined(XMC1403_Q040x0200)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1403
#define UC_PACKAGE   VQFN40
#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_Q040x0064)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1404
#define UC_PACKAGE   VQFN40
#define UC_FLASH     (64UL)
#define MULTICAN_PLUS
#define CCU4V3
#define CCU8V3

#elif defined(XMC1404_Q040x0128)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1404
#define UC_PACKAGE   VQFN40
#define UC_FLASH     (128UL)
#define MULTICAN_PLUS
#define CCU4V3
#define CCU8V3

#elif defined(XMC1404_Q040x0200)
#define UC_FAMILY    XMC1
#define UC_SERIES    XMC14
#define UC_DEVICE    XMC1404
#define UC_PACKAGE   VQFN40
#define UC_FLASH     (200UL)
#define MULTICAN_PLUS
#define CCU4V3
#define CCU8V3

#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 */
