644 lines
22 KiB
C
644 lines
22 KiB
C
/* Copyright Statement:
|
|
*
|
|
* This software/firmware and related documentation ("AutoChips Software") are
|
|
* protected under relevant copyright laws. The information contained herein is
|
|
* confidential and proprietary to AutoChips Inc. and/or its licensors. Without
|
|
* the prior written permission of AutoChips inc. and/or its licensors, any
|
|
* reproduction, modification, use or disclosure of AutoChips Software, and
|
|
* information contained herein, in whole or in part, shall be strictly
|
|
* prohibited.
|
|
*
|
|
* AutoChips Inc. (C) 2021. All rights reserved.
|
|
*
|
|
* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
|
|
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("AUTOCHIPS SOFTWARE")
|
|
* RECEIVED FROM AUTOCHIPS AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
|
|
* ON AN "AS-IS" BASIS ONLY. AUTOCHIPS EXPRESSLY DISCLAIMS ANY AND ALL
|
|
* WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
|
|
* NONINFRINGEMENT. NEITHER DOES AUTOCHIPS PROVIDE ANY WARRANTY WHATSOEVER WITH
|
|
* RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
|
|
* INCORPORATED IN, OR SUPPLIED WITH THE AUTOCHIPS SOFTWARE, AND RECEIVER AGREES
|
|
* TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
|
|
* RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
|
|
* OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN AUTOCHIPS
|
|
* SOFTWARE. AUTOCHIPS SHALL ALSO NOT BE RESPONSIBLE FOR ANY AUTOCHIPS SOFTWARE
|
|
* RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
|
|
* STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND AUTOCHIPS'S
|
|
* ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE AUTOCHIPS SOFTWARE
|
|
* RELEASED HEREUNDER WILL BE, AT AUTOCHIPS'S OPTION, TO REVISE OR REPLACE THE
|
|
* AUTOCHIPS SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
|
|
* CHARGE PAID BY RECEIVER TO AUTOCHIPS FOR SUCH AUTOCHIPS SOFTWARE AT ISSUE.
|
|
*/
|
|
|
|
/*!
|
|
* @file pwm_common.h
|
|
*
|
|
* @brief This file provides pwm common integration functions.
|
|
*
|
|
*/
|
|
|
|
/* PRQA S 3630 EOF */ /* struct/union type will be used by user app. */
|
|
|
|
#ifndef PWM_COMMON_H
|
|
#define PWM_COMMON_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
/* =========================================== Includes =========================================== */
|
|
#include "device_register.h"
|
|
#include "ckgen_drv.h"
|
|
|
|
/*=====================================SOURCE FILE VERSION INFORMATION==============================*/
|
|
#define PWM_HAL_MODULE_ID (431U)
|
|
#define PWM_HAL_SW_MAJOR_VERSION (1U)
|
|
#define PWM_HAL_SW_MINOR_VERSION (2U)
|
|
#define PWM_HAL_SW_PATCH_VERSION (0U)
|
|
|
|
/* ============================================ Define ============================================ */
|
|
/*!< Number of pair channels */
|
|
#define PWM_PAIR_CHANNEL_NUM (4UL)
|
|
|
|
/*!< The maximum of counter */
|
|
#define PWM_MAX_COUNTER_VALUE (0xFFFFUL)
|
|
|
|
/* =========================================== Typedef ============================================ */
|
|
/*!< Callback for pwm module */
|
|
typedef void (*pwm_callback_t)(uint8_t instance, uint32_t status, void *userData);
|
|
|
|
/*!
|
|
* @brief PWM clock source enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_CLK_SOURCE_NONE = 0U, /*!< No clock selected, in effect disables the counter */
|
|
PWM_CLK_SOURCE_SYSTEM, /*!< System clock */
|
|
PWM_CLK_SOURCE_FIXED_FREQUENCY, /*!< Fixed frequency clock */
|
|
PWM_CLK_SOURCE_EXTERNAL /*!< External clock */
|
|
} pwm_clk_source_t;
|
|
|
|
/*!
|
|
* @brief PWM channel enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_CH_0 = 0U, /*!< PWM channel 0 */
|
|
PWM_CH_1, /*!< PWM channel 1 */
|
|
PWM_CH_2, /*!< PWM channel 2 */
|
|
PWM_CH_3, /*!< PWM channel 3 */
|
|
PWM_CH_4, /*!< PWM channel 4 */
|
|
PWM_CH_5, /*!< PWM channel 5 */
|
|
PWM_CH_6, /*!< PWM channel 6 */
|
|
PWM_CH_7, /*!< PWM channel 7 */
|
|
PWM_CH_MAX /*!< Invalid channel */
|
|
} pwm_channel_type_t;
|
|
|
|
/*!
|
|
* @brief PWM operation mode enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_MODE_MODULATION = 0U, /*!< Pulse width modulation module mode */
|
|
PWM_MODE_INPUT_CAPTURE, /*!< Input capture mode */
|
|
PWM_MODE_OUTPUT_COMPARE, /*!< Output compare mode */
|
|
PWM_MODE_QUADRATURE_DECODER, /*!< Quadrature decoder mode */
|
|
PWM_MODE_GENERAL_TIMER /*!< General timer mode */
|
|
} pwm_operate_mode_t;
|
|
|
|
/*!
|
|
* @brief PWM channel combine enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_INDEPENDENT_MODE = 0U, /*!< Independent channel mode */
|
|
PWM_COMBINE_MODE /*!< Combine channel mode */
|
|
} pwm_channel_combine_type_t;
|
|
|
|
/*!
|
|
* @brief PWM counting mode enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_UP_COUNT = 0U, /*!< Up counting mode */
|
|
PWM_UP_DOWN_COUNT /*!< Up-down counting mode */
|
|
} pwm_count_mode_t;
|
|
|
|
/*!
|
|
* @brief PWM prescaler factor for the dead-time insertion enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_DEADTIME_DIVID_1 = 1U, /*!< Divide by 1 */
|
|
PWM_DEADTIME_DIVID_4, /*!< Divide by 4 */
|
|
PWM_DEADTIME_DIVID_16 /*!< Divide by 16 */
|
|
} pwm_dead_time_psc_type_t;
|
|
|
|
/*!
|
|
* @brief PWM output level enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_LOW_LEVEL = 0U, /*!< LOW LEVEL */
|
|
PWM_HIGH_LEVEL /*!< HIGH LEVEL */
|
|
} pwm_output_state_t;
|
|
|
|
/*!
|
|
* @brief PWM output level enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_HIGH_TRUE = 2U, /*!< High true */
|
|
PWM_LOW_TRUE /*!< Low true */
|
|
} pwm_output_level_mode_t;
|
|
|
|
/*!
|
|
* @brief PWM channel match point counting direction in combine mode enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_MATCH_DIR_DOWN = 0U, /*!< Channel match point in down counting direction */
|
|
PWM_MATCH_DIR_UP /*!< Channel match point in up counting direction */
|
|
} pwm_match_point_dir_type_t;
|
|
|
|
/*!
|
|
* @brief PWM channel output polarity active enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_OUTPUT_POLARITY_ACTIVE_HIGH = 0U, /*!< The channel output polarity is active high */
|
|
PWM_OUTPUT_POLARITY_ACTIVE_LOW /*!< The channel output polarity is active low */
|
|
} pwm_output_polarity_active_type_t;
|
|
|
|
/*!
|
|
* @brief PWM DRV Init configuration structure.
|
|
*/
|
|
typedef struct
|
|
{
|
|
pwm_operate_mode_t mode; /*!< Select pwm operation mode */
|
|
void *initModeStruct; /*!< Pointer to the corresponding initialization structure for different modes */
|
|
pwm_clk_source_t clkSource; /*!< Select clock source */
|
|
uint16_t clkPsc; /*!< Clock prescaler */
|
|
uint16_t initValue; /*!< Initial counter value */
|
|
uint16_t maxValue; /*!< Maximum counter value */
|
|
uint8_t modDitherValue; /*!< Dither value for MOD */
|
|
bool overflowEventEn; /*!< Pwm overflow event enable */
|
|
bool underflowEventEn; /*!< Pwm underflow event enable */
|
|
bool overflowInterrupEn; /*!< Enable/disable CNTOF interrupt */
|
|
bool overflowDmaEn; /*!< Enable/disable dma for underflow/overflow event */
|
|
bool dmaLghEn; /*!< Enable/disable dma transfer length */
|
|
uint8_t dmaLgh; /*!< Dma transfer length for dma reg clearing */
|
|
uint8_t cntOverflowFreq; /*!< CNTOF frequency */
|
|
bool interruptEn; /*!< Enable/disable pwm interrupt */
|
|
pwm_callback_t overflowCallback; /*!< Overflow Callback pointer */
|
|
pwm_callback_t channelCallback; /*!< Channel Callback pointer */
|
|
} pwm_config_t;
|
|
|
|
/*!
|
|
* @brief PWM simply configuration structure.
|
|
*/
|
|
typedef struct
|
|
{
|
|
pwm_channel_combine_type_t allChCombineMode; /*!< All Channel combine mode */
|
|
pwm_count_mode_t countMode; /*!< Counting mode */
|
|
pwm_output_level_mode_t levelMode; /*!< Output level mode */
|
|
pwm_clk_source_t clkSource; /*!< Select clock source */
|
|
uint16_t clkPsc; /*!< Clock prescaler */
|
|
uint16_t initValue; /*!< Initial counter value */
|
|
uint16_t maxValue; /*!< Maximum counter value */
|
|
uint8_t modDitherValue; /*!< Dither value for MOD */
|
|
uint16_t chValue[PWM_CHANNEL_MAX]; /*!< Channel value */
|
|
uint8_t chDitherValue[PWM_CHANNEL_MAX]; /*!< Channel dither value */
|
|
bool complementEn; /*!< Enable/disable complementary output */
|
|
pwm_output_polarity_active_type_t oddPolarity; /*!< Odd channel the polarity of the channel output */
|
|
pwm_output_polarity_active_type_t evenPolarity; /*!< Even channel the polarity of the channel output */
|
|
pwm_output_state_t oddInitLevel; /*!< Odd channel init output level */
|
|
pwm_output_state_t evenInitLevel; /*!< Even channel init output level */
|
|
bool initChOutputEn; /*!< Enable/disable Initial channel output */
|
|
uint16_t deadtime; /*!< Dead time value */
|
|
pwm_dead_time_psc_type_t deadtimePsc; /*!< Dead time prescaler value */
|
|
bool interruptEn; /*!< Enable/disable pwm interrupt */
|
|
bool overflowEventEn; /*!< Pwm overflow event enable */
|
|
bool underflowEventEn; /*!< Pwm underflow event enable */
|
|
bool overflowInterrupEn; /*!< Enable/disable CNTOF interrupt */
|
|
pwm_callback_t overflowCallback; /*!< Overflow Callback pointer */
|
|
pwm_callback_t channelCallback; /*!< Channel Callback pointer */
|
|
} pwm_simply_config_t;
|
|
|
|
/*!
|
|
* @brief PWM sync trigger mode enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_SYNC_TRIGGER_SOFTWARE = 0U, /*!< Software trigger synchronization */
|
|
PWM_SYNC_TRIGGER_HARDWARE /*!< Hardware trigger synchronization */
|
|
} pwm_sync_trigger_mode_t;
|
|
|
|
/*!
|
|
* @brief PWM sync mode enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_SYNC_MODE_LEGACY = 0U, /*!< Legacy synchronization */
|
|
PWM_SYNC_MODE_ENHANCED /*!< Enhanced synchronization */
|
|
} pwm_sync_mode_t;
|
|
|
|
/*!
|
|
* @brief PWM sync configuration structure.
|
|
* Please don't use software and hardware trigger simultaneously
|
|
*/
|
|
typedef struct
|
|
{
|
|
pwm_sync_trigger_mode_t syncTriggerMode; /*!< Synchronization trigger mode */
|
|
bool hardwareSync0En; /*!< Enable/disable hardware sync trigger source 0 */
|
|
bool hardwareSync1En; /*!< Enable/disable hardware sync trigger source 1 */
|
|
bool hardwareSync2En; /*!< Enable/disable hardware sync trigger source 2 */
|
|
bool autoClearHWTriggerEn; /*!< Available only for hardware trigger */
|
|
bool counterInitSyncEn; /*!< Enable/disable CNTIN sync */
|
|
bool outCtrlSyncEn; /*!< Enable/disable CHOSWCR sync */
|
|
bool inverterSyncEn; /*!< Enable/disable INVCR sync */
|
|
bool outmaskSyncEn; /*!< Enable/disable OMCR sync */
|
|
bool polaritySyncEn; /*!< Enable/disable CHOPOLCR sync */
|
|
bool chValueSyncEn[PWM_PAIR_CHANNEL_NUM];/*!< Enable/disable dual channel CHV sync */
|
|
bool maxLoadingPointEn; /*!< Enable/disable maximum loading point */
|
|
bool minLoadingPointEn; /*!< Enable/disable minimum loading point */
|
|
bool syncBypassEn; /*!< Enable/disable Synchronization bypass */
|
|
bool pwmSyncEnable; /*!< PWM Enable/disable */
|
|
} pwm_sync_config_t;
|
|
|
|
/* PRQA S 0779 ++ */
|
|
/*!
|
|
* @brief PWM sync mode enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_DEBUG_MODE_NO_EFFECT = 0U, /*!< No effect for counter, channel output, CNTIN/MOD/CnV/Cn+1V buffer and registers */
|
|
PWM_DEBUG_MODE_COUNTER_STOPPED_OUTPUT_PREVIOUS, /*!< Counter stopped, channel output remains previous value, write CNTIN/MOD/CnV/Cn+1V buffer and immediately update to registersn */
|
|
PWM_DEBUG_MODE_COUNTER_STOPPED_OUTPUT_HIGH /*!< Counter stopped, channel output remains high resistance value, write CNTIN/MOD/CnV/Cn+1V buffer and immediately update to registersn */
|
|
} pwm_debug_mode_t;
|
|
/* PRQA S 0779 -- */
|
|
/*!
|
|
* @brief PWM fault input channel enumeration.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWM_FAULT_CH_0 = 0U, /*!< PWM fault input channel 0 */
|
|
PWM_FAULT_CH_1, /*!< PWM fault input channel 1 */
|
|
PWM_FAULT_CH_2, /*!< PWM fault input channel 2 */
|
|
PWM_FAULT_CH_3, /*!< PWM fault input channel 3 */
|
|
PWM_FAULT_CH_MAX /*!< Invalid fault input channel */
|
|
} pwm_fault_channel_type_t;
|
|
|
|
/* ========================================== Variables =========================================== */
|
|
/*!< PWM base address */
|
|
extern PWM_Type * const g_pwmBase[PWM_INSTANCE_MAX];
|
|
|
|
/*!< PWM overflow interrupt request info */
|
|
extern const IRQn_Type s_pwmOverflowIrq[PWM_INSTANCE_MAX];
|
|
/*!< PWM channel interrupt request info */
|
|
extern const IRQn_Type s_pwmChannelIrq[PWM_INSTANCE_MAX];
|
|
/*!< PWM fault interrupt request info */
|
|
extern const IRQn_Type s_pwmFaultIrq[PWM_INSTANCE_MAX];
|
|
|
|
/*!< PWM ckgen clk info */
|
|
extern const ckgen_clock_t s_pwmCkgenClks[PWM_INSTANCE_MAX];
|
|
/*!< PWM soft reset info */
|
|
extern const ckgen_softreset_t s_pwmSoftReset[PWM_INSTANCE_MAX];
|
|
|
|
/*!< PWM overflow callback pointer */
|
|
extern pwm_callback_t g_pwmOverflowCallback[PWM_INSTANCE_MAX];
|
|
/*!< PWM channel callback pointer */
|
|
extern pwm_callback_t g_pwmChannelCallback[PWM_INSTANCE_MAX];
|
|
/*!< PWM fault callback pointer */
|
|
extern pwm_callback_t g_pwmFaultCallback[PWM_INSTANCE_MAX];
|
|
|
|
/* ==================================== Functions declaration ===================================== */
|
|
/*!
|
|
* @brief PWM initialize.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] config: pointer to configuration structure
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_Init(const uint8_t instance, const pwm_config_t *config);
|
|
|
|
/*!
|
|
* @brief PWM ckgen/irq disable & module reset.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_Deinit(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Set pwm clock source.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] source: clock source
|
|
* - PWM_CLK_SOURCE_NONE: No clock selected,in effect disables the PWM counter
|
|
* - PWM_CLK_SOURCE_SYSTEM: system clock
|
|
* - PWM_CLK_SOURCE_FIXED_FREQUENCY: fixed frequency clock
|
|
* - PWM_CLK_SOURCE_EXTERNAL: external clock
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetClockSource(const uint8_t instance, pwm_clk_source_t source);
|
|
|
|
/*!
|
|
* @brief PWM simply init.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] config: pointer to configuration structure
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SimplyInit(const uint8_t instance, const pwm_simply_config_t *config);
|
|
|
|
/*!
|
|
* @brief Set CnV/CNTIN/MOD sync bypass.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] state: enabling state
|
|
* - true
|
|
* - false
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetSyncBYPEN(const uint8_t instance, bool state);
|
|
|
|
/*!
|
|
* @brief PWM synchronization Control init.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] config: pointer to configuration structure
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_InitSyncControl(const uint8_t instance, const pwm_sync_config_t *config);
|
|
|
|
/*!
|
|
* @brief Enable/Disable global timer base.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] state: true/false
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetGlobalTimeBase(const uint8_t instance, bool state);
|
|
|
|
/*!
|
|
* @brief Global timer base output enable/disable.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] state: true/false
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetGlobalTimeBaseOutput(const uint8_t instance, bool state);
|
|
|
|
/*!
|
|
* @brief Set pwm channel counter value.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] channel: pwm channel num.
|
|
* @param[in] value: channel counter value
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetChannelCountValue(const uint8_t instance, pwm_channel_type_t channel, uint16_t value);
|
|
|
|
/*!
|
|
* @brief Get channel counting value.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] channel: pwm channel number
|
|
* - PWM_CH_0
|
|
* - ...
|
|
* - PWM_CH_7
|
|
* @return channel counting value
|
|
*/
|
|
uint32_t PWM_DRV_GetChannelCountValue(const uint8_t instance, pwm_channel_type_t channel);
|
|
|
|
/*!
|
|
* @brief Set pwm counter value.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] value: counter value
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetCounter(const uint8_t instance, uint16_t value);
|
|
|
|
/*!
|
|
* @brief Get pwm counter value.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return counter value
|
|
*/
|
|
uint32_t PWM_DRV_GetCounter(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Set pwm modulus value.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] value: modulus value
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetMaxCountValue(const uint8_t instance, uint16_t value);
|
|
|
|
/*!
|
|
* @brief Get pwm modulus value.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return modulus value
|
|
*/
|
|
uint32_t PWM_DRV_GetMaxCountValue(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Set pwm counter initial value.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] value: counter initial value
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetCounterInitValue(const uint8_t instance, uint16_t value);
|
|
|
|
/*!
|
|
* @brief Get pwm counter initial value.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return counter initial value
|
|
*/
|
|
uint32_t PWM_DRV_GetCounterInitValue(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Get all channel event flag.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return all channel Flag
|
|
*/
|
|
uint32_t PWM_DRV_GetAllChannelEventFlag(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Clear all channel event flag.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] mask: channel mask.
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_ClearAllChannelEventFlag(const uint8_t instance, uint32_t mask);
|
|
|
|
/*!
|
|
* @brief Get all channel input status.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return all channel input status
|
|
*/
|
|
uint32_t PWM_DRV_GetAllChannelInputStatus(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Get pwm overflow & underflow flag.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return pwm overflow & underflow flag
|
|
*/
|
|
uint32_t PWM_DRV_GetOverflowFlag(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Check pwm counter is overflow or underflow.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return pwm overflow & underflow flag
|
|
*/
|
|
uint32_t PWM_DRV_GetOverflowDir(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Clear overflow & underflow flag.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_ClearOverflowFlag(const uint8_t instance);
|
|
|
|
/*!
|
|
* @brief Set software trigger synchronization.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] state: enabling state
|
|
* - true
|
|
* - false
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetSoftwareTriggerSync(const uint8_t instance, bool state);
|
|
|
|
/*!
|
|
* @brief Set the channel event reset.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] channel: pwm channel number
|
|
* - PWM_CH_0
|
|
* - ...
|
|
* - PWM_CH_7
|
|
* @param[in] state: enabling state
|
|
* - true
|
|
* - false
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetChannelEventReset(const uint8_t instance, pwm_channel_type_t channel, bool state);
|
|
|
|
/*!
|
|
* @brief Set the channel interrupt.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] channel: pwm channel number
|
|
* - PWM_CH_0
|
|
* - ...
|
|
* - PWM_CH_7
|
|
* @param[in] state: enabling state
|
|
* - true
|
|
* - false
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetChannelInterrupt(const uint8_t instance, pwm_channel_type_t channel, bool state);
|
|
|
|
/*!
|
|
* @brief Set the channel dma enable.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] channel: pwm channel number
|
|
* - PWM_CH_0
|
|
* - ...
|
|
* - PWM_CH_7
|
|
* @param[in] state: enabling state
|
|
* - true
|
|
* - false
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetChannelDmaEnable(const uint8_t instance, pwm_channel_type_t channel, bool state);
|
|
|
|
/*!
|
|
* @brief Set pwm enter debug mode.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] mode: pwm debug mode
|
|
* - PWM_DEBUG_MODE_NO_EFFECT
|
|
* - PWM_DEBUG_MODE_COUNTER_STOPPED_OUTPUT_PREVIOUS
|
|
* - PWM_DEBUG_MODE_COUNTER_STOPPED_OUTPUT_HIGH
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetDebugMode(const uint8_t instance, pwm_debug_mode_t mode);
|
|
|
|
/*!
|
|
* @brief Set the write protection.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] state: enabling state
|
|
* - true
|
|
* - false
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_SetWriteProtection(const uint8_t instance, bool state);
|
|
|
|
/*!
|
|
* @brief Get module version information.
|
|
*
|
|
* @param[out] versionInfo: Module version information address.
|
|
* @return void
|
|
*/
|
|
void PWM_DRV_GetVersionInfo(Drv_VersionInfo_Type *versionInfo);
|
|
|
|
/*!
|
|
* @brief Install pwm overflow & underflow interrupt callback function.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] func: The pwm callback function.
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_InstallOverflowCallback(const uint8_t instance, const pwm_callback_t func);
|
|
|
|
/*!
|
|
* @brief Install pwm channel interrupt callback function.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @param[in] func: The pwm callback function
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_InstallChannelCallback(const uint8_t instance, const pwm_callback_t func);
|
|
|
|
/*!
|
|
* @brief PWM overflow common interrupt service routine.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_Overflow_IRQHandler(uint8_t instance);
|
|
|
|
/*!
|
|
* @brief PWM channel common interrupt service routine.
|
|
*
|
|
* @param[in] instance: The pwm instance number
|
|
* @return none
|
|
*/
|
|
void PWM_DRV_Channel_IRQHandler(uint8_t instance);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* PWM_COMMON_H */
|
|
|
|
/* ============================================= EOF ============================================== */
|