123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465 |
- /** @file system.h
- * @brief System Driver Header File
- * @date 29.May.2013
- * @version 03.05.02
- *
- * This file contains:
- * - Definitions
- * - Types
- * .
- * which are relevant for the System driver.
- */
- /* (c) Texas Instruments 2009-2013, All rights reserved. */
- #ifndef __SYS_SYSTEM_H__
- #define __SYS_SYSTEM_H__
- #include "reg_system.h"
- #include "reg_flash.h"
- #include "reg_tcram.h"
- #include "gio.h"
- /* USER CODE BEGIN (0) */
- /* USER CODE END */
- /* System General Definitions */
- /** @enum systemInterrupt
- * @brief Alias names for clock sources
- *
- * This enumeration is used to provide alias names for the clock sources:
- * - IRQ
- * - FIQ
- */
- enum systemInterrupt
- {
- SYS_IRQ, /**< Alias for IRQ interrupt */
- SYS_FIQ /**< Alias for FIQ interrupt */
- };
- /** @enum systemClockSource
- * @brief Alias names for clock sources
- *
- * This enumeration is used to provide alias names for the clock sources:
- * - Oscillator
- * - Pll1
- * - External1
- * - Low Power Oscillator Low
- * - Low Power Oscillator High
- * - PLL2
- * - External2
- * - Synchronous VCLK1
- */
- enum systemClockSource
- {
- SYS_OSC = 0U, /**< Alias for oscillator clock Source */
- SYS_PLL1 = 1U, /**< Alias for Pll1 clock Source */
- SYS_EXTERNAL1 = 3U, /**< Alias for external clock Source */
- SYS_LPO_LOW = 4U, /**< Alias for low power oscillator low clock Source */
- SYS_LPO_HIGH = 5U, /**< Alias for low power oscillator high clock Source */
- SYS_PLL2 = 6U, /**< Alias for Pll2 clock Source */
- SYS_EXTERNAL2 = 7U, /**< Alias for external 2 clock Source */
- SYS_VCLK = 9U /**< Alias for synchronous VCLK1 clock Source */
- };
- #define SYS_DOZE_MODE 0x000F3F02U
- #define SYS_SNOOZE_MODE 0x000F3F03U
- #define SYS_SLEEP_MODE 0x000FFFFFU
- #define LPO_TRIM_VALUE (((*(volatile uint32 *)0xF00801B4U) & 0xFFFF0000U)>>16U)
- #define SYS_EXCEPTION (*(volatile uint32 *)0xFFFFFFE4U)
- #define POWERON_RESET 0x8000U
- #define OSC_FAILURE_RESET 0x4000U
- #define WATCHDOG_RESET 0x2000U
- #define ICEPICK_RESET 0x2000U
- #define CPU_RESET 0x0020U
- #define SW_RESET 0x0010U
- #define WATCHDOG_STATUS (*(volatile uint32 *)0xFFFFFC98U)
- #define DEVICE_ID_REV (*(volatile uint32 *)0xFFFFFFF0U)
- /** @def OSC_FREQ
- * @brief Oscillator clock source exported from HALCoGen GUI
- *
- * Oscillator clock source exported from HALCoGen GUI
- */
- #define OSC_FREQ 16.0F
- /** @def PLL1_FREQ
- * @brief PLL 1 clock source exported from HALCoGen GUI
- *
- * PLL 1 clock source exported from HALCoGen GUI
- */
- #define PLL1_FREQ 200.00F
- /** @def LPO_LF_FREQ
- * @brief LPO Low Freq Oscillator source exported from HALCoGen GUI
- *
- * LPO Low Freq Oscillator source exported from HALCoGen GUI
- */
- #define LPO_LF_FREQ 0.080F
- /** @def LPO_HF_FREQ
- * @brief LPO High Freq Oscillator source exported from HALCoGen GUI
- *
- * LPO High Freq Oscillator source exported from HALCoGen GUI
- */
- #define LPO_HF_FREQ 10.000F
- /** @def PLL1_FREQ
- * @brief PLL 2 clock source exported from HALCoGen GUI
- *
- * PLL 2 clock source exported from HALCoGen GUI
- */
- #define PLL2_FREQ 200.00F
- /** @def GCLK_FREQ
- * @brief GCLK domain frequency exported from HALCoGen GUI
- *
- * GCLK domain frequency exported from HALCoGen GUI
- */
- #define GCLK_FREQ 200.000F
- /** @def HCLK_FREQ
- * @brief HCLK domain frequency exported from HALCoGen GUI
- *
- * HCLK domain frequency exported from HALCoGen GUI
- */
- #define HCLK_FREQ 200.000F
- /** @def RTI_FREQ
- * @brief RTI Clock frequency exported from HALCoGen GUI
- *
- * RTI Clock frequency exported from HALCoGen GUI
- */
- #define RTI_FREQ 100.000F
- /** @def AVCLK1_FREQ
- * @brief AVCLK1 Domain frequency exported from HALCoGen GUI
- *
- * AVCLK Domain frequency exported from HALCoGen GUI
- */
- #define AVCLK1_FREQ 100.000F
- /** @def AVCLK2_FREQ
- * @brief AVCLK2 Domain frequency exported from HALCoGen GUI
- *
- * AVCLK2 Domain frequency exported from HALCoGen GUI
- */
- #define AVCLK2_FREQ 100.0F
- /** @def AVCLK3_FREQ
- * @brief AVCLK3 Domain frequency exported from HALCoGen GUI
- *
- * AVCLK3 Domain frequency exported from HALCoGen GUI
- */
- #define AVCLK3_FREQ 100.000F
- /** @def VCLK1_FREQ
- * @brief VCLK1 Domain frequency exported from HALCoGen GUI
- *
- * VCLK1 Domain frequency exported from HALCoGen GUI
- */
- #define VCLK1_FREQ 100.000F
- /** @def VCLK2_FREQ
- * @brief VCLK2 Domain frequency exported from HALCoGen GUI
- *
- * VCLK2 Domain frequency exported from HALCoGen GUI
- */
- #define VCLK2_FREQ 100.000F
- /** @def SYS_PRE1
- * @brief Alias name for RTI1CLK PRE clock source
- *
- * This is an alias name for the RTI1CLK pre clock source.
- * This can be either:
- * - Oscillator
- * - Pll
- * - 32 kHz Oscillator
- * - External
- * - Low Power Oscillator Low
- * - Low Power Oscillator High
- * - Flexray Pll
- */
- /*SAFETYMCUSW 79 S MR:19.4 <REVIEWED> "Macro filled using GUI parameter cannot be avoided" */
- #define SYS_PRE1 SYS_PLL1
- /** @def SYS_PRE2
- * @brief Alias name for RTI2CLK pre clock source
- *
- * This is an alias name for the RTI2CLK pre clock source.
- * This can be either:
- * - Oscillator
- * - Pll
- * - 32 kHz Oscillator
- * - External
- * - Low Power Oscillator Low
- * - Low Power Oscillator High
- * - Flexray Pll
- */
- /*SAFETYMCUSW 79 S MR:19.4 <REVIEWED> "Macro filled using GUI parameter cannot be avoided" */
- #define SYS_PRE2 SYS_PLL1
- /* Configuration registers */
- typedef struct system_config_reg
- {
- uint32 CONFIG_SYSPC1;
- uint32 CONFIG_SYSPC2;
- uint32 CONFIG_SYSPC7;
- uint32 CONFIG_SYSPC8;
- uint32 CONFIG_SYSPC9;
- uint32 CONFIG_CSDIS;
- uint32 CONFIG_CDDIS;
- uint32 CONFIG_GHVSRC;
- uint32 CONFIG_VCLKASRC;
- uint32 CONFIG_RCLKSRC;
- uint32 CONFIG_MSTGCR;
- uint32 CONFIG_MINITGCR;
- uint32 CONFIG_MSINENA;
- uint32 CONFIG_PLLCTL1;
- uint32 CONFIG_PLLCTL2;
- uint32 CONFIG_UERFLAG;
- uint32 CONFIG_LPOMONCTL;
- uint32 CONFIG_CLKTEST;
- uint32 CONFIG_DFTCTRLREG1;
- uint32 CONFIG_DFTCTRLREG2;
- uint32 CONFIG_GPREG1;
- uint32 CONFIG_RAMGCR;
- uint32 CONFIG_BMMCR1;
- uint32 CONFIG_MMUGCR;
- uint32 CONFIG_CLKCNTL;
- uint32 CONFIG_ECPCNTL;
- uint32 CONFIG_DEVCR1;
- uint32 CONFIG_SYSECR;
- uint32 CONFIG_PLLCTL3;
- uint32 CONFIG_STCCLKDIV;
- uint32 CONFIG_CLK2CNTL;
- uint32 CONFIG_VCLKACON1;
- uint32 CONFIG_CLKSLIP;
- uint32 CONFIG_EFC_CTLEN;
- } system_config_reg_t;
- /* Configuration registers initial value */
- #define SYS_SYSPC1_CONFIGVALUE 0U
- #define SYS_SYSPC2_CONFIGVALUE 1U
- #define SYS_SYSPC7_CONFIGVALUE 0U
- #define SYS_SYSPC8_CONFIGVALUE 0U
- #define SYS_SYSPC9_CONFIGVALUE 1U
- #define SYS_CSDIS_CONFIGVALUE 0x00000000U\
- | 0x00000000U \
- | 0x00000008U \
- | 0x00000080U \
- | 0x00000000U \
- | 0x00000000U \
- | 0x00000000U\
- | (1U << 2U)
-
- #define SYS_CDDIS_CONFIGVALUE (FALSE << 4U )\
- |(TRUE << 5U )\
- |(FALSE << 8U )\
- |(FALSE << 10U)\
- |(FALSE << 11U)
-
- #define SYS_GHVSRC_CONFIGVALUE (SYS_PLL1 << 24U) \
- | (SYS_PLL1 << 16U) \
- | SYS_PLL1
-
- #define SYS_VCLKASRC_CONFIGVALUE (SYS_VCLK << 8U)\
- | SYS_VCLK
-
- #define SYS_RCLKSRC_CONFIGVALUE (1U << 24U)\
- | (SYS_VCLK << 16U)\
- | (1U << 8U)\
- | SYS_VCLK
-
- #define SYS_MSTGCR_CONFIGVALUE 0x00000105U
- #define SYS_MINITGCR_CONFIGVALUE 0x5U
- #define SYS_MSINENA_CONFIGVALUE 0U
- #define SYS_PLLCTL1_CONFIGVALUE_1 0x00000000U \
- | 0x20000000U \
- | ((0x1FU)<< 24U) \
- | 0x00000000U \
- | ((6U - 1U)<< 16U)\
- | ((150U - 1U)<< 8U)
-
- #define SYS_PLLCTL1_CONFIGVALUE_2 ( (SYS_PLLCTL1_CONFIGVALUE_1) & 0xE0FFFFFFU)|((1U - 1U)<< 24U)
-
- #define SYS_PLLCTL2_CONFIGVALUE 0x00000000U\
- | (255U << 22U)\
- | (7U << 12U)\
- | ((2U - 1U)<< 9U)\
- | 61U
-
- #define SYS_UERFLAG_CONFIGVALUE 0U
- #define SYS_LPOMONCTL_CONFIGVALUE_1 (1U << 24U) | LPO_TRIM_VALUE
- #define SYS_LPOMONCTL_CONFIGVALUE_2 (1U << 24U) | (16U << 8U) | 8U
- #define SYS_CLKTEST_CONFIGVALUE 0x000A0000U
- #define SYS_DFTCTRLREG1_CONFIGVALUE 0x00002205U
- #define SYS_DFTCTRLREG2_CONFIGVALUE 0x5U
- #define SYS_GPREG1_CONFIGVALUE 0x0005FFFFU
- #define SYS_RAMGCR_CONFIGVALUE 0x00050000U
- #define SYS_BMMCR1_CONFIGVALUE 0xAU
- #define SYS_MMUGCR_CONFIGVALUE 0U
- #define SYS_CLKCNTL_CONFIGVALUE (1U << 8U) \
- | (1U << 16U) \
- | (1U << 24U)
-
- #define SYS_ECPCNTL_CONFIGVALUE (0U << 24U)\
- | (0U << 23U)\
- | ((8U - 1U) & 0xFFFFU)
-
- #define SYS_DEVCR1_CONFIGVALUE 0xAU
- #define SYS_SYSECR_CONFIGVALUE 0x00004000U
- #define SYS2_PLLCTL3_CONFIGVALUE_1 ((2U - 1U) << 29U)\
- | ((0x1FU)<< 24U) \
- | ((6U - 1U)<< 16U) \
- | ((150U - 1U) << 8U)
-
- #define SYS2_PLLCTL3_CONFIGVALUE_2 ((SYS2_PLLCTL3_CONFIGVALUE_1) & 0xE0FFFFFFU)|((1U - 1U)<< 24U)
- #define SYS2_STCCLKDIV_CONFIGVALUE 0U
- #define SYS2_CLK2CNTL_CONFIGVALUE (1U) \
- | (1U << 8U)
- #define SYS2_VCLKACON1_CONFIGVALUE (1U << 24U) \
- | (1U << 20U) \
- | (SYS_VCLK << 16U)\
- | (1U << 8U)\
- | (1U << 4U) \
- | SYS_VCLK
- #define SYS2_CLKSLIP_CONFIGVALUE 0x5U
- #define SYS2_EFC_CTLEN_CONFIGVALUE 0x5U
-
- void systemGetConfigValue(system_config_reg_t *config_reg, config_value_type_t type);
- /* USER CODE BEGIN (1) */
- /* USER CODE END */
- /* FlashW General Definitions */
- /** @enum flashWPowerModes
- * @brief Alias names for flash bank power modes
- *
- * This enumeration is used to provide alias names for the flash bank power modes:
- * - sleep
- * - standby
- * - active
- */
- enum flashWPowerModes
- {
- SYS_SLEEP = 0U, /**< Alias for flash bank power mode sleep */
- SYS_STANDBY = 1U, /**< Alias for flash bank power mode standby */
- SYS_ACTIVE = 3U /**< Alias for flash bank power mode active */
- };
- /* USER CODE BEGIN (2) */
- /* USER CODE END */
- #define FSM_WR_ENA_HL (*(volatile uint32 *)0xFFF87288U)
- #define EEPROM_CONFIG_HL (*(volatile uint32 *)0xFFF872B8U)
- /* Configuration registers */
- typedef struct tcmflash_config_reg
- {
- uint32 CONFIG_FRDCNTL;
- uint32 CONFIG_FEDACCTRL1;
- uint32 CONFIG_FEDACCTRL2;
- uint32 CONFIG_FEDACSDIS;
- uint32 CONFIG_FBPROT;
- uint32 CONFIG_FBSE;
- uint32 CONFIG_FBAC;
- uint32 CONFIG_FBFALLBACK;
- uint32 CONFIG_FPAC1;
- uint32 CONFIG_FPAC2;
- uint32 CONFIG_FMAC;
- uint32 CONFIG_FLOCK;
- uint32 CONFIG_FDIAGCTRL;
- uint32 CONFIG_FEDACSDIS2;
- } tcmflash_config_reg_t;
- /* Configuration registers initial value */
- #define TCMFLASH_FRDCNTL_CONFIGVALUE 0x00000000U | (3U << 8U) | (1U << 4U) | 1U
- #define TCMFLASH_FEDACCTRL1_CONFIGVALUE 0x000A0005U
- #define TCMFLASH_FEDACCTRL2_CONFIGVALUE 0U
- #define TCMFLASH_FEDACSDIS_CONFIGVALUE 0U
- #define TCMFLASH_FBPROT_CONFIGVALUE 0U
- #define TCMFLASH_FBSE_CONFIGVALUE 0U
- #define TCMFLASH_FBAC_CONFIGVALUE 0xFU
- #define TCMFLASH_FBFALLBACK_CONFIGVALUE 0x00000000U\
- | (SYS_ACTIVE << 14U) \
- | (SYS_SLEEP << 12U) \
- | (SYS_SLEEP << 10U) \
- | (SYS_SLEEP << 8U) \
- | (SYS_SLEEP << 6U) \
- | (SYS_SLEEP << 4U) \
- | (SYS_ACTIVE << 2U) \
- | SYS_ACTIVE \
-
- #define TCMFLASH_FPAC1_CONFIGVALUE 0x00C80001U
- #define TCMFLASH_FPAC2_CONFIGVALUE 0U
- #define TCMFLASH_FMAC_CONFIGVALUE 0U
- #define TCMFLASH_FLOCK_CONFIGVALUE 0x55AAU
- #define TCMFLASH_FDIAGCTRL_CONFIGVALUE 0x000A0000U
- #define TCMFLASH_FEDACSDIS2_CONFIGVALUE 0U
- void tcmflashGetConfigValue(tcmflash_config_reg_t *config_reg, config_value_type_t type);
- /* USER CODE BEGIN (3) */
- /* USER CODE END */
- /* System Interface Functions */
- void setupPLL(void);
- void trimLPO(void);
- void setupFlash(void);
- void periphInit(void);
- void mapClocks(void);
- void systemInit(void);
- void systemPowerDown(uint32 mode);
- /*Configuration registers
- * index 0: Even RAM
- * index 1: Odd RAM
- */
- typedef struct sram_config_reg
- {
- uint32 CONFIG_RAMCTRL[2U];
- uint32 CONFIG_RAMTHRESHOLD[2U];
- uint32 CONFIG_RAMINTCTRL[2U];
- uint32 CONFIG_RAMTEST[2U];
- uint32 CONFIG_RAMADDRDECVECT[2U];
- } sram_config_reg_t;
- /* Configuration registers initial value */
- #define SRAM_RAMCTRL_CONFIGVALUE 0x0005000AU
- #define SRAM_RAMTHRESHOLD_CONFIGVALUE 1U
- #define SRAM_RAMINTCTRL_CONFIGVALUE 1U
- #define SRAM_RAMTEST_CONFIGVALUE 0x5U
- #define SRAM_RAMADDRDECVECT_CONFIGVALUE 0U
- void sramGetConfigValue(sram_config_reg_t *config_reg, config_value_type_t type);
- #endif
|