Files
2026-06-06 20:50:54 +08:00

293 lines
19 KiB
C

/*****************************************************************************
Copyright (C) 2022 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 ti_devices_msp_peripherals_hw_oa__include
#define ti_devices_msp_peripherals_hw_oa__include
/* This preliminary header file does not have a version number */
/* MMR repo: https://bitbucket.itg.ti.com/projects/cmcu_msp65ip/repos/f65mspoa */
/* MMR revision: 89377c76ba10fe939dabf3c32948d02a456b2167 */
/* Generator revision: b581896b67084e57bafba0cd5bf5aa0fc4c1ca1a
(MInT: ec7ec7482a60c6871be32db8b378ec27aa4771f6) */
#ifndef __CORTEX_M
#ifdef __cplusplus
#define __I volatile /*!< Defines 'read only' permissions */
#else
#define __I volatile const /*!< Defines 'read only' permissions */
#endif
#define __O volatile /*!< Defines 'write only' permissions */
#define __IO volatile /*!< Defines 'read / write' permissions */
/* following defines should be used for structure members */
#define __IM volatile const /*! Defines 'read only' structure member permissions */
#define __OM volatile /*! Defines 'write only' structure member permissions */
#define __IOM volatile /*! Defines 'read / write' structure member permissions */
#endif
/* Use standard integer types with explicit width */
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#if defined ( __CC_ARM )
#pragma anon_unions
#endif
/******************************************************************************
* OA Registers
******************************************************************************/
#define OA_GPRCM_OFS ((uint32_t)0x00000800U)
/** @addtogroup OA_GPRCM
@{
*/
typedef struct {
__IO uint32_t PWREN; /* !< (@ 0x00000800) Power enable */
__O uint32_t RSTCTL; /* !< (@ 0x00000804) Reset Control */
uint32_t RESERVED0[3];
__I uint32_t STAT; /* !< (@ 0x00000814) Status Register */
} OA_GPRCM_Regs;
/*@}*/ /* end of group OA_GPRCM */
/** @addtogroup OA
@{
*/
typedef struct {
uint32_t RESERVED0[512];
OA_GPRCM_Regs GPRCM; /* !< (@ 0x00000800) */
uint32_t RESERVED1[510];
__IO uint32_t CLKOVR; /* !< (@ 0x00001010) Clock Override */
uint32_t RESERVED2[2];
__IO uint32_t PWRCTL; /* !< (@ 0x0000101C) Power Control */
uint32_t RESERVED3[56];
__IO uint32_t CTL; /* !< (@ 0x00001100) Control Register */
__IO uint32_t CFGBASE; /* !< (@ 0x00001104) Configuration Base Register */
__IO uint32_t CFG; /* !< (@ 0x00001108) Configuration Register */
uint32_t RESERVED4[3];
__I uint32_t STAT; /* !< (@ 0x00001118) Status Register */
} OA_Regs;
/*@}*/ /* end of group OA */
#if defined ( __CC_ARM )
#pragma no_anon_unions
#endif
/******************************************************************************
* OA Register Control Bits
******************************************************************************/
/* OA_PWREN Bits */
/* OA_PWREN[ENABLE] Bits */
#define OA_PWREN_ENABLE_OFS (0) /* !< ENABLE Offset */
#define OA_PWREN_ENABLE_MASK ((uint32_t)0x00000001U) /* !< Enable the power */
#define OA_PWREN_ENABLE_DISABLE ((uint32_t)0x00000000U) /* !< Disable Power */
#define OA_PWREN_ENABLE_ENABLE ((uint32_t)0x00000001U) /* !< Enable Power */
/* OA_PWREN[KEY] Bits */
#define OA_PWREN_KEY_OFS (24) /* !< KEY Offset */
#define OA_PWREN_KEY_MASK ((uint32_t)0xFF000000U) /* !< KEY to allow Power State Change */
#define OA_PWREN_KEY_UNLOCK_W ((uint32_t)0x26000000U) /* !< KEY to allow write access to this
register */
/* OA_RSTCTL Bits */
/* OA_RSTCTL[RESETSTKYCLR] Bits */
#define OA_RSTCTL_RESETSTKYCLR_OFS (1) /* !< RESETSTKYCLR Offset */
#define OA_RSTCTL_RESETSTKYCLR_MASK ((uint32_t)0x00000002U) /* !< Clear the RESETSTKY bit in the STAT
register */
#define OA_RSTCTL_RESETSTKYCLR_NOP ((uint32_t)0x00000000U) /* !< Writing 0 has no effect */
#define OA_RSTCTL_RESETSTKYCLR_CLR ((uint32_t)0x00000002U) /* !< Clear reset sticky bit */
/* OA_RSTCTL[RESETASSERT] Bits */
#define OA_RSTCTL_RESETASSERT_OFS (0) /* !< RESETASSERT Offset */
#define OA_RSTCTL_RESETASSERT_MASK ((uint32_t)0x00000001U) /* !< Assert reset to the peripheral */
#define OA_RSTCTL_RESETASSERT_NOP ((uint32_t)0x00000000U) /* !< Writing 0 has no effect */
#define OA_RSTCTL_RESETASSERT_ASSERT ((uint32_t)0x00000001U) /* !< Assert reset */
/* OA_RSTCTL[KEY] Bits */
#define OA_RSTCTL_KEY_OFS (24) /* !< KEY Offset */
#define OA_RSTCTL_KEY_MASK ((uint32_t)0xFF000000U) /* !< Unlock key */
#define OA_RSTCTL_KEY_UNLOCK_W ((uint32_t)0xB1000000U) /* !< KEY to allow write access to this
register */
/* OA_GPRCM_STAT Bits */
/* OA_GPRCM_STAT[RESETSTKY] Bits */
#define OA_GPRCM_STAT_RESETSTKY_OFS (16) /* !< RESETSTKY Offset */
#define OA_GPRCM_STAT_RESETSTKY_MASK ((uint32_t)0x00010000U) /* !< This bit indicates, if the
peripheral was reset, since this bit
was cleared by RESETSTKYCLR in the
RSTCTL register */
#define OA_GPRCM_STAT_RESETSTKY_NORES ((uint32_t)0x00000000U) /* !< The peripheral has not been reset
since this bit was last cleared by
RESETSTKYCLR in the RSTCTL register */
#define OA_GPRCM_STAT_RESETSTKY_RESET ((uint32_t)0x00010000U) /* !< The peripheral was reset since the
last bit clear */
/* OA_CLKOVR Bits */
/* OA_CLKOVR[OVERRIDE] Bits */
#define OA_CLKOVR_OVERRIDE_OFS (0) /* !< OVERRIDE Offset */
#define OA_CLKOVR_OVERRIDE_MASK ((uint32_t)0x00000001U) /* !< Unlocks the functionality of
[RUN_STOP] to override the automatic
peripheral clock request */
#define OA_CLKOVR_OVERRIDE_DISABLED ((uint32_t)0x00000000U) /* !< Override disabled */
#define OA_CLKOVR_OVERRIDE_ENABLED ((uint32_t)0x00000001U) /* !< Override enabled */
/* OA_CLKOVR[RUN_STOP] Bits */
#define OA_CLKOVR_RUN_STOP_OFS (1) /* !< RUN_STOP Offset */
#define OA_CLKOVR_RUN_STOP_MASK ((uint32_t)0x00000002U) /* !< If [OVERRIDE] is enabled, this
register is used to manually control
the peripheral's clock request to the
system */
#define OA_CLKOVR_RUN_STOP_RUN ((uint32_t)0x00000000U) /* !< Run/ungate functional clock */
#define OA_CLKOVR_RUN_STOP_STOP ((uint32_t)0x00000002U) /* !< Stop/gate functional clock */
/* OA_PWRCTL Bits */
/* OA_PWRCTL[AUTO_OFF] Bits */
#define OA_PWRCTL_AUTO_OFF_OFS (0) /* !< AUTO_OFF Offset */
#define OA_PWRCTL_AUTO_OFF_MASK ((uint32_t)0x00000001U) /* !< When set the peripheral will remove
its local IP request for enable so
that it can be disabled if no other
entities in the system are requesting
it to be enabled. */
#define OA_PWRCTL_AUTO_OFF_DISABLE ((uint32_t)0x00000000U) /* !< Disable automatic power off
function */
#define OA_PWRCTL_AUTO_OFF_ENABLE ((uint32_t)0x00000001U) /* !< Enable automatic power off function */
/* OA_CTL Bits */
/* OA_CTL[ENABLE] Bits */
#define OA_CTL_ENABLE_OFS (0) /* !< ENABLE Offset */
#define OA_CTL_ENABLE_MASK ((uint32_t)0x00000001U) /* !< OAxn Enable. */
#define OA_CTL_ENABLE_OFF ((uint32_t)0x00000000U) /* !< OAxn OFF */
#define OA_CTL_ENABLE_ON ((uint32_t)0x00000001U) /* !< OAxn ON */
/* OA_CFGBASE Bits */
/* OA_CFGBASE[GBW] Bits */
#define OA_CFGBASE_GBW_OFS (0) /* !< GBW Offset */
#define OA_CFGBASE_GBW_MASK ((uint32_t)0x00000001U) /* !< Select gain bandwidth which affects
current as well the gain bandwidth.
The lower gain bandwidth has lower
current. See device specific
datasheet for values. Can only be
modified when STAT.BUSY=0. */
#define OA_CFGBASE_GBW_LOWGAIN ((uint32_t)0x00000000U) /* !< Low gain bandwidth. See device
specific datasheet for gain
bandwidth. */
#define OA_CFGBASE_GBW_HIGHGAIN ((uint32_t)0x00000001U) /* !< High gain bandwidth. See device
specific datasheet for gain
bandwidth. */
/* OA_CFGBASE[RRI] Bits */
#define OA_CFGBASE_RRI_OFS (2) /* !< RRI Offset */
#define OA_CFGBASE_RRI_MASK ((uint32_t)0x00000004U) /* !< Rail-to-rail input enable. Can only
be modified when STAT.BUSY=0 */
#define OA_CFGBASE_RRI_OFF ((uint32_t)0x00000000U) /* !< Rail-to-rail input disable. */
#define OA_CFGBASE_RRI_ON ((uint32_t)0x00000004U) /* !< Rail-to-rail input enable. */
/* OA_CFG Bits */
/* OA_CFG[CHOP] Bits */
#define OA_CFG_CHOP_OFS (0) /* !< CHOP Offset */
#define OA_CFG_CHOP_MASK ((uint32_t)0x00000003U) /* !< Chopping enable. */
#define OA_CFG_CHOP_OFF ((uint32_t)0x00000000U) /* !< Chopping disable. */
#define OA_CFG_CHOP_ON ((uint32_t)0x00000001U) /* !< Standard chopping enable. */
#define OA_CFG_CHOP_AVGON ((uint32_t)0x00000002U) /* !< Chop with post average on. Requires
output to be connect to ADC in
average mode. */
/* OA_CFG[OUTPIN] Bits */
#define OA_CFG_OUTPIN_OFS (2) /* !< OUTPIN Offset */
#define OA_CFG_OUTPIN_MASK ((uint32_t)0x00000004U) /* !< Enable output pin */
#define OA_CFG_OUTPIN_DISABLED ((uint32_t)0x00000000U) /* !< Output pin disabled */
#define OA_CFG_OUTPIN_ENABLED ((uint32_t)0x00000004U) /* !< Output pin enabled */
/* OA_CFG[PSEL] Bits */
#define OA_CFG_PSEL_OFS (3) /* !< PSEL Offset */
#define OA_CFG_PSEL_MASK ((uint32_t)0x00000078U) /* !< Positive OA input selection.
Please refer to the device specific
datasheet for exact channels
available. */
#define OA_CFG_PSEL_NC ((uint32_t)0x00000000U) /* !< No connect */
#define OA_CFG_PSEL_EXTPIN0 ((uint32_t)0x00000008U) /* !< external pin OA+0 */
#define OA_CFG_PSEL_EXTPIN1 ((uint32_t)0x00000010U) /* !< external pin OAn+1 */
#define OA_CFG_PSEL_DAC12OUT ((uint32_t)0x00000018U) /* !< DAC12OUT */
#define OA_CFG_PSEL_DAC8OUT ((uint32_t)0x00000020U) /* !< DAC8OUT */
#define OA_CFG_PSEL_VREF ((uint32_t)0x00000028U) /* !< VREF Channel */
#define OA_CFG_PSEL_OANM1RTOP ((uint32_t)0x00000030U) /* !< OA[n-1]Rtop */
#define OA_CFG_PSEL_GPAMP_OUT_INT ((uint32_t)0x00000038U) /* !< GPAMP_OUT_INT Input */
#define OA_CFG_PSEL_VSS ((uint32_t)0x00000040U) /* !< Internal Grouund Connection */
/* OA_CFG[NSEL] Bits */
#define OA_CFG_NSEL_OFS (7) /* !< NSEL Offset */
#define OA_CFG_NSEL_MASK ((uint32_t)0x00000380U) /* !< Negative OA input selection. Please
refer to the device specific
datasheet for exact channels
available. */
#define OA_CFG_NSEL_NC ((uint32_t)0x00000000U) /* !< no connect */
#define OA_CFG_NSEL_EXTPIN0 ((uint32_t)0x00000080U) /* !< external pin OAn-0 */
#define OA_CFG_NSEL_EXTPIN1 ((uint32_t)0x00000100U) /* !< external pin OAn-1 */
#define OA_CFG_NSEL_OANP1RBOT ((uint32_t)0x00000180U) /* !< OA[n+1]Rbot */
#define OA_CFG_NSEL_OANRTAP ((uint32_t)0x00000200U) /* !< OA[n]Rtap */
#define OA_CFG_NSEL_OANRTOP ((uint32_t)0x00000280U) /* !< OA[n]Rtop */
#define OA_CFG_NSEL_SPARE ((uint32_t)0x00000300U) /* !< Spare input */
/* OA_CFG[MSEL] Bits */
#define OA_CFG_MSEL_OFS (10) /* !< MSEL Offset */
#define OA_CFG_MSEL_MASK ((uint32_t)0x00001C00U) /* !< MSEL Mux selection. Please refer
to the device specific datasheet for
exact channels available. */
#define OA_CFG_MSEL_NC ((uint32_t)0x00000000U) /* !< no connect */
#define OA_CFG_MSEL_EXTNPIN1 ((uint32_t)0x00000400U) /* !< external pin OAn-1 */
#define OA_CFG_MSEL_VSS ((uint32_t)0x00000800U) /* !< VSS */
#define OA_CFG_MSEL_DAC12OUT ((uint32_t)0x00000C00U) /* !< DAC12 Output */
#define OA_CFG_MSEL_OANM1RTOP ((uint32_t)0x00001000U) /* !< OA[n-1]Rtop */
/* OA_CFG[GAIN] Bits */
#define OA_CFG_GAIN_OFS (13) /* !< GAIN Offset */
#define OA_CFG_GAIN_MASK ((uint32_t)0x0000E000U) /* !< Gain setting. Refer to TRM for
enumeration information. */
#define OA_CFG_GAIN_MINIMUM ((uint32_t)0x00000000U) /* !< Minmum gain value */
#define OA_CFG_GAIN_MAXIMUM ((uint32_t)0x0000E000U) /* !< Maximum gain value. */
/* OA_STAT Bits */
/* OA_STAT[RDY] Bits */
#define OA_STAT_RDY_OFS (0) /* !< RDY Offset */
#define OA_STAT_RDY_MASK ((uint32_t)0x00000001U) /* !< OA ready status. */
#define OA_STAT_RDY_FALSE ((uint32_t)0x00000000U) /* !< OAxn is not ready. */
#define OA_STAT_RDY_TRUE ((uint32_t)0x00000001U) /* !< OAxn is ready. */
#ifdef __cplusplus
}
#endif
#endif /* ti_devices_msp_peripherals_hw_oa__include */