188 lines
7.6 KiB
C
188 lines
7.6 KiB
C
/*
|
|
SPC5 HAL - Copyright (C) 2013 STMicroelectronics
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* @file eMIOS_v1/spc5_emios.h
|
|
* @brief SPC5xx low level ICU - PWM driver common header.
|
|
*
|
|
* @addtogroup ICU - PWM
|
|
* @{
|
|
*/
|
|
|
|
#ifndef _SPC5_EMIOS_H_
|
|
#define _SPC5_EMIOS_H_
|
|
|
|
#if HAL_USE_ICU || HAL_USE_PWM || defined(__DOXYGEN__)
|
|
|
|
/*===========================================================================*/
|
|
/* Driver constants. */
|
|
/*===========================================================================*/
|
|
|
|
#define EMIOSMCR_MDIS (1U << 30U)
|
|
#define EMIOSMCR_FRZ (1U << 29U)
|
|
#define EMIOSMCR_GTBE (1U << 28U)
|
|
#define EMIOSMCR_GPREN (1U << 26U)
|
|
#define EMIOSMCR_GPRE(n) ((n) << 8U)
|
|
|
|
#define EMIOSC_FREN (1U << 31U)
|
|
#define EMIOSC_UCPRE(n) ((n) << 26U)
|
|
#define EMIOSC_UCPREN (1U << 25U)
|
|
#define EMIOSC_DMA (1U << 24U)
|
|
#define EMIOSC_IF(n) ((n) << 19U)
|
|
#define EMIOSC_FCK (1U << 18U)
|
|
#define EMIOSC_FEN (1U << 17U)
|
|
#define EMIOSC_FORCMA (1U << 13U)
|
|
#define EMIOSC_FORCMB (1U << 12U)
|
|
#define EMIOSC_BSL(n) ((n) << 9U)
|
|
#define EMIOSC_EDSEL (1U << 8U)
|
|
#define EMIOSC_EDPOL (1U << 7U)
|
|
#define EMIOSC_MODE(n) ((n) << 0)
|
|
|
|
#define EMIOS_BSL_COUNTER_BUS_A 0
|
|
#define EMIOS_BSL_COUNTER_BUS_2 1U
|
|
#define EMIOS_BSL_INTERNAL_COUNTER 3U
|
|
|
|
#define EMIOS_CCR_MODE_GPIO_IN 0
|
|
#define EMIOS_CCR_MODE_GPIO_OUT 1U
|
|
#define EMIOS_CCR_MODE_SAIC 2U
|
|
#define EMIOS_CCR_MODE_SAOC 3U
|
|
#define EMIOS_CCR_MODE_IPWM 4U
|
|
#define EMIOS_CCR_MODE_IPM 5U
|
|
#define EMIOS_CCR_MODE_DAOC_B_MATCH 6U
|
|
#define EMIOS_CCR_MODE_DAOC_BOTH_MATCH 7U
|
|
#define EMIOS_CCR_MODE_MC_CMS 16U
|
|
#define EMIOS_CCR_MODE_MC_CME 17U
|
|
#define EMIOS_CCR_MODE_MC_UP_DOWN 18U
|
|
#define EMIOS_CCR_MODE_OPWMT 38U
|
|
#define EMIOS_CCR_MODE_MCB_UP 80U
|
|
#define EMIOS_CCR_MODE_MCB_UP_DOWN 84U
|
|
#define EMIOS_CCR_MODE_OPWFMB 88U
|
|
#define EMIOS_CCR_MODE_OPWMCB_TE 92U
|
|
#define EMIOS_CCR_MODE_OPWMCB_LE 93U
|
|
#define EMIOS_CCR_MODE_OPWMB 96U
|
|
|
|
#define EMIOSS_OVR (1U << 31U)
|
|
#define EMIOSS_OVRC (1U << 31U)
|
|
#define EMIOSS_OVFL (1U << 15U)
|
|
#define EMIOSS_OVFLC (1U << 15U)
|
|
#define EMIOSS_FLAG (1U << 0)
|
|
#define EMIOSS_FLAGC (1U << 0)
|
|
|
|
/*===========================================================================*/
|
|
/* Driver pre-compile time settings. */
|
|
/*===========================================================================*/
|
|
|
|
#if SPC5_HAS_EMIOS0
|
|
/**
|
|
* @brief eMIOS0 peripheral configuration when started.
|
|
* @note The default configuration is 1 (always run) in run mode and
|
|
* 2 (only halt) in low power mode. The defaults of the run modes
|
|
* are defined in @p hal_lld.h.
|
|
*/
|
|
#if !defined(SPC5_EMIOS0_START_PCTL) || defined(__DOXYGEN__)
|
|
#define SPC5_EMIOS0_START_PCTL (SPC5_ME_PCTL_RUN(1) | \
|
|
SPC5_ME_PCTL_LP(2))
|
|
#endif
|
|
|
|
/**
|
|
* @brief eMIOS0 peripheral configuration when stopped.
|
|
* @note The default configuration is 0 (never run) in run mode and
|
|
* 0 (never run) in low power mode. The defaults of the run modes
|
|
* are defined in @p hal_lld.h.
|
|
*/
|
|
#if !defined(SPC5_EMIOS0_STOP_PCTL) || defined(__DOXYGEN__)
|
|
#define SPC5_EMIOS0_STOP_PCTL (SPC5_ME_PCTL_RUN(0) | \
|
|
SPC5_ME_PCTL_LP(0))
|
|
#endif
|
|
#endif
|
|
|
|
#if SPC5_HAS_EMIOS1
|
|
/**
|
|
* @brief eMIOS1 peripheral configuration when started.
|
|
* @note The default configuration is 1 (always run) in run mode and
|
|
* 2 (only halt) in low power mode. The defaults of the run modes
|
|
* are defined in @p hal_lld.h.
|
|
*/
|
|
#if !defined(SPC5_EMIOS1_START_PCTL) || defined(__DOXYGEN__)
|
|
#define SPC5_EMIOS1_START_PCTL (SPC5_ME_PCTL_RUN(1) | \
|
|
SPC5_ME_PCTL_LP(2))
|
|
#endif
|
|
|
|
/**
|
|
* @brief eMIOS1 peripheral configuration when stopped.
|
|
* @note The default configuration is 0 (never run) in run mode and
|
|
* 0 (never run) in low power mode. The defaults of the run modes
|
|
* are defined in @p hal_lld.h.
|
|
*/
|
|
#if !defined(SPC5_EMIOS1_STOP_PCTL) || defined(__DOXYGEN__)
|
|
#define SPC5_EMIOS1_STOP_PCTL (SPC5_ME_PCTL_RUN(0) | \
|
|
SPC5_ME_PCTL_LP(0))
|
|
#endif
|
|
#endif
|
|
|
|
/*===========================================================================*/
|
|
/* Derived constants and error checks. */
|
|
/*===========================================================================*/
|
|
|
|
/*===========================================================================*/
|
|
/* Driver data structures and types. */
|
|
/*===========================================================================*/
|
|
|
|
/*===========================================================================*/
|
|
/* Driver macros. */
|
|
/*===========================================================================*/
|
|
|
|
/*===========================================================================*/
|
|
/* External declarations. */
|
|
/*===========================================================================*/
|
|
|
|
#if SPC5_HAS_EMIOS0
|
|
void reset_emios0_active_channels(void);
|
|
uint32_t get_emios0_active_channels(void);
|
|
void increase_emios0_active_channels(void);
|
|
void decrease_emios0_active_channels(void);
|
|
void active_emios0_clock(ICUDriver *icup, PWMDriver *pwmp);
|
|
void deactive_emios0_clock(ICUDriver *icup, PWMDriver *pwmp);
|
|
#if HAL_USE_ICU
|
|
void icu_active_emios0_clock(ICUDriver *icup);
|
|
void icu_deactive_emios0_clock(ICUDriver *icup);
|
|
#endif
|
|
#if HAL_USE_PWM
|
|
void pwm_active_emios0_clock(PWMDriver *pwmp);
|
|
void pwm_deactive_emios0_clock(PWMDriver *pwmp);
|
|
#endif
|
|
#endif
|
|
#if SPC5_HAS_EMIOS1
|
|
void reset_emios1_active_channels(void);
|
|
uint32_t get_emios1_active_channels(void);
|
|
void increase_emios1_active_channels(void);
|
|
void decrease_emios1_active_channels(void);
|
|
#if HAL_USE_ICU
|
|
void icu_active_emios1_clock(ICUDriver *icup);
|
|
void icu_deactive_emios1_clock(ICUDriver *icup);
|
|
#endif
|
|
#if HAL_USE_PWM
|
|
void pwm_active_emios1_clock(PWMDriver *pwmp);
|
|
void pwm_deactive_emios1_clock(PWMDriver *pwmp);
|
|
#endif
|
|
#endif
|
|
|
|
#endif /* HAL_USE_ICU || HAL_USE_PWM */
|
|
|
|
#endif /* _SPC5_EMIOS_H_ */
|
|
|
|
/** @} */
|