1*5fd0122aSMatthias Ringwald /* --COPYRIGHT--,BSD 2*5fd0122aSMatthias Ringwald * Copyright (c) 2017, Texas Instruments Incorporated 3*5fd0122aSMatthias Ringwald * All rights reserved. 4*5fd0122aSMatthias Ringwald * 5*5fd0122aSMatthias Ringwald * Redistribution and use in source and binary forms, with or without 6*5fd0122aSMatthias Ringwald * modification, are permitted provided that the following conditions 7*5fd0122aSMatthias Ringwald * are met: 8*5fd0122aSMatthias Ringwald * 9*5fd0122aSMatthias Ringwald * * Redistributions of source code must retain the above copyright 10*5fd0122aSMatthias Ringwald * notice, this list of conditions and the following disclaimer. 11*5fd0122aSMatthias Ringwald * 12*5fd0122aSMatthias Ringwald * * Redistributions in binary form must reproduce the above copyright 13*5fd0122aSMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 14*5fd0122aSMatthias Ringwald * documentation and/or other materials provided with the distribution. 15*5fd0122aSMatthias Ringwald * 16*5fd0122aSMatthias Ringwald * * Neither the name of Texas Instruments Incorporated nor the names of 17*5fd0122aSMatthias Ringwald * its contributors may be used to endorse or promote products derived 18*5fd0122aSMatthias Ringwald * from this software without specific prior written permission. 19*5fd0122aSMatthias Ringwald * 20*5fd0122aSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21*5fd0122aSMatthias Ringwald * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22*5fd0122aSMatthias Ringwald * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23*5fd0122aSMatthias Ringwald * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24*5fd0122aSMatthias Ringwald * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25*5fd0122aSMatthias Ringwald * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26*5fd0122aSMatthias Ringwald * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27*5fd0122aSMatthias Ringwald * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28*5fd0122aSMatthias Ringwald * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29*5fd0122aSMatthias Ringwald * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30*5fd0122aSMatthias Ringwald * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*5fd0122aSMatthias Ringwald * --/COPYRIGHT--*/ 32*5fd0122aSMatthias Ringwald #ifndef __SYSCTL_H__ 33*5fd0122aSMatthias Ringwald #define __SYSCTL_H__ 34*5fd0122aSMatthias Ringwald 35*5fd0122aSMatthias Ringwald #include <stdint.h> 36*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/inc/msp.h> 37*5fd0122aSMatthias Ringwald 38*5fd0122aSMatthias Ringwald /* Define to ensure that our current MSP432 has the SYSCTL module. This 39*5fd0122aSMatthias Ringwald definition is included in the device specific header file */ 40*5fd0122aSMatthias Ringwald #ifdef __MCU_HAS_SYSCTL__ 41*5fd0122aSMatthias Ringwald 42*5fd0122aSMatthias Ringwald //***************************************************************************** 43*5fd0122aSMatthias Ringwald // 44*5fd0122aSMatthias Ringwald //! \addtogroup sysctl_api 45*5fd0122aSMatthias Ringwald //! @{ 46*5fd0122aSMatthias Ringwald // 47*5fd0122aSMatthias Ringwald //***************************************************************************** 48*5fd0122aSMatthias Ringwald 49*5fd0122aSMatthias Ringwald //***************************************************************************** 50*5fd0122aSMatthias Ringwald // 51*5fd0122aSMatthias Ringwald // If building with a C++ compiler, make all of the definitions in this header 52*5fd0122aSMatthias Ringwald // have a C binding. 53*5fd0122aSMatthias Ringwald // 54*5fd0122aSMatthias Ringwald //***************************************************************************** 55*5fd0122aSMatthias Ringwald #ifdef __cplusplus 56*5fd0122aSMatthias Ringwald extern "C" 57*5fd0122aSMatthias Ringwald { 58*5fd0122aSMatthias Ringwald #endif 59*5fd0122aSMatthias Ringwald 60*5fd0122aSMatthias Ringwald //***************************************************************************** 61*5fd0122aSMatthias Ringwald // 62*5fd0122aSMatthias Ringwald // Control specific variables 63*5fd0122aSMatthias Ringwald // 64*5fd0122aSMatthias Ringwald //***************************************************************************** 65*5fd0122aSMatthias Ringwald #define SYSCTL_SRAM_BANK7 SYSCTL_SRAM_BANKEN_BNK7_EN 66*5fd0122aSMatthias Ringwald #define SYSCTL_SRAM_BANK6 SYSCTL_SRAM_BANKEN_BNK6_EN 67*5fd0122aSMatthias Ringwald #define SYSCTL_SRAM_BANK5 SYSCTL_SRAM_BANKEN_BNK5_EN 68*5fd0122aSMatthias Ringwald #define SYSCTL_SRAM_BANK4 SYSCTL_SRAM_BANKEN_BNK4_EN 69*5fd0122aSMatthias Ringwald #define SYSCTL_SRAM_BANK3 SYSCTL_SRAM_BANKEN_BNK3_EN 70*5fd0122aSMatthias Ringwald #define SYSCTL_SRAM_BANK2 SYSCTL_SRAM_BANKEN_BNK2_EN 71*5fd0122aSMatthias Ringwald #define SYSCTL_SRAM_BANK1 SYSCTL_SRAM_BANKEN_BNK1_EN 72*5fd0122aSMatthias Ringwald 73*5fd0122aSMatthias Ringwald #define SYSCTL_HARD_RESET 1 74*5fd0122aSMatthias Ringwald #define SYSCTL_SOFT_RESET 0 75*5fd0122aSMatthias Ringwald 76*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_DMA SYSCTL_PERIHALT_CTL_HALT_DMA 77*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_WDT SYSCTL_PERIHALT_CTL_HALT_WDT 78*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_ADC SYSCTL_PERIHALT_CTL_HALT_ADC 79*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_EUSCIB3 SYSCTL_PERIHALT_CTL_HALT_EUB3 80*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_EUSCIB2 SYSCTL_PERIHALT_CTL_HALT_EUB2 81*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_EUSCIB1 SYSCTL_PERIHALT_CTL_HALT_EUB1 82*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_EUSCIB0 SYSCTL_PERIHALT_CTL_HALT_EUB0 83*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_EUSCIA3 SYSCTL_PERIHALT_CTL_HALT_EUA3 84*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_EUSCIA2 SYSCTL_PERIHALT_CTL_HALT_EUA2 85*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_EUSCIA1 SYSCTL_PERIHALT_CTL_HALT_EUA1 86*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_EUSCIA0 SYSCTL_PERIHALT_CTL_HALT_EUA0 87*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_TIMER32_0_MODULE SYSCTL_PERIHALT_CTL_HALT_T32_0 88*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_TIMER16_3 SYSCTL_PERIHALT_CTL_HALT_T16_3 89*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_TIMER16_2 SYSCTL_PERIHALT_CTL_HALT_T16_2 90*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_TIMER16_1 SYSCTL_PERIHALT_CTL_HALT_T16_1 91*5fd0122aSMatthias Ringwald #define SYSCTL_PERIPH_TIMER16_0 SYSCTL_PERIHALT_CTL_HALT_T16_0 92*5fd0122aSMatthias Ringwald 93*5fd0122aSMatthias Ringwald #define SYSCTL_NMIPIN_SRC SYSCTL_NMI_CTLSTAT_PIN_SRC 94*5fd0122aSMatthias Ringwald #define SYSCTL_PCM_SRC SYSCTL_NMI_CTLSTAT_PCM_SRC 95*5fd0122aSMatthias Ringwald #define SYSCTL_PSS_SRC SYSCTL_NMI_CTLSTAT_PSS_SRC 96*5fd0122aSMatthias Ringwald #define SYSCTL_CS_SRC SYSCTL_NMI_CTLSTAT_CS_SRC 97*5fd0122aSMatthias Ringwald 98*5fd0122aSMatthias Ringwald #define SYSCTL_REBOOT_KEY 0x6900 99*5fd0122aSMatthias Ringwald 100*5fd0122aSMatthias Ringwald #define SYSCTL_1_2V_REF (uint32_t)&TLV->ADC14_REF1P2V_TS30C - (uint32_t)TLV_BASE 101*5fd0122aSMatthias Ringwald #define SYSCTL_1_45V_REF (uint32_t)&TLV->ADC14_REF1P45V_TS30C - (uint32_t)TLV_BASE 102*5fd0122aSMatthias Ringwald #define SYSCTL_2_5V_REF (uint32_t)&TLV->ADC14_REF2P5V_TS30C - (uint32_t)TLV_BASE 103*5fd0122aSMatthias Ringwald 104*5fd0122aSMatthias Ringwald #define SYSCTL_85_DEGREES_C 4 105*5fd0122aSMatthias Ringwald #define SYSCTL_30_DEGREES_C 0 106*5fd0122aSMatthias Ringwald 107*5fd0122aSMatthias Ringwald 108*5fd0122aSMatthias Ringwald #define TLV_START 0x00201004 109*5fd0122aSMatthias Ringwald #define TLV_TAG_RESERVED1 1 110*5fd0122aSMatthias Ringwald #define TLV_TAG_RESERVED2 2 111*5fd0122aSMatthias Ringwald #define TLV_TAG_CS 3 112*5fd0122aSMatthias Ringwald #define TLV_TAG_FLASHCTL 4 113*5fd0122aSMatthias Ringwald #define TLV_TAG_ADC14 5 114*5fd0122aSMatthias Ringwald #define TLV_TAG_RESERVED6 6 115*5fd0122aSMatthias Ringwald #define TLV_TAG_RESERVED7 7 116*5fd0122aSMatthias Ringwald #define TLV_TAG_REF 8 117*5fd0122aSMatthias Ringwald #define TLV_TAG_RESERVED9 9 118*5fd0122aSMatthias Ringwald #define TLV_TAG_RESERVED10 10 119*5fd0122aSMatthias Ringwald #define TLV_TAG_DEVINFO 11 120*5fd0122aSMatthias Ringwald #define TLV_TAG_DIEREC 12 121*5fd0122aSMatthias Ringwald #define TLV_TAG_RANDNUM 13 122*5fd0122aSMatthias Ringwald #define TLV_TAG_RESERVED14 14 123*5fd0122aSMatthias Ringwald #define TLV_TAG_BSL 15 124*5fd0122aSMatthias Ringwald #define TLV_TAGEND 0x0BD0E11D 125*5fd0122aSMatthias Ringwald 126*5fd0122aSMatthias Ringwald //***************************************************************************** 127*5fd0122aSMatthias Ringwald // 128*5fd0122aSMatthias Ringwald // Structures for TLV definitions 129*5fd0122aSMatthias Ringwald // 130*5fd0122aSMatthias Ringwald //***************************************************************************** 131*5fd0122aSMatthias Ringwald typedef struct 132*5fd0122aSMatthias Ringwald { 133*5fd0122aSMatthias Ringwald uint32_t maxProgramPulses; 134*5fd0122aSMatthias Ringwald uint32_t maxErasePulses; 135*5fd0122aSMatthias Ringwald } SysCtl_FlashTLV_Info; 136*5fd0122aSMatthias Ringwald 137*5fd0122aSMatthias Ringwald typedef struct 138*5fd0122aSMatthias Ringwald { 139*5fd0122aSMatthias Ringwald uint32_t rDCOIR_FCAL_RSEL04; 140*5fd0122aSMatthias Ringwald uint32_t rDCOIR_FCAL_RSEL5; 141*5fd0122aSMatthias Ringwald uint32_t rDCOIR_MAXPOSTUNE_RSEL04; 142*5fd0122aSMatthias Ringwald uint32_t rDCOIR_MAXNEGTUNE_RSEL04; 143*5fd0122aSMatthias Ringwald uint32_t rDCOIR_MAXPOSTUNE_RSEL5; 144*5fd0122aSMatthias Ringwald uint32_t rDCOIR_MAXNEGTUNE_RSEL5; 145*5fd0122aSMatthias Ringwald uint32_t rDCOIR_CONSTK_RSEL04; 146*5fd0122aSMatthias Ringwald uint32_t rDCOIR_CONSTK_RSEL5; 147*5fd0122aSMatthias Ringwald uint32_t rDCOER_FCAL_RSEL04; 148*5fd0122aSMatthias Ringwald uint32_t rDCOER_FCAL_RSEL5; 149*5fd0122aSMatthias Ringwald uint32_t rDCOER_MAXPOSTUNE_RSEL04; 150*5fd0122aSMatthias Ringwald uint32_t rDCOER_MAXNEGTUNE_RSEL04; 151*5fd0122aSMatthias Ringwald uint32_t rDCOER_MAXPOSTUNE_RSEL5; 152*5fd0122aSMatthias Ringwald uint32_t rDCOER_MAXNEGTUNE_RSEL5; 153*5fd0122aSMatthias Ringwald uint32_t rDCOER_CONSTK_RSEL04; 154*5fd0122aSMatthias Ringwald uint32_t rDCOER_CONSTK_RSEL5; 155*5fd0122aSMatthias Ringwald 156*5fd0122aSMatthias Ringwald } SysCtl_CSCalTLV_Info; 157*5fd0122aSMatthias Ringwald 158*5fd0122aSMatthias Ringwald //***************************************************************************** 159*5fd0122aSMatthias Ringwald // 160*5fd0122aSMatthias Ringwald // Prototypes for the APIs. 161*5fd0122aSMatthias Ringwald // 162*5fd0122aSMatthias Ringwald //***************************************************************************** 163*5fd0122aSMatthias Ringwald 164*5fd0122aSMatthias Ringwald //***************************************************************************** 165*5fd0122aSMatthias Ringwald // 166*5fd0122aSMatthias Ringwald //! Gets the size of the SRAM. 167*5fd0122aSMatthias Ringwald //! 168*5fd0122aSMatthias Ringwald //! \return The total number of bytes of SRAM. 169*5fd0122aSMatthias Ringwald // 170*5fd0122aSMatthias Ringwald //***************************************************************************** 171*5fd0122aSMatthias Ringwald extern uint_least32_t SysCtl_getSRAMSize(void); 172*5fd0122aSMatthias Ringwald 173*5fd0122aSMatthias Ringwald //***************************************************************************** 174*5fd0122aSMatthias Ringwald // 175*5fd0122aSMatthias Ringwald //! Gets the size of the flash. 176*5fd0122aSMatthias Ringwald //! 177*5fd0122aSMatthias Ringwald //! \return The total number of bytes of flash. 178*5fd0122aSMatthias Ringwald // 179*5fd0122aSMatthias Ringwald //***************************************************************************** 180*5fd0122aSMatthias Ringwald extern uint_least32_t SysCtl_getFlashSize(void); 181*5fd0122aSMatthias Ringwald 182*5fd0122aSMatthias Ringwald //***************************************************************************** 183*5fd0122aSMatthias Ringwald // 184*5fd0122aSMatthias Ringwald //! Reboots the device and causes the device to re-initialize itself. 185*5fd0122aSMatthias Ringwald //! 186*5fd0122aSMatthias Ringwald //! \return This function does not return. 187*5fd0122aSMatthias Ringwald // 188*5fd0122aSMatthias Ringwald //***************************************************************************** 189*5fd0122aSMatthias Ringwald extern void SysCtl_rebootDevice(void); 190*5fd0122aSMatthias Ringwald 191*5fd0122aSMatthias Ringwald //***************************************************************************** 192*5fd0122aSMatthias Ringwald // 193*5fd0122aSMatthias Ringwald //! The TLV structure uses a tag or base address to identify segments of the 194*5fd0122aSMatthias Ringwald //! table where information is stored. Some examples of TLV tags are Peripheral 195*5fd0122aSMatthias Ringwald //! Descriptor, Interrupts, Info Block and Die Record. This function retrieves 196*5fd0122aSMatthias Ringwald //! the value of a tag and the length of the tag. 197*5fd0122aSMatthias Ringwald //! 198*5fd0122aSMatthias Ringwald //! \param tag represents the tag for which the information needs to be 199*5fd0122aSMatthias Ringwald //! retrieved. 200*5fd0122aSMatthias Ringwald //! Valid values are: 201*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_RESERVED1 202*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_RESERVED2 203*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_CS 204*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_FLASHCTL 205*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_ADC14 206*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_RESERVED6 207*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_RESERVED7 208*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_REF 209*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_RESERVED9 210*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_RESERVED10 211*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_DEVINFO 212*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_DIEREC 213*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_RANDNUM 214*5fd0122aSMatthias Ringwald //! - \b TLV_TAG_RESERVED14 215*5fd0122aSMatthias Ringwald //! \param instance In some cases a specific tag may have more than one 216*5fd0122aSMatthias Ringwald //! instance. For example there may be multiple instances of timer 217*5fd0122aSMatthias Ringwald //! calibration data present under a single Timer Cal tag. This variable 218*5fd0122aSMatthias Ringwald //! specifies the instance for which information is to be retrieved (0, 219*5fd0122aSMatthias Ringwald //! 1, etc.). When only one instance exists; 0 is passed. 220*5fd0122aSMatthias Ringwald //! \param length Acts as a return through indirect reference. The function 221*5fd0122aSMatthias Ringwald //! retrieves the value of the TLV tag length. This value is pointed to 222*5fd0122aSMatthias Ringwald //! by *length and can be used by the application level once the 223*5fd0122aSMatthias Ringwald //! function is called. If the specified tag is not found then the 224*5fd0122aSMatthias Ringwald //! pointer is null 0. 225*5fd0122aSMatthias Ringwald //! \param data_address acts as a return through indirect reference. Once the 226*5fd0122aSMatthias Ringwald //! function is called data_address points to the pointer that holds the 227*5fd0122aSMatthias Ringwald //! value retrieved from the specified TLV tag. If the specified tag is 228*5fd0122aSMatthias Ringwald //! not found then the pointer is null 0. 229*5fd0122aSMatthias Ringwald //! 230*5fd0122aSMatthias Ringwald //! \return None 231*5fd0122aSMatthias Ringwald // 232*5fd0122aSMatthias Ringwald //***************************************************************************** 233*5fd0122aSMatthias Ringwald extern void SysCtl_getTLVInfo(uint_fast8_t tag, uint_fast8_t instance, 234*5fd0122aSMatthias Ringwald uint_fast8_t *length, uint32_t **data_address); 235*5fd0122aSMatthias Ringwald 236*5fd0122aSMatthias Ringwald //***************************************************************************** 237*5fd0122aSMatthias Ringwald // 238*5fd0122aSMatthias Ringwald //! Enables a set of banks in the SRAM. This can be used to optimize power 239*5fd0122aSMatthias Ringwald //! consumption when every SRAM bank isn't needed. It is important to note 240*5fd0122aSMatthias Ringwald //! that when a higher bank is enabled, all of the SRAM banks below that bank 241*5fd0122aSMatthias Ringwald //! are also enabled. For example, if the user enables SYSCTL_SRAM_BANK7, 242*5fd0122aSMatthias Ringwald //! the banks SYSCTL_SRAM_BANK1 through SYSCTL_SRAM_BANK7 will be enabled 243*5fd0122aSMatthias Ringwald //! (SRAM_BANK0 is reserved and always enabled). 244*5fd0122aSMatthias Ringwald //! 245*5fd0122aSMatthias Ringwald //! \param sramBank The SRAM bank tier to enable. 246*5fd0122aSMatthias Ringwald //! Must be only one of the following values: 247*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK1, 248*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK2, 249*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK3, 250*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK4, 251*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK5, 252*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK6, 253*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK7 254*5fd0122aSMatthias Ringwald //! 255*5fd0122aSMatthias Ringwald //! \note \b SYSCTL_SRAM_BANK0 is reserved and always enabled. 256*5fd0122aSMatthias Ringwald //! 257*5fd0122aSMatthias Ringwald //! \return None. 258*5fd0122aSMatthias Ringwald // 259*5fd0122aSMatthias Ringwald //***************************************************************************** 260*5fd0122aSMatthias Ringwald extern void SysCtl_enableSRAMBank(uint_fast8_t sramBank); 261*5fd0122aSMatthias Ringwald 262*5fd0122aSMatthias Ringwald //***************************************************************************** 263*5fd0122aSMatthias Ringwald // 264*5fd0122aSMatthias Ringwald //! Disables a set of banks in the SRAM. This can be used to optimize power 265*5fd0122aSMatthias Ringwald //! consumption when every SRAM bank isn't needed. It is important to note 266*5fd0122aSMatthias Ringwald //! that when a higher bank is disabled, all of the SRAM banks above that bank 267*5fd0122aSMatthias Ringwald //! are also disabled. For example, if the user disables SYSCTL_SRAM_BANK5, 268*5fd0122aSMatthias Ringwald //! the banks SYSCTL_SRAM_BANK6 through SYSCTL_SRAM_BANK7 will be disabled. 269*5fd0122aSMatthias Ringwald //! 270*5fd0122aSMatthias Ringwald //! \param sramBank The SRAM bank tier to disable. 271*5fd0122aSMatthias Ringwald //! Must be only one of the following values: 272*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK1, 273*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK2, 274*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK3, 275*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK4, 276*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK5, 277*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK6, 278*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK7 279*5fd0122aSMatthias Ringwald //! 280*5fd0122aSMatthias Ringwald //! \note \b SYSCTL_SRAM_BANK0 is reserved and always enabled. 281*5fd0122aSMatthias Ringwald //! 282*5fd0122aSMatthias Ringwald //! \return None. 283*5fd0122aSMatthias Ringwald // 284*5fd0122aSMatthias Ringwald //***************************************************************************** 285*5fd0122aSMatthias Ringwald extern void SysCtl_disableSRAMBank(uint_fast8_t sramBank); 286*5fd0122aSMatthias Ringwald 287*5fd0122aSMatthias Ringwald //***************************************************************************** 288*5fd0122aSMatthias Ringwald // 289*5fd0122aSMatthias Ringwald //! Enables retention of the specified SRAM bank register when the device goes 290*5fd0122aSMatthias Ringwald //! into LPM3 mode. When the system is placed in LPM3 mode, the SRAM 291*5fd0122aSMatthias Ringwald //! banks specified with this function will be placed into retention mode. By 292*5fd0122aSMatthias Ringwald //! default, retention of every SRAM bank except SYSCTL_SRAM_BANK0 (reserved) is 293*5fd0122aSMatthias Ringwald //! disabled. Retention of individual banks can be set without the restrictions 294*5fd0122aSMatthias Ringwald //! of the enable/disable functions. 295*5fd0122aSMatthias Ringwald //! 296*5fd0122aSMatthias Ringwald //! \param sramBank The SRAM banks to enable retention 297*5fd0122aSMatthias Ringwald //! Can be a bitwise OR of the following values: 298*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK1, 299*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK2, 300*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK3, 301*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK4, 302*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK5, 303*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK6, 304*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK7 305*5fd0122aSMatthias Ringwald //! \note \b SYSCTL_SRAM_BANK0 is reserved and retention is always enabled. 306*5fd0122aSMatthias Ringwald //! 307*5fd0122aSMatthias Ringwald //! 308*5fd0122aSMatthias Ringwald //! \return None. 309*5fd0122aSMatthias Ringwald // 310*5fd0122aSMatthias Ringwald //***************************************************************************** 311*5fd0122aSMatthias Ringwald extern void SysCtl_enableSRAMBankRetention(uint_fast8_t sramBank); 312*5fd0122aSMatthias Ringwald 313*5fd0122aSMatthias Ringwald //***************************************************************************** 314*5fd0122aSMatthias Ringwald // 315*5fd0122aSMatthias Ringwald //! Disables retention of the specified SRAM bank register when the device goes 316*5fd0122aSMatthias Ringwald //! into LPM3 mode. When the system is placed in LPM3 mode, the SRAM 317*5fd0122aSMatthias Ringwald //! banks specified with this function will not be placed into retention mode. 318*5fd0122aSMatthias Ringwald //! By default, retention of every SRAM bank except SYSCTL_SRAM_BANK0 (reserved) 319*5fd0122aSMatthias Ringwald //! is disabled. Retention of individual banks can be set without the 320*5fd0122aSMatthias Ringwald //! restrictions of the enable/disable SRAM bank functions. 321*5fd0122aSMatthias Ringwald //! 322*5fd0122aSMatthias Ringwald //! \param sramBank The SRAM banks to disable retention 323*5fd0122aSMatthias Ringwald //! Can be a bitwise OR of the following values: 324*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK1, 325*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK2, 326*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK3, 327*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK4, 328*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK5, 329*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK6, 330*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SRAM_BANK7 331*5fd0122aSMatthias Ringwald //! \note \b SYSCTL_SRAM_BANK0 is reserved and retention is always enabled. 332*5fd0122aSMatthias Ringwald //! 333*5fd0122aSMatthias Ringwald //! \return None. 334*5fd0122aSMatthias Ringwald // 335*5fd0122aSMatthias Ringwald // 336*5fd0122aSMatthias Ringwald //***************************************************************************** 337*5fd0122aSMatthias Ringwald extern void SysCtl_disableSRAMBankRetention(uint_fast8_t sramBank); 338*5fd0122aSMatthias Ringwald 339*5fd0122aSMatthias Ringwald //***************************************************************************** 340*5fd0122aSMatthias Ringwald // 341*5fd0122aSMatthias Ringwald //! Makes it so that the provided peripherals will either halt execution after 342*5fd0122aSMatthias Ringwald //! a CPU HALT. Parameters in this function can be combined to account for 343*5fd0122aSMatthias Ringwald //! multiple peripherals. By default, all peripherals keep running after a 344*5fd0122aSMatthias Ringwald //! CPU HALT. 345*5fd0122aSMatthias Ringwald //! 346*5fd0122aSMatthias Ringwald //! \param devices The peripherals to continue running after a CPU HALT 347*5fd0122aSMatthias Ringwald //! This can be a bitwise OR of the following values: 348*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_DMA, 349*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_WDT, 350*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_ADC, 351*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIB3, 352*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIB2, 353*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIB1 354*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIB0, 355*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIA3, 356*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIA2 357*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIA1, 358*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIA0, 359*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER32_0_MODULE, 360*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER16_3, 361*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER16_2, 362*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER16_1, 363*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER16_0 364*5fd0122aSMatthias Ringwald //! 365*5fd0122aSMatthias Ringwald //! \return None. 366*5fd0122aSMatthias Ringwald // 367*5fd0122aSMatthias Ringwald // 368*5fd0122aSMatthias Ringwald //***************************************************************************** 369*5fd0122aSMatthias Ringwald extern void SysCtl_enablePeripheralAtCPUHalt(uint_fast16_t devices); 370*5fd0122aSMatthias Ringwald 371*5fd0122aSMatthias Ringwald //***************************************************************************** 372*5fd0122aSMatthias Ringwald // 373*5fd0122aSMatthias Ringwald //! Makes it so that the provided peripherals will either halt execution after 374*5fd0122aSMatthias Ringwald //! a CPU HALT. Parameters in this function can be combined to account for 375*5fd0122aSMatthias Ringwald //! multiple peripherals. By default, all peripherals keep running after a 376*5fd0122aSMatthias Ringwald //! CPU HALT. 377*5fd0122aSMatthias Ringwald //! 378*5fd0122aSMatthias Ringwald //! \param devices The peripherals to disable after a CPU HALT 379*5fd0122aSMatthias Ringwald //! 380*5fd0122aSMatthias Ringwald //! The \e devices parameter can be a bitwise OR of the following values: 381*5fd0122aSMatthias Ringwald //! This can be a bitwise OR of the following values: 382*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_DMA, 383*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_WDT, 384*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_ADC, 385*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIB3, 386*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIB2, 387*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIB1 388*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIB0, 389*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIA3, 390*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIA2 391*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIA1, 392*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_EUSCIA0, 393*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER32_0_MODULE, 394*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER16_3, 395*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER16_2, 396*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER16_1, 397*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PERIPH_TIMER16_0 398*5fd0122aSMatthias Ringwald //! 399*5fd0122aSMatthias Ringwald //! \return None. 400*5fd0122aSMatthias Ringwald // 401*5fd0122aSMatthias Ringwald // 402*5fd0122aSMatthias Ringwald //***************************************************************************** 403*5fd0122aSMatthias Ringwald extern void SysCtl_disablePeripheralAtCPUHalt(uint_fast16_t devices); 404*5fd0122aSMatthias Ringwald 405*5fd0122aSMatthias Ringwald //***************************************************************************** 406*5fd0122aSMatthias Ringwald // 407*5fd0122aSMatthias Ringwald //! Sets the type of RESET that happens when a watchdog timeout occurs. 408*5fd0122aSMatthias Ringwald //! 409*5fd0122aSMatthias Ringwald //! \param resetType The type of reset to set 410*5fd0122aSMatthias Ringwald //! 411*5fd0122aSMatthias Ringwald //! The \e resetType parameter must be only one of the following values: 412*5fd0122aSMatthias Ringwald //! - \b SYSCTL_HARD_RESET, 413*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SOFT_RESET 414*5fd0122aSMatthias Ringwald //! 415*5fd0122aSMatthias Ringwald //! \return None. 416*5fd0122aSMatthias Ringwald // 417*5fd0122aSMatthias Ringwald // 418*5fd0122aSMatthias Ringwald //***************************************************************************** 419*5fd0122aSMatthias Ringwald extern void SysCtl_setWDTTimeoutResetType(uint_fast8_t resetType); 420*5fd0122aSMatthias Ringwald 421*5fd0122aSMatthias Ringwald //***************************************************************************** 422*5fd0122aSMatthias Ringwald // 423*5fd0122aSMatthias Ringwald //! Sets the type of RESET that happens when a watchdog password violation 424*5fd0122aSMatthias Ringwald //! occurs. 425*5fd0122aSMatthias Ringwald //! 426*5fd0122aSMatthias Ringwald //! \param resetType The type of reset to set 427*5fd0122aSMatthias Ringwald //! 428*5fd0122aSMatthias Ringwald //! The \e resetType parameter must be only one of the following values: 429*5fd0122aSMatthias Ringwald //! - \b SYSCTL_HARD_RESET, 430*5fd0122aSMatthias Ringwald //! - \b SYSCTL_SOFT_RESET 431*5fd0122aSMatthias Ringwald //! 432*5fd0122aSMatthias Ringwald //! \return None. 433*5fd0122aSMatthias Ringwald // 434*5fd0122aSMatthias Ringwald // 435*5fd0122aSMatthias Ringwald //***************************************************************************** 436*5fd0122aSMatthias Ringwald extern void SysCtl_setWDTPasswordViolationResetType(uint_fast8_t resetType); 437*5fd0122aSMatthias Ringwald 438*5fd0122aSMatthias Ringwald //***************************************************************************** 439*5fd0122aSMatthias Ringwald // 440*5fd0122aSMatthias Ringwald //! Disables NMIs for the provided modules. When disabled, a NMI flag will not 441*5fd0122aSMatthias Ringwald //! occur when a fault condition comes from the corresponding modules. 442*5fd0122aSMatthias Ringwald //! 443*5fd0122aSMatthias Ringwald //! \param flags The NMI sources to disable 444*5fd0122aSMatthias Ringwald //! Can be a bitwise OR of the following parameters: 445*5fd0122aSMatthias Ringwald //! - \b SYSCTL_NMIPIN_SRC, 446*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PCM_SRC, 447*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PSS_SRC, 448*5fd0122aSMatthias Ringwald //! - \b SYSCTL_CS_SRC 449*5fd0122aSMatthias Ringwald //! 450*5fd0122aSMatthias Ringwald // 451*5fd0122aSMatthias Ringwald //***************************************************************************** 452*5fd0122aSMatthias Ringwald extern void SysCtl_disableNMISource(uint_fast8_t flags); 453*5fd0122aSMatthias Ringwald 454*5fd0122aSMatthias Ringwald //***************************************************************************** 455*5fd0122aSMatthias Ringwald // 456*5fd0122aSMatthias Ringwald //! Enables NMIs for the provided modules. When enabled, a NMI flag will 457*5fd0122aSMatthias Ringwald //! occur when a fault condition comes from the corresponding modules. 458*5fd0122aSMatthias Ringwald //! 459*5fd0122aSMatthias Ringwald //! \param flags The NMI sources to enable 460*5fd0122aSMatthias Ringwald //! Can be a bitwise OR of the following parameters: 461*5fd0122aSMatthias Ringwald //! - \b SYSCTL_NMIPIN_SRC, 462*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PCM_SRC, 463*5fd0122aSMatthias Ringwald //! - \b SYSCTL_PSS_SRC, 464*5fd0122aSMatthias Ringwald //! - \b SYSCTL_CS_SRC 465*5fd0122aSMatthias Ringwald //! 466*5fd0122aSMatthias Ringwald // 467*5fd0122aSMatthias Ringwald //***************************************************************************** 468*5fd0122aSMatthias Ringwald extern void SysCtl_enableNMISource(uint_fast8_t flags); 469*5fd0122aSMatthias Ringwald 470*5fd0122aSMatthias Ringwald //***************************************************************************** 471*5fd0122aSMatthias Ringwald // 472*5fd0122aSMatthias Ringwald //! Returns the current sources of NMIs that are enabled 473*5fd0122aSMatthias Ringwald //! 474*5fd0122aSMatthias Ringwald //! \return Bitwise OR of NMI flags that are enabled 475*5fd0122aSMatthias Ringwald // 476*5fd0122aSMatthias Ringwald //***************************************************************************** 477*5fd0122aSMatthias Ringwald extern uint_fast8_t SysCtl_getNMISourceStatus(void); 478*5fd0122aSMatthias Ringwald 479*5fd0122aSMatthias Ringwald //***************************************************************************** 480*5fd0122aSMatthias Ringwald // 481*5fd0122aSMatthias Ringwald //! Enables glitch suppression on the reset pin of the device. Refer to the 482*5fd0122aSMatthias Ringwald //! device data sheet for specific information about glitch suppression 483*5fd0122aSMatthias Ringwald //! 484*5fd0122aSMatthias Ringwald //! \return None. 485*5fd0122aSMatthias Ringwald // 486*5fd0122aSMatthias Ringwald // 487*5fd0122aSMatthias Ringwald //***************************************************************************** 488*5fd0122aSMatthias Ringwald extern void SysCtl_enableGlitchFilter(void); 489*5fd0122aSMatthias Ringwald 490*5fd0122aSMatthias Ringwald //***************************************************************************** 491*5fd0122aSMatthias Ringwald // 492*5fd0122aSMatthias Ringwald //! Disables glitch suppression on the reset pin of the device. Refer to the 493*5fd0122aSMatthias Ringwald //! device data sheet for specific information about glitch suppression 494*5fd0122aSMatthias Ringwald //! 495*5fd0122aSMatthias Ringwald //! \return None. 496*5fd0122aSMatthias Ringwald // 497*5fd0122aSMatthias Ringwald // 498*5fd0122aSMatthias Ringwald //***************************************************************************** 499*5fd0122aSMatthias Ringwald extern void SysCtl_disableGlitchFilter(void); 500*5fd0122aSMatthias Ringwald 501*5fd0122aSMatthias Ringwald //***************************************************************************** 502*5fd0122aSMatthias Ringwald // 503*5fd0122aSMatthias Ringwald //! Retrieves the calibration constant of the temperature sensor to be used 504*5fd0122aSMatthias Ringwald //! in temperature calculation. 505*5fd0122aSMatthias Ringwald //! 506*5fd0122aSMatthias Ringwald //! \param refVoltage Reference voltage being used. 507*5fd0122aSMatthias Ringwald //! 508*5fd0122aSMatthias Ringwald //! The \e refVoltage parameter must be only one of the following values: 509*5fd0122aSMatthias Ringwald //! - \b SYSCTL_1_2V_REF 510*5fd0122aSMatthias Ringwald //! - \b SYSCTL_1_45V_REF 511*5fd0122aSMatthias Ringwald //! - \b SYSCTL_2_5V_REF 512*5fd0122aSMatthias Ringwald //! 513*5fd0122aSMatthias Ringwald //! \param temperature is the calibration temperature that the user wants to be 514*5fd0122aSMatthias Ringwald //! returned. 515*5fd0122aSMatthias Ringwald //! 516*5fd0122aSMatthias Ringwald //! The \e temperature parameter must be only one of the following values: 517*5fd0122aSMatthias Ringwald //! - \b SYSCTL_30_DEGREES_C 518*5fd0122aSMatthias Ringwald //! - \b SYSCTL_85_DEGREES_C 519*5fd0122aSMatthias Ringwald //! 520*5fd0122aSMatthias Ringwald //! \return None. 521*5fd0122aSMatthias Ringwald // 522*5fd0122aSMatthias Ringwald // 523*5fd0122aSMatthias Ringwald //***************************************************************************** 524*5fd0122aSMatthias Ringwald extern uint_fast16_t SysCtl_getTempCalibrationConstant(uint32_t refVoltage, 525*5fd0122aSMatthias Ringwald uint32_t temperature); 526*5fd0122aSMatthias Ringwald 527*5fd0122aSMatthias Ringwald //***************************************************************************** 528*5fd0122aSMatthias Ringwald // 529*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers. 530*5fd0122aSMatthias Ringwald // 531*5fd0122aSMatthias Ringwald //***************************************************************************** 532*5fd0122aSMatthias Ringwald #ifdef __cplusplus 533*5fd0122aSMatthias Ringwald } 534*5fd0122aSMatthias Ringwald #endif 535*5fd0122aSMatthias Ringwald 536*5fd0122aSMatthias Ringwald //***************************************************************************** 537*5fd0122aSMatthias Ringwald // 538*5fd0122aSMatthias Ringwald // Close the Doxygen group. 539*5fd0122aSMatthias Ringwald //! @} 540*5fd0122aSMatthias Ringwald // 541*5fd0122aSMatthias Ringwald //***************************************************************************** 542*5fd0122aSMatthias Ringwald 543*5fd0122aSMatthias Ringwald #endif /* __MCU_HAS_SYSCTL__ */ 544*5fd0122aSMatthias Ringwald 545*5fd0122aSMatthias Ringwald #endif // __SYSCTL_H__ 546