rt-thread/bsp/tms320f28379d/libraries/common/deprecated/driverlib/sysctl.h

284 lines
10 KiB
C

//###########################################################################
//
// FILE: sysctl.h
//
// TITLE: Stellaris style wrapper driver for F2837x system control.
//
//###########################################################################
// $TI Release: F2837xD Support Library v3.05.00.00 $
// $Release Date: Tue Jun 26 03:15:23 CDT 2018 $
// $Copyright:
// Copyright (C) 2013-2018 Texas Instruments Incorporated - http://www.ti.com/
//
// 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 Texas Instruments Incorporated 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
// OWNER 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.
// $
//###########################################################################
#ifndef __SYSCTL_H__
#define __SYSCTL_H__
//*****************************************************************************
//
// If building with a C++ compiler, make all of the definitions in this header
// have a C binding.
//
//*****************************************************************************
#ifdef __cplusplus
extern "C"
{
#endif
//*****************************************************************************
//
//! \addtogroup sysctl_api
//! @{
//
//*****************************************************************************
#include "inc/hw_types.h"
//*****************************************************************************
//
//! Defined system clock oscillator source speed. Adjust this to reflect your
//! actual clock speed.
//
//*****************************************************************************
#if defined(_LAUNCHXL_F28379D) || defined(_LAUNCHXL_F28377S)
#define SYSTEM_CLOCK_SPEED 10000000
#else
#define SYSTEM_CLOCK_SPEED 20000000
#endif
//*****************************************************************************
//
// The following are values that can be passed to the SysCtlClockSet() API as
// the ui32Config parameter.
//
//*****************************************************************************
#define SYSCTL_SYSDIV_M 0x00001F80
#define SYSCTL_SYSDIV_S 0x00000007
// Only 1 or even values up to 126 are allowed
#define SYSCTL_SYSDIV(x) ((((x == 1) ? 0 : (x / 2)) << SYSCTL_SYSDIV_S) & SYSCTL_SYSDIV_M)
#define SYSCTL_IMULT_M 0x0000007F
#define SYSCTL_IMULT_S 0x00000000
#define SYSCTL_IMULT(x) (((x) << SYSCTL_IMULT_S) & SYSCTL_IMULT_M)
#define SYSCTL_FMULT_M 0x00006000
#define SYSCTL_FMULT_S 0x0000000D
#define SYSCTL_FMULT_0 0x00000000
#define SYSCTL_FMULT_1_4 0x00002000
#define SYSCTL_FMULT_1_2 0x00004000
#define SYSCTL_FMULT_3_4 0x00006000
#define SYSCTL_OSCSRC_M 0x00030000
#define SYSCTL_OSCSRC_S 0x00000010
#define SYSCTL_OSCSRC_OSC2 0x00000000
#define SYSCTL_OSCSRC_XTAL 0x00010000
#define SYSCTL_OSCSRC_OSC1 0x00020000
#define SYSCTL_LSDIV_M 0x00700000
#define SYSCTL_LSDIV_S 0x00000014
// Only 1 or even values up to 14 are allowed
#define SYSCTL_LSDIV(x) (((x == 1) ? 0 : (x / 2)) << SYSCTL_LSDIV_S) & SYSCTL_LSDIV_M)
#define SYSCTL_PLL_ENABLE 0x80000000
#define SYSCTL_PLL_DISABLE 0x00000000
//*****************************************************************************
//
// The following are values that can be passed to the
// SysCtlPeripheralPresent(), SysCtlPeripheralEnable(),
// SysCtlPeripheralDisable(), and SysCtlPeripheralReset() APIs as the
// ui32Peripheral parameter. The peripherals in the fourth group (upper nibble
// is 3) can only be used with the SysCtlPeripheralPresent() API.
//
//*****************************************************************************
#define SYSCTL_PERIPH_REG_M 0x0000001F
#define SYSCTL_PERIPH_REG_S 0x00000000
#define SYSCTL_PERIPH_BIT_M 0x003F0000
#define SYSCTL_PERIPH_BIT_S 0x00000010
//PCLKCR0
#define SYSCTL_PERIPH_CLA1 0x00000000
#define SYSCTL_PERIPH_DMA 0x00020000
#define SYSCTL_PERIPH_TIMER0 0x00030000
#define SYSCTL_PERIPH_TIMER1 0x00040000
#define SYSCTL_PERIPH_TIMER2 0x00050000
#define SYSCTL_PERIPH_HRPWM 0x00100000
#define SYSCTL_PERIPH_TBCLKSYNC 0x00120000
#define SYSCTL_PERIPH_GTBCLKSYNC 0x00130000
//PCLKCR1
#define SYSCTL_PERIPH_EMIF1 0x00000001
#define SYSCTL_PERIPH_EMIF2 0x00010001
//PCLKCR2
#define SYSCTL_PERIPH_EPWM1 0x00000002
#define SYSCTL_PERIPH_EPWM2 0x00010002
#define SYSCTL_PERIPH_EPWM3 0x00020002
#define SYSCTL_PERIPH_EPWM4 0x00030002
#define SYSCTL_PERIPH_EPWM5 0x00040002
#define SYSCTL_PERIPH_EPWM6 0x00050002
#define SYSCTL_PERIPH_EPWM7 0x00060002
#define SYSCTL_PERIPH_EPWM8 0x00070002
#define SYSCTL_PERIPH_EPWM9 0x00080002
#define SYSCTL_PERIPH_EPWM10 0x00090002
#define SYSCTL_PERIPH_EPWM11 0x000A0002
#define SYSCTL_PERIPH_EPWM12 0x000B0002
//PCLKCR3
#define SYSCTL_PERIPH_ECAP1 0x00000003
#define SYSCTL_PERIPH_ECAP2 0x00010003
#define SYSCTL_PERIPH_ECAP3 0x00020003
#define SYSCTL_PERIPH_ECAP4 0x00030003
#define SYSCTL_PERIPH_ECAP5 0x00040003
#define SYSCTL_PERIPH_ECAP6 0x00050003
//PCLKCR4
#define SYSCTL_PERIPH_EQEP1 0x00000004
#define SYSCTL_PERIPH_EQEP2 0x00010004
#define SYSCTL_PERIPH_EQEP3 0x00020004
//PCLKCR5
//Reserved
//PCLKCR6
#define SYSCTL_PERIPH_SD1 0x00000006
#define SYSCTL_PERIPH_SD2 0x00010006
//PCLKCR7
#define SYSCTL_PERIPH_SCI1 0x00000007
#define SYSCTL_PERIPH_SCI2 0x00010007
#define SYSCTL_PERIPH_SCI3 0x00020007
#define SYSCTL_PERIPH_SCI4 0x00030007
//PCLKCR8
#define SYSCTL_PERIPH_SPI1 0x00000008
#define SYSCTL_PERIPH_SPI2 0x00010008
#define SYSCTL_PERIPH_SPI3 0x00020008
//PCLKCR9
#define SYSCTL_PERIPH_I2C1 0x00000009
#define SYSCTL_PERIPH_I2C2 0x00010009
//PCLKCR10
#define SYSCTL_PERIPH_CAN1 0x0000000A
#define SYSCTL_PERIPH_CAN2 0x0001000A
//PCLKCR11
#define SYSCTL_PERIPH_MCBSP1 0x0000000B
#define SYSCTL_PERIPH_MCBSP2 0x0001000B
#define SYSCTL_PERIPH_USB0 0x0010000B
//PCLKCR12
#define SYSCTL_PERIPH_UPP1 0x0000000C
//PCLKCR13
#define SYSCTL_PERIPH_ADC1 0x0000000D
#define SYSCTL_PERIPH_ADC2 0x0001000D
#define SYSCTL_PERIPH_ADC3 0x0002000D
#define SYSCTL_PERIPH_ADC4 0x0003000D
//PCLKCR14
#define SYSCTL_PERIPH_CMPSS1 0x0000000E
#define SYSCTL_PERIPH_CMPSS2 0x0001000E
#define SYSCTL_PERIPH_CMPSS3 0x0002000E
#define SYSCTL_PERIPH_CMPSS4 0x0003000E
#define SYSCTL_PERIPH_CMPSS5 0x0004000E
#define SYSCTL_PERIPH_CMPSS6 0x0005000E
#define SYSCTL_PERIPH_CMPSS7 0x0006000E
#define SYSCTL_PERIPH_CMPSS8 0x0007000E
//PCLKCR15
//Reserved
//PCLKCR16
#define SYSCTL_PERIPH_BUFFDAC1 0x00000010
#define SYSCTL_PERIPH_BUFFDAC2 0x00010010
#define SYSCTL_PERIPH_BUFFDAC3 0x00020010
//old
//#define SYSCTL_PERIPH_UART_A 0x1 // SCI A
//#define SYSCTL_PERIPH_UART_B 0x2 // SCI B
//#define SYSCTL_PERIPH_UART_C 0x3 // SCI C
//#define SYSCTL_PERIPH_UART_D 0x4 // SCI D
//
//#define SYSCTL_PERIPH_SPI_A 0x5 // SPI A
//#define SYSCTL_PERIPH_SPI_B 0x6 // SPI B
//#define SYSCTL_PERIPH_SPI_C 0x7 // SPI C
//
//#define SYSCTL_PERIPH_MCBSP_A 0x8 // McBSP A
//#define SYSCTL_PERIPH_MCBSP_B 0x9 // McBSP B
//
//#define SYSCTL_PERIPH_DMA 0xA // DMA
//
//#define SYSCTL_PERIPH_USB0 0xB // USBA
//*****************************************************************************
//
// Prototypes for the APIs.
//
//*****************************************************************************
extern uint32_t SysCtlSRAMSizeGet(void);
extern uint32_t SysCtlFlashSizeGet(void);
extern void SysCtlPeripheralReset(uint32_t ui32Peripheral);
extern void SysCtlPeripheralEnable(uint32_t ui32Peripheral);
extern void SysCtlPeripheralDisable(uint32_t ui32Peripheral);
extern bool SysCtlPeripheralPresent(uint32_t ui32Peripheral);
extern void SysCtlDelay(uint32_t ulCount);
extern uint32_t SysCtlClockGet(uint32_t u32ClockIn);
extern void SysCtlClockSet(uint32_t ui32Config);
extern void SysCtlAuxClockSet(uint32_t ui32Config);
extern uint32_t SysCtlLowSpeedClockGet(uint32_t u32ClockIn);
extern void SysCtlUSBPLLEnable(void);
extern void SysCtlUSBPLLDisable(void);
//*****************************************************************************
//
// Close the Doxygen group.
//! @}
//
//****************************************************************************
//*****************************************************************************
//
// Mark the end of the C bindings section for C++ compilers.
//
//*****************************************************************************
#ifdef __cplusplus
}
#endif
#endif // __SYSCTL_H__