/** * @file xmc_bccu.h * @date 2015-06-20 * * @cond ********************************************************************************************************************* * XMClib v2.1.8 - XMC Peripheral Driver Library * * Copyright (c) 2015-2016, Infineon Technologies AG * All rights reserved. * * 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 the copyright holders 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 HOLDER 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. * * To improve the quality of the software, users are encouraged to share modifications, enhancements or bug fixes with * Infineon Technologies AG dave@infineon.com). ********************************************************************************************************************* * * Change History * -------------- * * 2015-02-19: * - Initial draft
* - Documentation improved
* * 2015-05-08: * - Minor bug fix in XMC_BCCU_ClearEventFlag(). * - New APIs are added: XMC_BCCU_DIM_ReadDimDivider(), XMC_BCCU_DIM_GetDimCurve(), XMC_BCCU_IsDitherEnable()
* * 2015-06-20: * - Removed version macros and declaration of GetDriverVersion API * * Detailed description of file:
* APIs for the functional blocks of BCCU have been defined:
* -- GLOBAL configuration
* -- Clock configuration, Function/Event configuration, Interrupt configuration
* * @endcond * */ #ifndef XMC_BCCU_H #define XMC_BCCU_H /********************************************************************************************************************* * HEADER FILES ********************************************************************************************************************/ #include /** * @addtogroup XMClib XMC Peripheral Library * @{ */ /** * @addtogroup BCCU * @brief Brightness and Color Control Unit (BCCU) driver for the XMC1 microcontroller family. * * The Brightness and Color Control Unit (BCCU) is a dimming control peripheral for LED lighting applications. The BCCU * module can be used to control multiple LED channels. Every channel generates one-bit sigma-delta bit stream with a * user adjustable 12-bit average value. The dimming engine changes the brightness gradually (exponential curve) to appear * natural to the human eye. It supports color control by adjusting the relative intensity of selected channels using a * linear walk scheme for smooth color changes. It also supports high-power multi-channel LED lamps by optionally packing * the bitstream. The optional packer which decreases the average rate of output switching by enforcing a defined on-time. * The BCCU module generates two trigger signals to the ADC (BCCU_TRIGOUT0 and BCCU_TRIGOU1) to start conversions in a * synchronized manner. The module can also be used as a multi-channel digital-analog converter with low-pass filters on the * outputs. The BCCU module supports 3 independent dimming engines, 9 independent channels, Trap functions and 2 ADC * triggering modes. * * The driver is divided into global control (BCCU), channel control (BCCU_CH) and dimming control (BCCU_DIM). * * BCCU features: * -# Configuration structure XMC_BCCU_GLOBAL_CONFIG_t and initialization function XMC_BCCU_GlobalInit() * -# Allows configuring of clock settings (Fast clock, Bit clock and Dimming clock). XMC_BCCU_SetFastClockPrescaler(), * -# XMC_BCCU_SelectBitClock(), XMC_BCCU_SetDimClockPrescaler(). * -# Allows configuring global trigger settings. XMC_BCCU_ConfigGlobalTrigger() * -# Allows enabling multiple channels together. XMC_BCCU_ConcurrentEnableChannels() * -# Allows enabling single channel. XMC_BCCU_EnableChannel() * -# Allows configuring global dimming level. XMC_BCCU_SetGlobalDimmingLevel() * -# Starts linear walk for multiple channels together. XMC_BCCU_ConcurrentStartLinearWalk(). * -# Starts linear walk for single channel. XMC_BCCU_StartLinearWalk(). * -# Starts dimming for multiple dimming engines together. XMC_BCCU_ConcurrentStartDimming(). * -# Starts dimming for single dimming engine. XMC_BCCU_StartDimming(). * * BCCU_CH features: * -# Configuration structure (XMC_BCCU_CH_t and initialization function XMC_BCCU_CH_Init() * -# Allows selecting dimming engine. XMC_BCCU_CH_SelectDimEngine(). * -# Allows setting target channel intensity. XMC_BCCU_CH_SetTargetIntensity(). * -# Allows knowing the status of linear walk completion. XMC_BCCU_IsLinearWalkComplete() * -# Allows setting flicker watchdog. XMC_BCCU_CH_EnableFlickerWatchdog(). * -# Allows configuring packer settings. XMC_BCCU_CH_EnablePacker(), XMC_BCCU_CH_SetPackerThreshold(), * XMC_BCCU_CH_SetPackerOffCompare(), XMC_BCCU_CH_SetPackerOffCounte(), XMC_BCCU_CH_SetPackerOnCounter() * -# Allows selecting dimming bypass. XMC_BCCU_CH_DisableDimmingBypass() * * BCCU_DIM features: * -# Configuration structure (XMC_BCCU_DIM_t and initialization function XMC_BCCU_DIM_Init() * -# Allows setting target dimming engine intensity. XMC_BCCU_DIM_SetTargetDimmingLevel(). * XMC_BCCU_DIM_SetTargetDimmingLevel * -# Allows knowing the status of dimming completion. XMC_BCCU_IsDimmingFinished() * -# Allows configuring dimming divider. XMC_BCCU_DIM_SetDimDivider() * -# Allows configuring dimming curve. XMC_BCCU_DIM_ConfigDimCurve() * * Recommended programming sequence: * -# Set output passive and active levels using XMC_BCCU_ConcurrentSetOutputPassiveLevel() or XMC_BCCU_SetOutputPassiveLevel() * -# Initializes global features using XMC_BCCU_GlobalInit() * -# Initializes channel features using XMC_BCCU_CH_Init() * -# Initializes dimming engine using XMC_BCCU_DIM_Init() * -# Enable channels using XMC_BCCU_ConcurrentEnableChannels() or XMC_BCCU_EnableChannel() * -# Enable dimming engines using XMC_BCCU_ConcurrentEnableDimmingEngine() or XMC_BCCU_EnableDimmingEngine() * -# Configure channel linear walk prescaler using XMC_BCCU_CH_SetLinearWalkPrescaler() * -# Configure dimming divider using XMC_BCCU_DIM_SetDimDivider() * -# Set target intensities of channels using XMC_BCCU_CH_SetTargetIntensity() * -# Set target dim levels of dimming engines using XMC_BCCU_DIM_SetTargetDimmingLevel() * -# Start linear walk of the channels using XMC_BCCU_ConcurrentStartLinearWalk() or XMC_BCCU_StartLinearWalk() * -# Start dimming of the dimming engines using XMC_BCCU_ConcurrentStartDimming() or XMC_BCCU_StartDimming() * -# Check the status of linear walk completion using XMC_BCCU_IsLinearWalkComplete() * -# Check the status of dimming completion XMC_BCCU_IsDimmingFinished() * @{ */ #if defined (BCCU0) /********************************************************************************************************************* * MACROS ********************************************************************************************************************/ /********************************************************************************************************************* * ENUMS ********************************************************************************************************************/ /** * Defines the status of BCCU driver, to verify the related API calls. Use type \a XMC_BCCU_STATUS_t for this enum. */ typedef enum { XMC_BCCU_STATUS_SUCCESS = 0U, /**< Operation completed successfully */ XMC_BCCU_STATUS_ERROR = 1U, /**< Operation has some errors */ } XMC_BCCU_STATUS_t; /** * Provides the options to select bit clock mode. */ typedef enum { XMC_BCCU_BCLK_MODE_NORMAL = 0U, /**< Normal Mode: Bit clock runs at 1/4 of fast clock */ XMC_BCCU_BCLK_MODE_FAST = 1U, /**< Fast Mode: Bit clock runs at same as fast clock */ } XMC_BCCU_BCLK_MODE_t; /** * Provides the options to select trigger mode. */ typedef enum { XMC_BCCU_TRIGMODE0 = 0U, /**< Mode0: Trigger on Any Channel using OR logic */ XMC_BCCU_TRIGMODE1 = 1U, /**< Mode1: Trigger on Active channel using round-robin*/ } XMC_BCCU_TRIGMODE_t; /** * Provides the options to select trigger delay, and only be used if Bit clock in Normal mode */ typedef enum { XMC_BCCU_TRIGDELAY_NO_DELAY = 0U, /**< BCCU trigger occurs on channel trigger(without delay) */ XMC_BCCU_TRIGDELAY_QUARTER_BIT = 1U, /**< BCCU trigger occurs on 1/4 bit time delayed after channel trigger */ XMC_BCCU_TRIGDELAY_HALF_BIT = 2U, /**< BCCU trigger occurs on 1/2 bit time delayed after channel trigger */ } XMC_BCCU_TRIGDELAY_t; /** * Provides the options to select suspend mode */ typedef enum { XMC_BCCU_SUSPEND_MODE_IGNORE = 0U, /**< Request ignored, and module cannot get suspended */ XMC_BCCU_SUSPEND_MODE_FREEZE = 1U, /**< All running channels gets stopped, and freeze into a last state (without safe stop) */ XMC_BCCU_SUSPEND_MODE_SAFE_FREEZE = 2U, /**< All running channels gets stopped, and freeze into a last state (with safe stop) */ } XMC_BCCU_SUSPEND_MODE_t; /** * Provides the options to select trap edge */ typedef enum { XMC_BCCU_TRAPEDGE_RISING = 0U, /**< Trap on rising edge of the BCCU.TRAPL signal */ XMC_BCCU_TRAPEDGE_FALLING = 1U, /**< Trap on falling edge of the BCCU.TRAPL signal */ } XMC_BCCU_TRAPEDGE_t; /** * Provides the options to enable/disable the events. * The members can be combined using 'OR' operator for multiple selection.
*/ typedef enum { XMC_BCCU_EVENT_TRIGGER0 = 0x1U, /**< Trigger 0 event */ XMC_BCCU_EVENT_TRIGGER1 = 0x2U, /**< Trigger 1 event */ XMC_BCCU_EVENT_FIFOFULL = 0x4U, /**< FIFO Full event */ XMC_BCCU_EVENT_FIFOEMPTY = 0x8U, /**< FIFO Empty event */ XMC_BCCU_EVENT_TRAP = 0x10U, /**< Trap event */ } XMC_BCCU_EVENT_t; /** * Provides the options to know the status of the event flags. * The members can be combined using 'OR' operator for multiple selection.
*/ typedef enum { XMC_BCCU_EVENT_STATUS_TRIGGER0 = 0x1U, /**< Trigger 0 Event flag status */ XMC_BCCU_EVENT_STATUS_TRIGGER1 = 0x2U, /**< Trigger 1 Event flag status */ XMC_BCCU_EVENT_STATUS_FIFOFULL = 0x4U, /**< FIFO Full Event flag status */ XMC_BCCU_EVENT_STATUS_FIFOEMPTY = 0x8U, /**< FIFO Empty Event flag status */ XMC_BCCU_EVENT_STATUS_TRAP = 0x10U, /**< Trap Event flag status (Without Trap Set) */ XMC_BCCU_EVENT_STATUS_TRAP_STATE = 0x40U, /**< Trap state flag status */ } XMC_BCCU_EVENT_STATUS_t; /** * Provides the options to know the status of trap occurrence */ typedef enum { XMC_BCCU_TRAP_STATUS_DEACTIVE = 0x0U, /**< BCCU module is not in a Trap State */ XMC_BCCU_TRAP_STATUS_ACTIVE = 0x1U, /**< BCCU module is in a Trap State */ } XMC_BCCU_TRAP_STATUS_t; /** * Provides the options to know the current level of trap */ typedef enum { XMC_BCCU_TRAP_LEVEL_LOW = 0x0U, /**< BCCU.TRAPL is Low */ XMC_BCCU_TRAP_LEVEL_HIGH = 0x1U, /**< BCCU.TRAPL is High */ } XMC_BCCU_TRAP_LEVEL_t; /** * Provides the options to select flicker watchdog enable/disable */ typedef enum { XMC_BCCU_CH_FLICKER_WD_DS = 0U, /**< Disable: No control over a sigma-delta modulator output */ XMC_BCCU_CH_FLICKER_WD_EN = 1U, /**< Enable: Limit consecutive zeros at sigma-delta modulator output */ } XMC_BCCU_CH_FLICKER_WD_t; /** * Provides the options to select gating functionality enable/disable, and be used for peak-current control */ typedef enum { XMC_BCCU_CH_GATING_FUNC_DISABLE = 0U, /**< Disable: No control over a BCCU module output */ XMC_BCCU_CH_GATING_FUNC_ENABLE = 1U, /**< Enable: External gating signal which controls BCCU module output */ } XMC_BCCU_CH_GATING_FUNC_t; /** * Provides the options to bypass dimming engine */ typedef enum { XMC_BCCU_CH_DIMMING_ENGINE_BYPASS_DISABLE = 0U, /**< Disable: Brightness = Dimming Level * Intensity */ XMC_BCCU_CH_DIMMING_ENGINE_BYPASS_ENABLE = 1U, /**< Enable: Brightness = Intensity */ } XMC_BCCU_CH_DIMMING_ENGINE_BYPASS_t; /** * Provides the options to select passive level of the channel output */ typedef enum{ XMC_BCCU_CH_ACTIVE_LEVEL_HIGH = 0U, /**< Default passive level of the channel is low */ XMC_BCCU_CH_ACTIVE_LEVEL_LOW = 1U, /**< Default passive level of the channel is high */ } XMC_BCCU_CH_ACTIVE_LEVEL_t; /** * Provides the options to select trigger edge */ typedef enum { XMC_BCCU_CH_TRIG_EDGE_PASS_TO_ACT = 0U, /**< Trigger on output transition from passive to active */ XMC_BCCU_CH_TRIG_EDGE_ACT_TO_PASS = 1U, /**< Trigger on output transition from active to passive */ } XMC_BCCU_CH_TRIG_EDGE_t; /** * Provides the options to select source of trap input */ typedef enum { XMC_BCCU_CH_TRAP_INA = 0x0U, /**< Trap INA */ XMC_BCCU_CH_TRAP_INB = 0x1U, /**< Trap INB */ XMC_BCCU_CH_TRAP_INC = 0x2U, /**< Trap INC */ XMC_BCCU_CH_TRAP_IND = 0x3U, /**< Trap IND */ XMC_BCCU_CH_TRAP_INE = 0x4U, /**< Trap INE */ XMC_BCCU_CH_TRAP_INF = 0x5U, /**< Trap INF */ XMC_BCCU_CH_TRAP_ING = 0x6U, /**< Trap ING */ XMC_BCCU_CH_TRAP_INH = 0x7U, /**< Trap INH */ XMC_BCCU_CH_TRAP_INI = 0x8U, /**< Trap INI */ XMC_BCCU_CH_TRAP_INJ = 0x9U, /**< Trap INJ */ XMC_BCCU_CH_TRAP_INK = 0xAU, /**< Trap INK */ XMC_BCCU_CH_TRAP_INL = 0xBU, /**< Trap INL */ XMC_BCCU_CH_TRAP_INM = 0xCU, /**< Trap INM */ XMC_BCCU_CH_TRAP_INN = 0xDU, /**< Trap INN */ XMC_BCCU_CH_TRAP_INO = 0xEU, /**< Trap INO */ XMC_BCCU_CH_TRAP_INP = 0xFU, /**< Trap INP */ } XMC_BCCU_CH_TRAP_IN_t; /** * Provides the options to select edge for trap occurrence */ typedef enum { XMC_BCCU_CH_TRAP_EDGE_RISING = 0U, /**< Trap on rising edge of the BCCU.TRAPL signal */ XMC_BCCU_CH_TRAP_EDGE_FALLING = 1U /**< Trap on falling edge of the BCCU.TRAPL signal */ } XMC_BCCU_CH_TRAP_EDGE_t; /** * Provides the options to select trigger output, and only be used in XMC_BCCU_TRIGMODE1 */ typedef enum { XMC_BCCU_CH_TRIGOUT0 = 0U, /**< Trigger occurrence on BCCU_TRIGOUT0 signal */ XMC_BCCU_CH_TRIGOUT1 = 1U, /**< Trigger occurrence on BCCU_TRIGOUT1 signal */ } XMC_BCCU_CH_TRIGOUT_t; /** * Provides the options to select dimming source of the channel */ typedef enum { XMC_BCCU_CH_DIMMING_SOURCE_GLOBAL = 7U, /**< Global Dimming Engine */ XMC_BCCU_CH_DIMMING_SOURCE_DE0 = 0U, /**< Dimming Engine 0 */ XMC_BCCU_CH_DIMMING_SOURCE_DE1 = 1U, /**< Dimming Engine 1 */ XMC_BCCU_CH_DIMMING_SOURCE_DE2 = 2U, /**< Dimming Engine 2 */ } XMC_BCCU_CH_DIMMING_SOURCE_t; /** * Provides the options to select exponential dimming curve */ typedef enum { XMC_BCCU_DIM_CURVE_COARSE = 0U, /**< Coarse curve: Slope of the linear pieces doubles every time, when it passes specific thresholds of 16, 32, 64, 128, 256, 512, 1024, 2048 */ XMC_BCCU_DIM_CURVE_FINE = 1U, /**< Fine Curve: More pieces and different line slopes */ } XMC_BCCU_DIM_CURVE_t; /********************************************************************************************************************* * DATA STRUCTURES ********************************************************************************************************************/ /** * Redefinition of BCCU module structure; pointer to bccu module base address */ typedef BCCU_Type XMC_BCCU_t; /** * Redefinition of BCCU module channel structure; pointer to bccu module channel Base address */ typedef BCCU_CH_Type XMC_BCCU_CH_t; /** * Redefinition of BCCU module dimming engine structure; pointer to bccu module dimming engine base address */ typedef BCCU_DE_Type XMC_BCCU_DIM_t; /*Anonymous structure/union guard start*/ #if defined(__CC_ARM) #pragma push #pragma anon_unions #elif defined(__TASKING__) #pragma warning 586 #endif /** * Configures a global setting of the BCCU module. */ typedef struct XMC_BCCU_GLOBAL_CONFIG { union{ struct{ uint32_t trig_mode:1; /**< Selects trigger Mode. Use type @ref XMC_BCCU_TRIGMODE_t */ uint32_t : 1; uint32_t trig_delay:2; /**< Selects trigger delay between channel & module trigger. \n Use type @ref XMC_BCCU_TRIGDELAY_t */ uint32_t : 12; uint32_t maxzero_at_output:12; /**< Configures maximum 0's allowed at modulator output */ }; uint32_t globcon; /* Not to use */ }; union{ struct{ uint32_t fclk_ps:12; /**< Configures the ratio between fast clock and module clock */ uint32_t : 3; uint32_t bclk_sel:1; /**< Selects the bit clock. Use type @ref XMC_BCCU_BCLK_MODE_t */ uint32_t dclk_ps:12; /**< Configures the ratio between dimmer clock and module clock */ }; uint32_t globclk; /* Not to use */ }; uint32_t global_dimlevel; /**< Configures global dimming engine dimming level */ } XMC_BCCU_GLOBAL_CONFIG_t; /** * Configures global trigger settings of the BCCU module. */ typedef struct XMC_BCCU_TRIG_CONFIG { XMC_BCCU_TRIGMODE_t mode; /**< Selects global trigger mode which decides when to occur BCCU trigger */ XMC_BCCU_TRIGDELAY_t delay; /**< Selects global trigger delay between channel trigger & BCCU trigger */ uint16_t mask_chans; /**< Channel mask to configure trigger settings for multiple channels For example: If channel 0 and 7, wants to configure then the channel mask is 01000 0001 = 0x81\n*/ uint16_t mask_trig_lines; /**< Trigger line mask */ } XMC_BCCU_TRIG_CONFIG_t; /** * Configures channel settings of the BCCU module. */ #ifdef DOXYGEN typedef struct XMC_BCCU_CH_CONFIG { uint32_t pack_thresh:3; /**< Configures packer threshold value of FIFO */ uint32_t pack_en:1; /**< Enables a packed output bitstream */ uint32_t dim_sel:3; /**< Selects a dimming engine source of the channel. \n Use type @ref XMC_BCCU_CH_DIMMING_SOURCE_t */ uint32_t dim_bypass:1; /**< Selects dimming engine bypass enable. \n Use type @ref XMC_BCCU_CH_DIMMING_ENGINE_BYPASS_t */ uint32_t gate_en:1; /**< Selects gating enable. Use type @ref XMC_BCCU_CH_GATING_FUNC_t */ uint32_t flick_wd_en:1; /**< Selects flicker watchdog enable. Use type @ref XMC_BCCU_CH_FLICKER_WD_t */ uint32_t trig_edge:1; /**< Selects trigger edge. Use type @ref XMC_BCCU_CH_TRIG_EDGE_t */ uint32_t force_trig_en:1; /**< Selects force trigger enable; generates a trigger if modulator output do not change\n for 256 bclk cycles */ uint32_t pack_offcmp_lev:8; /**< Configures a packer off-time compare level. When the off-time counter reaches this, the measured on & off time counters are stored into FIFO */ uint32_t pack_oncmp_lev:8; /**< Configures a packer on-time compare level. When the on-time counter reaches this,\n the measured on & off time counters are stored into FIFO */ uint32_t pack_offcnt_val:8; /**< Configures an initial packer off-time counter level, only if channel is disabled.
Controls phase shift of the modulator output */ uint32_t pack_oncnt_val:8; /**< Configures an initial packer on-time counter level, only if channel is disabled.
Controls phase shift of the modulator output */ }XMC_BCCU_CH_CONFIG_t; #endif typedef struct XMC_BCCU_CH_CONFIG { union{ struct{ uint32_t pack_thresh:3; /**< Configures packer threshold value of FIFO */ uint32_t pack_en:1; /**< Enables a packed output bitstream */ uint32_t dim_sel:3; /**< Selects a dimming engine source of the channel. \n Use type @ref XMC_BCCU_CH_DIMMING_SOURCE_t */ uint32_t dim_bypass:1; /**< Selects dimming engine bypass enable. \n Use type @ref XMC_BCCU_CH_DIMMING_ENGINE_BYPASS_t */ uint32_t gate_en:1; /**< Selects gating enable. Use type @ref XMC_BCCU_CH_GATING_FUNC_t */ uint32_t flick_wd_en:1; /**< Selects flicker watchdog enable. Use type @ref XMC_BCCU_CH_FLICKER_WD_t */ uint32_t trig_edge:1; /**< Selects trigger edge. Use type @ref XMC_BCCU_CH_TRIG_EDGE_t */ uint32_t force_trig_en:1; /**< Selects force trigger enable; generates a trigger if modulator output do not change\n for 256 bclk cycles */ }; uint32_t chconfig; /* Not to use */ }; union{ struct{ uint32_t pack_offcmp_lev:8; /**< Configures a packer off-time compare level. When the off-time counter reaches \n this, the measured on & off time counters are stored into FIFO */ uint32_t : 8; uint32_t pack_oncmp_lev:8; /**< Configures a packer on-time compare level. When the on-time counter reaches this,\n the measured on & off time counters are stored into FIFO */ }; uint32_t pkcmp; /* Not to use */ }; union{ struct{ uint32_t pack_offcnt_val:8; /**< Configures an initial packer off-time counter level, only if channel is disabled.
Controls phase shift of the modulator output */ uint32_t : 8; uint32_t pack_oncnt_val:8; /**< Configures an initial packer on-time counter level, only if channel is disabled.
Controls phase shift of the modulator output */ }; uint32_t pkcntr; /* Not to use */ }; }XMC_BCCU_CH_CONFIG_t; /** * Configures dimming engine settings of the BCCU module. */ #ifdef DOXYGEN typedef struct XMC_BCCU_DIM_CONFIG { uint32_t dim_div:10; /**< Configures a dimming clock divider, used to adjust the fade rate. If 0, the dimming level
as same as target dimming level on shadow transfer */ uint32_t dither_en:1; /**< Selects a dither enable. Dithering added for every dimming step if dimming level < 128. */ uint32_t cur_sel:1; /**< Selects a type of exponential curve. Use type @ref XMC_BCCU_DIM_CURVE_t. If dither
enabled, the configuration is being ignored */ }XMC_BCCU_DIM_CONFIG_t; #endif typedef struct XMC_BCCU_DIM_CONFIG { union{ struct{ uint32_t dim_div:10; /**< Configures a dimming clock divider, used to adjust the fade rate. If 0, the dimming level
as same as target dimming level on shadow transfer */ uint32_t : 6; uint32_t dither_en:1; /**< Selects a dither enable. Dithering added for every dimming step if dimming level < 128. */ uint32_t cur_sel:1; /**< Selects a type of exponential curve. Use type @ref XMC_BCCU_DIM_CURVE_t. If dither
enabled, the configuration is being ignored */ }; uint32_t dtt; /* Not to use */ }; }XMC_BCCU_DIM_CONFIG_t; /*Anonymous structure/union guard end*/ #if defined(__CC_ARM) #pragma pop #elif defined(__TASKING__) #pragma warning restore #endif /********************************************************************************************************************* * API PROTOTYPES ********************************************************************************************************************/ #ifdef __cplusplus extern "C" { #endif /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param config Pointer to constant bccu global configuration data structure. Use type @ref XMC_BCCU_GLOBAL_CONFIG_t. * * @return None * * \parDescription:
* Initializes three main clocks (fast clock, bit clock, dimmer clock) by using \a fclk_ps \a bclk_sel \a dclk_ps parameters * and writing into a GLOBCLK register.\n * And also configures a trigger mode, trigger delay, maximum 0's allowed at modulator output by writing into a GLOBCON * register.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_Init(), XMC_BCCU_DIM_Init()\n\n\n */ void XMC_BCCU_GlobalInit (XMC_BCCU_t *const bccu, const XMC_BCCU_GLOBAL_CONFIG_t *const config); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mode Trigger mode selection. \b Range: XMC_BCCU_TRIGMODE0, XMC_BCCU_TRIGMODE1.\n * 1. XMC_BCCU_TRIGMODE0 - Trigger on Any Channel * 2. XMC_BCCU_TRIGMODE1 - Trigger on Active channel * @param delay Delay to avoid sampling during switching noise. Use type @ref XMC_BCCU_TRIGDELAY_t. \n * \b Range: XMC_BCCU_NO_DELAY, XMC_BCCU_QUARTER_BIT_DELAY, XMC_BCCU_HALF_BIT_DELAY. * * @return None * * \parDescription:
* Configures trigger mode and trigger delay by writing register bits GLOBCON.TM, GLOBCON.TRDEL. \a mode and \a delay * parameters which decides when to trigger a conversion of vadc module for voltage measurement. \n\n * * \parRelated APIs:
* XMC_BCCU_EnableChannelTrigger(), XMC_BCCU_ReadGlobalTrigger(), XMC_BCCU_ConcurrentConfigTrigger(), XMC_BCCU_GlobalInit(), * XMC_BCCU_ReadLastTrigChanNr(), XMC_BCCU_GetChannelOutputLvlAtLastTrigger(), XMC_BCCU_CH_ConfigTrigger()\n\n\n */ void XMC_BCCU_ConfigGlobalTrigger(XMC_BCCU_t *const bccu, XMC_BCCU_TRIGMODE_t mode, XMC_BCCU_TRIGDELAY_t delay); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Source of Trigger mode. \b Range: 0 or 1 \n * 0 - Trigger mode 0 (Trigger on Any Channel) \n * 1 - Trigger mode 1 (Trigger on Active Channel)\n\n * \parDescription:
* Retrieves global trigger mode of the BCCU module by reading the register bit GLOBCON_TM. Use XMC_BCCU_TRIGMODE_t type to * validate a returned value.\n\n * * \parRelated APIs:
* XMC_BCCU_ConfigGlobalTrigger(), XMC_BCCU_ConcurrentConfigTrigger(), XMC_BCCU_GlobalInit()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadGlobalTrigger (XMC_BCCU_t *const bccu) { return (uint32_t)(bccu->GLOBCON & BCCU_GLOBCON_TM_Msk); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param input Trap input selection. Use type @ref XMC_BCCU_TRIGDELAY_t. * \b Range: XMC_BCCU_TRIGDELAY_NO_DELAY, XMC_BCCU_TRIGDELAY_QUARTER_BIT, XMC_BCCU_TRIGDELAY_HALF_BIT. * * @return None * * \parDescription:
* Selects input of trap functionality by writing register bit GLOBCON_TRAPIS. The trap functionality is used to switch * off the connected power devices when trap input becomes active.\n\n * * \parRelated APIs:
* XMC_BCCU_SetTrapEdge(), XMC_BCCU_ReadTrapInput(), XMC_BCCU_EnableTrap(), XMC_BCCU_ConcurrentEnableTrap()\n\n\n */ void XMC_BCCU_SelectTrapInput (XMC_BCCU_t *const bccu, XMC_BCCU_CH_TRAP_IN_t input); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Source of trap input. \b Range: 0 to 15 \n * 0 - TRAPINA \n * 1 - TRAPINB and so on. \n * \parDescription:
* Retrieves trap input of the channel by reading the register bit GLOBCON_TRAPIS. Use XMC_BCCU_CH_TRAP_IN_t type to * validate a returned value.\n\n * * \parRelated APIs:
* XMC_BCCU_SelectTrapInput()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadTrapInput (XMC_BCCU_t *const bccu) { return (uint32_t)(( (bccu->GLOBCON) & BCCU_GLOBCON_TRAPIS_Msk) >> BCCU_GLOBCON_TRAPIS_Pos); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param edge Trap edge selection. Use type @ref XMC_BCCU_CH_TRAP_EDGE_t. \n * \b Range: XMC_BCCU_CH_TRAP_EDGE_RISING, XMC_BCCU_CH_TRAP_EDGE_FALLING. * * @return None * * \parDescription:
* Selects active edge which detects trap on TRAPL signal by writing register bit GLOBCON_TRAPED.\n\n * * \parRelated APIs:
* XMC_BCCU_SelectTrapInput(), XMC_BCCU_ReadTrapEdge(), XMC_BCCU_EnableTrap(), XMC_BCCU_ConcurrentEnableTrap()\n\n\n */ void XMC_BCCU_SetTrapEdge (XMC_BCCU_t *const bccu, XMC_BCCU_CH_TRAP_EDGE_t edge); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Trap edge selection. \b Range: 0 or 1 \n * 0 - XMC_BCCU_CH_TRAP_EDGE_RISING \n * 1 - XMC_BCCU_CH_TRAP_EDGE_FALLING. \n * \parDescription:
* Retrieves trap edge by reading the register bit GLOBCON_TRAPED. Use XMC_BCCU_CH_TRAP_EDGE_t type to * validate a returned value.\n\n * * \parRelated APIs:
* XMC_BCCU_SetTrapEdge()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadTrapEdge (XMC_BCCU_t *const bccu) { return (uint32_t)(( (bccu->GLOBCON) & BCCU_GLOBCON_TRAPED_Msk) >> BCCU_GLOBCON_TRAPED_Pos); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mode Suspend mode selection. Use type @ref XMC_BCCU_SUSPEND_MODE_t. \n * \b Range: XMC_BCCU_SUSPEND_MODE_IGNORE, XMC_BCCU_SUSPEND_MODE_FREEZE, XMC_BCCU_USPEND_MODE_SAFE_FREEZE. \n * * @return None * * \parDescription:
* Configures suspend mode by writing register bit GLOBCON_SUSCFG.\n\n * * \parRelated APIs:
* XMC_BCCU_ReadSuspendMode()\n\n\n */ void XMC_BCCU_ConfigSuspendMode (XMC_BCCU_t *const bccu, XMC_BCCU_SUSPEND_MODE_t mode); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Trap edge selection. \b Range: 0, 1, 2 \n * 0 - XMC_BCCU_SUSPEND_MODE_IGNORE \n * 1 - XMC_BCCU_SUSPEND_MODE_FREEZE. \n * 2 - XMC_BCCU_USPEND_MODE_SAFE_FREEZE. \n * \parDescription:
* Retrieves the state of suspend mode by reading the register bit GLOBCON_TRAPIS. Use XMC_BCCU_SUSPEND_MODE_t type to * validate a returned value.\n\n * * \parRelated APIs:
* XMC_BCCU_ConfigSuspendMode()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadSuspendMode (XMC_BCCU_t *const bccu) { return (uint32_t)( ((bccu->GLOBCON) & BCCU_GLOBCON_SUSCFG_Msk) >> BCCU_GLOBCON_SUSCFG_Pos); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Last triggered channel number. \b Range: 0 to 8\n * 0 - BCCU Channel 0\n * 1 - BCCU Channel 1 and so on.\n * \parDescription:
* Retrieves last triggered channel number of a BCCU module by reading the register bit GLOBCON_LTRS.\n\n * * \parRelated APIs:
* XMC_BCCU_GetChannelOutputLvlAtLastTrigger(), XMC_BCCU_ConfigGlobalTrigger(), XMC_BCCU_ConcurrentConfigTrigger(), * XMC_BCCU_ReadGlobalTrigger(), XMC_BCCU_GlobalInit()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadLastTrigChanNr (XMC_BCCU_t *const bccu) { return (uint32_t)(( (bccu->GLOBCON) & BCCU_GLOBCON_LTRS_Msk) >> BCCU_GLOBCON_LTRS_Pos); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param threshold_no Number of consecutive zeroes at modulator output. \b Range: 0 to 4095. * * @return None * * \parDescription:
* Configures number of consecutive zeroes allowed at modulator output (flicker watch-dog number) by writing register * bit GLOBCON_WDMBN.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_EnableFlickerWatchdog(), XMC_BCCU_ReadFlickerWDThreshold(), XMC_BCCU_CH_Init(), XMC_BCCU_CH_DisableFlickerWatchdog()\n\n\n */ void XMC_BCCU_SetFlickerWDThreshold (XMC_BCCU_t *const bccu, uint32_t threshold_no); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Number of consecutive zeroes at modulator output. \b Range: 0 to 4095 \n * \parDescription:
* Retrieves number of consecutive zeroes at modulator output (flicker watchdog number) by reading the register bit * GLOBCON_WDMBN.\n\n * * \parRelated APIs:
* XMC_BCCU_SetFlickerWDThreshold(), XMC_BCCU_CH_EnableFlickerWatchdog(), XMC_BCCU_CH_Init(), XMC_BCCU_CH_DisableFlickerWatchdog()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadFlickerWDThreshold (XMC_BCCU_t *const bccu) { return (uint32_t)(( (bccu->GLOBCON) & BCCU_GLOBCON_WDMBN_Msk) >> BCCU_GLOBCON_WDMBN_Pos); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param div Prescaler factor. \b Range: 0 to 4095. * * @return None * * \parDescription:
* Configures trigger functionality clock prescaler factor of a BCCU module by writing register bit GLOBCLK_FCLK_PS.\n\n * * \parRelated APIs:
* XMC_BCCU_SetDimClockPrescaler(), XMC_BCCU_SelectBitClock(), XMC_BCCU_ReadFastClock()\n\n\n */ void XMC_BCCU_SetFastClockPrescaler (XMC_BCCU_t *const bccu, uint32_t div); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Prescaler factor. \b Range: 0 to 4095 * \parDescription:
* Retrieves fast clock prescaler factor of a BCCU module by reading the register bit GLOBCLK_FCLK_PS. The fast clock is * derived from the bccu clock by prescaler factor i.e. fdclk = fbccu_clk / prescaler factor.\n\n * * \parRelated APIs:
* XMC_BCCU_SetFastClockPrescaler(), XMC_BCCU_ReadBitClock(), XMC_BCCU_ReadDimClock()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadFastClock (XMC_BCCU_t *const bccu) { return (uint32_t)(((bccu->GLOBCLK) & BCCU_GLOBCLK_FCLK_PS_Msk) >> BCCU_GLOBCLK_FCLK_PS_Pos); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param div Prescaler factor. \b Range: 0 to 4095. * * @return None * * \parDescription:
* Configures dimmer clock prescaler factor of a BCCU module by writing register bit GLOBCLK_DCLK_PS.\n\n * * \parRelated APIs:
* XMC_BCCU_DIM_SetDimDivider(), XMC_BCCU_SetFastClockPrescaler(), XMC_BCCU_SelectBitClock(), XMC_BCCU_ReadDimClock()\n\n\n */ void XMC_BCCU_SetDimClockPrescaler (XMC_BCCU_t *const bccu, uint32_t div); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Prescaler factor. \b Range: 0 to 4095 * \parDescription:
* Retrieves dimmer clock prescaler factor of a BCCU module by reading the register bit GLOBCLK_DCLK_PS. The dim clock is * derived from the bccu clock by prescaler factor. \n i.e. fdclk = fbccu_clk / prescaler factor.\n\n * * \parRelated APIs:
* XMC_BCCU_SetDimClockPrescaler(), XMC_BCCU_ReadBitClock(), XMC_BCCU_ReadFastClock()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadDimClock (XMC_BCCU_t *const bccu) { return (uint32_t)(((bccu->GLOBCLK) & BCCU_GLOBCLK_DCLK_PS_Msk) >> BCCU_GLOBCLK_DCLK_PS_Pos); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param div Prescaler factor. Use type @ref XMC_BCCU_BCLK_MODE_t. \n * \b Range: XMC_BCCU_BCLK_MODE_NORMAL or XMC_BCCU_BCLK_MODE_FAST. \n * @return None * * \parDescription:
* Configures modulator output (bit-time) clock prescaler factor of a BCCU module by writing register bit GLOBCLK_BCS.\n\n * * \parRelated APIs:
* XMC_BCCU_SetFastClockPrescaler(), XMC_BCCU_SetDimClockPrescaler(), XMC_BCCU_ReadBitClock()\n\n\n */ void XMC_BCCU_SelectBitClock (XMC_BCCU_t *const bccu, XMC_BCCU_BCLK_MODE_t div); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Prescaler factor. \b Range: 0 or 1 \n * 0 - XMC_BCCU_BCLK_MODE_NORMAL \n * 1 - XMC_BCCU_BCLK_MODE_FAST \n * \parDescription:
* Retrieves modulator output (bit-time) clock prescaler factor of a BCCU module by reading the register bit GLOBCLK_BCS. * Use XMC_BCCU_BCLK_MODE_t type to validate a returned value.\n\n * * \parRelated APIs:
* XMC_BCCU_SelectBitClock(), XMC_BCCU_ReadDimClock(), XMC_BCCU_ReadFastClock()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadBitClock (XMC_BCCU_t *const bccu) { return (uint32_t)(((bccu->GLOBCLK) & BCCU_GLOBCLK_BCS_Msk) >> BCCU_GLOBCLK_BCS_Pos); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Channel mask to enable multiple channels.\n * For example: If channel 0, channel 7, channel 1 wants to enable at a same time, \n * then channel mask is 01000 0011 = 0x83\n * ------------------------------------------------------------------------------------------------------\n * | Chan8 | Chan7 | Chan6 | Chan5 | Chan4 | Chan3 | Chan2 | Chan1 | Chan0 |\n * ------------------------------------------------------------------------------------------------------\n * * @return None * * \parDescription:
* Enables multiple channels at a same time using \a mask by writing a register CHEN.\n\n * * \parRelated APIs:
* XMC_BCCU_EnableChannel(), XMC_BCCU_ConcurrentDisableChannels()\n\n\n */ void XMC_BCCU_ConcurrentEnableChannels (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Channel mask to disable multiple channels.\n * For example: If channel 0, channel 7, channel 1 wants to disable at a same time, \n * then channel mask is 01000 0011 = 0x83\n * ------------------------------------------------------------------------------------------------------\n * | Chan8 | Chan7 | Chan6 | Chan5 | Chan4 | Chan3 | Chan2 | Chan1 | Chan0 |\n * ------------------------------------------------------------------------------------------------------\n * * @return None * * \parDescription:
* Disables multiple channels at a same time using \a mask by writing a register CHEN.\n\n * * \parRelated APIs:
* XMC_BCCU_ConcurrentEnableChannels(), XMC_BCCU_DisableChannel()\n\n\n */ void XMC_BCCU_ConcurrentDisableChannels (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_mask Channel mask to enable multiple channels.\n * For example: If channel 0, channel 7, channel 1 wants to enable at a same time, \n * then channel mask is 01000 0011 = 0x83\n * ------------------------------------------------------------------------------------------------------\n * | Chan8 | Chan7 | Chan6 | Chan5 | Chan4 | Chan3 | Chan2 | Chan1 | Chan0 |\n * ------------------------------------------------------------------------------------------------------\n * @param level Passive level selection. Use type @ref XMC_BCCU_CH_ACTIVE_LEVEL_t.\n * \b Range: XMC_BCCU_CH_ACTIVE_LEVEL_HIGH or XMC_BCCU_CH_ACTIVE_LEVEL_LOW * * @return None * * \parDescription:
* Configures passive levels of multiple channels at a same time using \a mask by writing a register bit CHOCON_CHyOP.\n\n * * \parRelated APIs:
* XMC_BCCU_SetOutputPassiveLevel()\n\n\n */ void XMC_BCCU_ConcurrentSetOutputPassiveLevel(XMC_BCCU_t *const bccu, uint32_t chan_mask, XMC_BCCU_CH_ACTIVE_LEVEL_t level); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Channel mask to enable multiple channels trap functionality.\n * For example: If channel 0, channel 7, channel 1 wants to enable a trap functionality at a same time, \n * then channel mask is 01000 0011 = 0x83\n * ------------------------------------------------------------------------------------------------------\n * | Chan8 | Chan7 | Chan6 | Chan5 | Chan4 | Chan3 | Chan2 | Chan1 | Chan0 |\n * ------------------------------------------------------------------------------------------------------\n * * @return None * * \parDescription:
* Enables multiple channels trap functionality at the same time using \a mask by writing a register bit CHOCON_CHyTPE.\n\n * * \parRelated APIs:
* XMC_BCCU_EnableTrap(), XMC_BCCU_ConcurrentDisableTrap(), XMC_BCCU_SelectTrapInput(), XMC_BCCU_SetTrapEdge()\n\n\n */ void XMC_BCCU_ConcurrentEnableTrap (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Channel mask to disable multiple channels trap functionality. * For example: If channel 0, channel 7, channel 1 wants to disable a trap functionality at a same time, \n * then channel mask is 01000 0011 = 0x83\n * ------------------------------------------------------------------------------------------------------\n * | Chan8 | Chan7 | Chan6 | Chan5 | Chan4 | Chan3 | Chan2 | Chan1 | Chan0 |\n * ------------------------------------------------------------------------------------------------------\n * * @return None * * \parDescription:
* Disables multiple channels trap functionality at the same time using \a mask by writing a register bit CHOCON_CHyTPE.\n\n * * \parRelated APIs:
* XMC_BCCU_DisableTrap(), XMC_BCCU_ConcurrentEnableTrap()\n\n\n */ void XMC_BCCU_ConcurrentDisableTrap (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param trig Pointer to a trigger configuration data structure. Use type @ref XMC_BCCU_TRIG_CONFIG_t. * * @return None * * \parDescription:
* Configures global trigger settings: trigger mode, trigger delay, individual trigger lines and channel mask by writing a \n * registers GLOBCON and CHTRIG. Trigger mode decides when to generate a BCCU trigger, trigger delay postpones the channel \n * trigger by 1/4, or 1/2 bclk cycles\n\n * * \parRelated APIs:
* XMC_BCCU_ConfigGlobalTrigger(), XMC_BCCU_ReadLastTrigChanNr(), XMC_BCCU_ReadGlobalTrigger(), XMC_BCCU_GlobalInit()\n\n\n */ void XMC_BCCU_ConcurrentConfigTrigger (XMC_BCCU_t *const bccu, XMC_BCCU_TRIG_CONFIG_t *trig); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Channel mask to start a linear walk for multiple channels at a same time.\n * For example: If channel 0, channel 7, channel 1 wants to start a linear walk at a same time, \n * then channel mask is 01000 0011 = 0x83\n * ------------------------------------------------------------------------------------------------------\n * | Chan8 | Chan7 | Chan6 | Chan5 | Chan4 | Chan3 | Chan2 | Chan1 | Chan0 |\n * ------------------------------------------------------------------------------------------------------\n * * @return None * * \parDescription:
* After channel initialization, the outcome of executing the API starts changing the color smoothly towards to target \n * for multiple channels at a same time using \a mask by writing a register CHSTRCON.\n\n * * \parRelated APIs:
* XMC_BCCU_StartLinearWalk(), XMC_BCCU_ConcurrentAbortLinearWalk()\n\n\n */ void XMC_BCCU_ConcurrentStartLinearWalk (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Channel mask to stop a linear walk for multiple channels at a same time.\n * For example: If channel 0, channel 7, channel 1 wants to abort a linear walk at a same time, \n * then channel mask is 01000 0011 = 0x83\n * ------------------------------------------------------------------------------------------------------\n * | Chan8 | Chan7 | Chan6 | Chan5 | Chan4 | Chan3 | Chan2 | Chan1 | Chan0 |\n * ------------------------------------------------------------------------------------------------------\n * * @return None * * \parDescription:
* When the linear walk in progress, the outcome of executing the API is stopping the linear walk (i.e. color change) * immediately for multiple channels at a same time using \a mask by writing a register CHSTRCON.\n\n * * \parRelated APIs:
* XMC_BCCU_AbortLinearWalk(), XMC_BCCU_ConcurrentStartLinearWalk()\n\n\n */ void XMC_BCCU_ConcurrentAbortLinearWalk (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Dimming engine mask to enable multiple dimming engine at a same time.\n * For example: If dimming engine 0, channel 2 wants to enable a dimming at a same time, * then dimming engine mask is 0101 = 0x03\n * --------------------------\n * | DE2 | DE1 | DE0 |\n * --------------------------\n * * @return None * * \parDescription:
* Enables multiple dimming engines at a same time using \a mask by writing a register DEEN.\n\n * * \parRelated APIs:
* XMC_BCCU_EnableDimmingEngine(), XMC_BCCU_ConcurrentDisableDimmingEngine()\n\n\n */ void XMC_BCCU_ConcurrentEnableDimmingEngine (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Dimming engine mask to disable multiple dimming engine at a same time.\n * For example: If dimming engine 0, channel 2 wants to disable a dimming at a same time, * then dimming engine mask is 0101 = 0x03\n * --------------------------\n * | DE2 | DE1 | DE0 |\n * --------------------------\n * * @return None * * \parDescription:
* Disables multiple dimming engines at a same time using \a mask by writing a register DEEN.\n\n * * \parRelated APIs:
* XMC_BCCU_DisableDimmingEngine(), XMC_BCCU_ConcurrentEnableDimmingEngine()\n\n\n */ void XMC_BCCU_ConcurrentDisableDimmingEngine (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Dimming engine mask to start a dimming for multiple dimming engines at a same time.\n * For example: If dimming engine 0, channel 2 wants to start a dimming at a same time, * then dimming engine mask is 0101 = 0x03\n * --------------------------\n * | DE2 | DE1 | DE0 |\n * --------------------------\n * * @return None * * \parDescription:
* After dimming engine initialization, the outcome of executing the API starts changing the brightness towards to target * for multiple dimming engines at a same time using \a mask by writing a register DESTRCON.\n\n * * \parRelated APIs:
* XMC_BCCU_StartDimming(), XMC_BCCU_ConcurrentAbortDimming()\n\n\n */ void XMC_BCCU_ConcurrentStartDimming (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param mask Dimming engine mask to abort a dimming for multiple dimming engines at a same time.\n * For example: If dimming engine 0, channel 2 wants to abort a dimming at a same time, * then dimming engine mask is 0101 = 0x03\n * --------------------------\n * | DE2 | DE1 | DE0 |\n * --------------------------\n * * @return None * * \parDescription:
* When the dimming in progress, the outcome of executing the API is stopping the dimming (i.e. fading) * immediately for specific dimming engine number \a dim_no by writing a register DESTRCON.\n\n * * \parRelated APIs:
* XMC_BCCU_AbortDimming(), XMC_BCCU_ConcurrentStartDimming()\n\n\n */ void XMC_BCCU_ConcurrentAbortDimming (XMC_BCCU_t *const bccu, uint32_t mask); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param level Dimming level of global dimming engine. \b Range: 0 to 4095\n * * @return None * * \parDescription:
* Configures a global dimming level by writing a register GLOBDIM. This is useful only if global dimming engine selected. * Otherwise the configuration is ignored. \n\n * * \parRelated APIs:
* XMC_BCCU_DIM_SetTargetDimmingLevel()\n\n\n */ void XMC_BCCU_SetGlobalDimmingLevel (XMC_BCCU_t *const bccu, uint32_t level); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param event Event mask to enable multiple events at a time using ORed values of @ref XMC_BCCU_EVENT_t.\n * For example: If XMC_BCCU_EVENT_TRIGGER0, XMC_BCCU_EVENT_TRIGGER1, XMC_BCCU_EVENT_FIFOEMPTY wants to enable * at a same time,\n then event mask is = (XMC_BCCU_EVENT_TRIGGER0 | XMC_BCCU_EVENT_TRIGGER1 | * XMC_BCCU_EVENT_FIFOEMPTY) \n * * @return None * * \parDescription:
* Enables multiple interrupt events at a same time using ORed values of @ref XMC_BCCU_EVENT_t by writing a register EVIER.\n\n * * \parRelated APIs:
* XMC_BCCU_DisableInterrupt()\n\n\n */ __STATIC_INLINE void XMC_BCCU_EnableInterrupt (XMC_BCCU_t *const bccu, uint32_t event) { bccu->EVIER |= event; } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param event Event mask to disable multiple events at a time using ORed values of @ref XMC_BCCU_EVENT_t.\n * For example: If XMC_BCCU_EVENT_TRIGGER0, XMC_BCCU_EVENT_TRIGGER1, XMC_BCCU_EVENT_FIFOEMPTY wants to disable\n * at a same time, then event mask is = (XMC_BCCU_EVENT_TRIGGER0 | XMC_BCCU_EVENT_TRIGGER1 | * XMC_BCCU_EVENT_FIFOEMPTY) \n * * @return None * * \parDescription:
* Disables multiple interrupt events at a same time using ORed values of @ref XMC_BCCU_EVENT_t by writing a register EVIER.\n\n * * \parRelated APIs:
* XMC_BCCU_EnableInterrupt()\n\n\n */ __STATIC_INLINE void XMC_BCCU_DisableInterrupt (XMC_BCCU_t *const bccu, uint32_t event) { bccu->EVIER &= (uint32_t)~(event); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * * @return Interrupt events flags at a same time using ORed values of @ref XMC_BCCU_EVENT_t. * \parDescription:
* Retrieves interrupt event flags at the same time using ORed values of @ref XMC_BCCU_EVENT_t by reading the register \n * EVFR. \n\n * * \parRelated APIs:
* XMC_BCCU_SetEventFlag()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_ReadEventFlag (XMC_BCCU_t *const bccu) { return (bccu->EVFR); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param flag_type Event flag mask to configure multiple events at a time using ORed values of @ref * XMC_BCCU_EVENT_STATUS_t.\n * For example: If XMC_BCCU_EVENT_STATUS_TRIGGER0, XMC_BCCU_EVENT_STATUS_TRIGGER1, XMC_BCCU_EVENT_STATUS_FIFOEMPTY * wants to configure at a same time, then event mask is = (XMC_BCCU_EVENT_STATUS_TRIGGER0 | XMC_BCCU_EVENT_STATUS_TRIGGER1 | * XMC_BCCU_EVENT_STATUS_FIFOEMPTY) \n * * @return None * * \parDescription:
* Configures multiple interrupt event flags at a same time using ORed values of @ref XMC_BCCU_EVENT_STATUS_t by writing a register EVFSR.\n\n * * \parRelated APIs:
* XMC_BCCU_ClearEventFlag(), XMC_BCCU_ReadEventFlag()\n\n\n */ __STATIC_INLINE void XMC_BCCU_SetEventFlag (XMC_BCCU_t *const bccu, uint32_t flag_type) { bccu->EVFSR = flag_type; } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param flag_type event flag mask to clear multiple events at a time using ORed values of @ref * XMC_BCCU_EVENT_STATUS_t.\n * For example: If XMC_BCCU_EVENT_STATUS_TRIGGER0, XMC_BCCU_EVENT_STATUS_TRIGGER1, XMC_BCCU_EVENT_STATUS_FIFOEMPTY * wants to clear at a same time, then event mask is = (XMC_BCCU_EVENT_STATUS_TRIGGER0 | XMC_BCCU_EVENT_STATUS_TRIGGER1 | * XMC_BCCU_EVENT_STATUS_FIFOEMPTY) \n * * @return None * * \parDescription:
* Clears multiple interrupt event flags at a same time using ORed values of @ref XMC_BCCU_EVENT_STATUS_t by writing a * register EVFSR.\n\n * * \parRelated APIs:
* XMC_BCCU_SetEventFlag()\n\n\n */ __STATIC_INLINE void XMC_BCCU_ClearEventFlag (XMC_BCCU_t *const bccu, uint32_t flag_type) { bccu->EVFCR = flag_type; } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Specific channel number to enable. \b Range: 0 to 8\n * * @return None * * \parDescription:
* Enables a specific channel number using \a chan_no by writing a register CHEN.\n\n * * \parRelated APIs:
* XMC_BCCU_ConcurrentEnableChannels(), XMC_BCCU_DisableChannel()\n\n\n */ void XMC_BCCU_EnableChannel (XMC_BCCU_t *const bccu, uint32_t chan_no); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Specific channel number to disable. \b Range: 0 to 8\n * * @return None * * \parDescription:
* Disables a specific channel number using \a chan_no by writing a register CHEN.\n\n * * \parRelated APIs:
* XMC_BCCU_ConcurrentDisableChannels(), XMC_BCCU_EnableChannel()\n\n\n */ void XMC_BCCU_DisableChannel (XMC_BCCU_t *const bccu, uint32_t chan_no); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Specific channel number to enable specific channel. \b Range: 0 to 8\n * @param level Passive level selection. Use type @ref XMC_BCCU_CH_ACTIVE_LEVEL_t.\n * \b Range: XMC_BCCU_CH_ACTIVE_LEVEL_HIGH or XMC_BCCU_CH_ACTIVE_LEVEL_LOW * * @return None * * \parDescription:
* Configures passive level of specific channel using \a chan_no by writing a register bit CHOCON_CHyOP.\n\n * * \parRelated APIs:
* XMC_BCCU_ConcurrentSetOutputPassiveLevel()\n\n\n */ void XMC_BCCU_SetOutputPassiveLevel(XMC_BCCU_t *const bccu, uint32_t chan_no, XMC_BCCU_CH_ACTIVE_LEVEL_t level); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Channel number to enable specific channel trap functionality. \b Range: 0 to 8 * * @return None * * \parDescription:
* Enables specific channel trap functionality using \a chan_no by writing a register bit CHOCON_CHyTPE.\n\n * * \parRelated APIs:
* XMC_BCCU_DisableTrap(), XMC_BCCU_ConcurrentEnableTrap(), XMC_BCCU_SelectTrapInput(), XMC_BCCU_SetTrapEdge()\n\n\n */ void XMC_BCCU_EnableTrap (XMC_BCCU_t *const bccu, uint32_t chan_no); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Channel number to disable specific channel trap functionality. \b Range: 0 to 8 * * @return None * * \parDescription:
* Disables specific channel trap functionality using \a chan_no by writing a register bit CHOCON_CHyTPE.\n\n * * \parRelated APIs:
* XMC_BCCU_EnableTrap(), XMC_BCCU_ConcurrentDisableTrap()\n\n\n */ void XMC_BCCU_DisableTrap (XMC_BCCU_t *const bccu, uint32_t chan_no); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Channel number to trigger a specific channel. \b Range: 0 to 8 * @param trig_line Trigger line number to trigger a vadc. Use type @ref XMC_BCCU_CH_TRIGOUT_t.\n * \b Range: XMC_BCCU_CH_TRIGOUT0 or XMC_BCCU_CH_TRIGOUT1 * * @return None * * \parDescription:
* Enables specific channel trigger using \a chan_no by writing a register bit CHOCON_CHyTPE.\n\n * * \parRelated APIs:
* XMC_BCCU_ConfigGlobalTrigger(), XMC_BCCU_DisableChannelTrigger(), XMC_BCCU_CH_ConfigTrigger()\n\n\n */ void XMC_BCCU_EnableChannelTrigger (XMC_BCCU_t *const bccu, uint32_t chan_no, XMC_BCCU_CH_TRIGOUT_t trig_line); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Channel number to trigger a specific channel. \b Range: 0 to 8 * * @return None * * \parDescription:
* Disables specific channel trigger using \a chan_no by writing a register bit CHOCON_CHyTPE.\n\n * * \parRelated APIs:
* XMC_BCCU_EnableChannelTrigger()\n\n\n */ void XMC_BCCU_DisableChannelTrigger (XMC_BCCU_t *const bccu, uint32_t chan_no); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param config Pointer to constant bccu channel configuration data structure. Use type @ref XMC_BCCU_CH_CONFIG_t. * * @return None * * \parDescription:
* Configures dimming engine source, dimming bypass selection, channel trigger edge, flicker watchdog selection and force * trigger selection by using \a dim_sel, \a dim_bypass, \a trig_edge, \a flick_wd_en, \a force_trig_en by writing into a * CHCONFIG register. And also configures packer settings: threshold, off and on compare levels, initial values of off & on * counters, by writing into a CHCONFIG, PKCMP and PKCNTR registers.\n\n * * \parRelated APIs:
* XMC_BCCU_GlobalInit(), XMC_BCCU_DIM_Init()\n\n\n */ void XMC_BCCU_CH_Init (XMC_BCCU_CH_t *const channel, const XMC_BCCU_CH_CONFIG_t *const config); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param edge Output transition selection. Use type @ref XMC_BCCU_CH_TRIG_EDGE_t. \n * \b Range: XMC_BCCU_CH_TRIG_EDGE_PASS_TO_ACT or XMC_BCCU_CH_TRIG_EDGE_ACT_TO_PASS\n * @param force_trig_en Forcing a trigger at output. \b Range: 0 or 1\n * Generates a trigger if modulator output do not change for 256 bclk cycles\n * * @return None * * \parDescription:
* Configures global trigger settings: trigger edge, force trigger enable by writing a register CHCONFIG. * And also configures force trigger enable, generates a trigger if modulator output do not change for 256 bclk cycles * * \parRelated APIs:
* XMC_BCCU_ConfigGlobalTrigger(), XMC_BCCU_EnableChannelTrigger()\n\n\n */ void XMC_BCCU_CH_ConfigTrigger (XMC_BCCU_CH_t *const channel, XMC_BCCU_CH_TRIG_EDGE_t edge, uint32_t force_trig_en); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Specific channel number to start color change \b Range: 0 to 8\n * * @return None * * \parDescription:
* After channel initialization, the outcome of executing the API starts changing the color smoothly towards to target * by writing a register bit CHSTRCON_CHyS.\n\n * * \parRelated APIs:
* XMC_BCCU_AbortLinearWalk(), XMC_BCCU_CH_SetTargetIntensity(), XMC_BCCU_IsLinearWalkComplete(), * XMC_BCCU_ConcurrentStartLinearWalk()\n\n\n */ __STATIC_INLINE void XMC_BCCU_StartLinearWalk (XMC_BCCU_t *const bccu, uint32_t chan_no) { bccu->CHSTRCON |= (uint32_t)(BCCU_CHSTRCON_CH0S_Msk << chan_no); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Specific channel number to stop color change \b Range: 0 to 8\n * * @return None * * \parDescription:
* When the linear walk in progress, the outcome of executing the API is stopping the linear walk (i.e. color change) * immediately for specific channels number using \a mask by writing a register CHSTRCON_CHyA.\n\n * * \parRelated APIs:
* XMC_BCCU_StartLinearWalk(), XMC_BCCU_ConcurrentAbortLinearWalk()\n\n\n */ __STATIC_INLINE void XMC_BCCU_AbortLinearWalk (XMC_BCCU_t *const bccu, uint32_t chan_no) { bccu->CHSTRCON |= (uint32_t)(BCCU_CHSTRCON_CH0A_Msk << chan_no); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Specific channel number to get an output level on last trigger. \b Range: 0 to 8\n * * @return Trap channel output level. \b Range: 0 or 1 * \parDescription:
* Retrieves output level of specific channel number when last trigger occurred by reading the register bit LTCHOL_LTOLy. \n\n * * \parRelated APIs:
* XMC_BCCU_ReadLastTrigChanNr(), XMC_BCCU_ConfigGlobalTrigger(), XMC_BCCU_ConcurrentConfigTrigger(), * XMC_BCCU_ReadGlobalTrigger(), XMC_BCCU_GlobalInit()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_GetChannelOutputLvlAtLastTrigger (XMC_BCCU_t *const bccu, uint32_t chan_no) { return (uint32_t)((bccu->LTCHOL & (BCCU_LTCHOL_LTOL0_Msk << chan_no)) >> chan_no); } /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param clk_div Prescaler factor. \b Range: 0 to 1023 * * @return None * * \parDescription:
* configure the linear walker clock prescaler factor by writing register bit CHCONFIG_LINPRES.\n\n * */ void XMC_BCCU_CH_SetLinearWalkPrescaler (XMC_BCCU_CH_t *const channel, uint32_t clk_div); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param chan_no Channel number to know the linear walk completion status. \b Range: 0 to 8\n * * @return Linear walk completion status. \b Range: 0-Completed or 1-intensity start changing towards the target * \parDescription:
* Retrieves linear walk completion status for specific channel using \a chan_no by reading the register bit CHSTRCON_CHyS. \n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetTargetIntensity(), XMC_BCCU_StartLinearWalk()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_IsLinearWalkComplete (XMC_BCCU_t *const bccu, uint32_t chan_no) { return (uint32_t)((bccu->CHSTRCON & (BCCU_CHSTRCON_CH0S_Msk << chan_no)) >> chan_no); } /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param ch_int Target channel intensity. \b Range: 0 to 4095 * * @return None * * \parDescription:
* Configures target channel intensity by writing register INTS, only be written if no shadow transfer of linear walk. * Use XMC_BCCU_IsLinearWalkComplete() to know shadow transfer finished \n\n * * \parRelated APIs:
* XMC_BCCU_IsLinearWalkComplete(), XMC_BCCU_StartLinearWalk(), XMC_BCCU_CH_ReadIntensity()\n\n\n */ void XMC_BCCU_CH_SetTargetIntensity (XMC_BCCU_CH_t *const channel, uint32_t ch_int); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return Current channel intensity. \b Range: 0 or 4095 * \parDescription:
* Retrieves current channel intensity by reading the register INT.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetTargetIntensity()\n\n\n */ uint32_t XMC_BCCU_CH_ReadIntensity (XMC_BCCU_CH_t *const channel); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param thresh Packer threshold value of FIFO. It defines number of queue stages must be filled before output generator * starts generating the pulses. Until that, only off-bits are generated at the output.\n * @param off_comp Packer off-time compare level. When the off-time counter reaches this, the measured on off time * counters are stored into FIFO * @param on_comp Packer on-time compare level. When the on-time counter reaches this, the measured on & off time * counters are stored into FIFO * * @return None * * \parDescription:
* Enables packer by writing register bit CHCONFIG_PEN. And also configures packer threshold, off and on compare levels * by writing register PKCMP. The main purpose of the packer is to decrease the average rate of switching of the output * signal, to decrease the load on external switching circuits and improve EMC behavior\n\n * * \parRelated APIs:
* XMC_BCCU_CH_DisablePacker(), XMC_BCCU_CH_SetPackerThreshold(), XMC_BCCU_CH_SetPackerOffCompare(), XMC_BCCU_CH_SetPackerOnCompare\n\n\n */ void XMC_BCCU_CH_EnablePacker (XMC_BCCU_CH_t *const channel, uint32_t thresh, uint32_t off_comp, uint32_t on_comp); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param val Packer threshold value of FIFO * * @return None * * \parDescription:
* Configures packer threshold by writing register bit CHCONFIG_PKTH\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetPackerOffCompare(), XMC_BCCU_CH_SetPackerOnCompare, XMC_BCCU_CH_ReadPackerThreshold()\n\n\n */ void XMC_BCCU_CH_SetPackerThreshold (XMC_BCCU_CH_t *const channel, uint32_t val); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param level Packer off-time compare level. When the off-time counter reaches this, the measured on & off time counters * are stored into FIFO * * @return None * * \parDescription:
* Configures packer off compare level by writing register bit PKCMP_OFFCMP\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetPackerThreshold(), XMC_BCCU_CH_SetPackerOnCompare(), XMC_BCCU_CH_SetPackerOffCounter(), * XMC_BCCU_CH_ReadPackerOffCompare()\n\n\n */ void XMC_BCCU_CH_SetPackerOffCompare (XMC_BCCU_CH_t *const channel, uint32_t level); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param level Packer on-time compare level. When the on-time counter reaches this, the measured on & off time counters * are stored into FIFO * * @return None * * \parDescription:
* Configures packer on compare level by writing register bit PKCMP_ONCMP\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetPackerThreshold(), XMC_BCCU_CH_SetPackerOffCompare(), XMC_BCCU_CH_SetPackerOnCounter(), * XMC_BCCU_CH_ReadPackerOnCompare()\n\n\n */ void XMC_BCCU_CH_SetPackerOnCompare (XMC_BCCU_CH_t *const channel, uint32_t level); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return Packer threshold value of FIFO * \parDescription:
* Retrieves packer threshold value by reading the register bit CHCONFIG_PKTH.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetPackerThreshold()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_CH_ReadPackerThreshold (XMC_BCCU_CH_t *const channel) { return (uint32_t)((channel->CHCONFIG) & BCCU_CH_CHCONFIG_PKTH_Msk); } /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return Packer off-time compare level. When the off-time counter reaches this, the measured on & off time counters * are stored into FIFO * \parDescription:
* Retrieves packer off compare level by reading the register bit PKCMP_OFFCMP.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetPackerOffCompare()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_CH_ReadPackerOffCompare (XMC_BCCU_CH_t *const channel) { return (uint32_t)((channel->PKCMP) & BCCU_CH_PKCMP_OFFCMP_Msk); } /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return Packer on-time compare level. When the on-time counter reaches this,
* the measured on & off time counters are stored into FIFO * \parDescription:
* Retrieves packer on compare level by reading the register bit PKCMP_ONCMP.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetPackerOnCompare()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_CH_ReadPackerOnCompare (XMC_BCCU_CH_t *const channel) { return (uint32_t)(((channel->PKCMP) & BCCU_CH_PKCMP_ONCMP_Msk) >> BCCU_CH_PKCMP_ONCMP_Pos); } /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return None * * \parDescription:
* Disables packer by clearing writing register bit CHCONFIG_PEN. \n\n * * \parRelated APIs:
* XMC_BCCU_CH_EnablePacker()\n\n\n */ void XMC_BCCU_CH_DisablePacker (XMC_BCCU_CH_t *const channel); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param cnt_val Configures an initial packer off-time counter level, only if channel is disabled. Controls phase * shift of the modulator output * * @return None * * \parDescription:
* Configures packer initial off counter value by writing register bit PKCNTR_OFFCNTVAL\n * Note: Shall only be called if channel disabled.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetPackerOnCounter(), XMC_BCCU_CH_SetPackerOffCompare()\n\n\n */ void XMC_BCCU_CH_SetPackerOffCounter (XMC_BCCU_CH_t *const channel, uint32_t cnt_val); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param cnt_val Configures an initial packer on-time counter level, only if channel is disabled. Controls phase shift * of the modulator output * * @return None * * \parDescription:
* Configures packer initial on counter value by writing register bit PKCNTR_ONCNTVAL\n * Note: Shall only be called if channel disabled.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_SetPackerOffCounter(), XMC_BCCU_CH_SetPackerOnCompare()\n\n\n */ void XMC_BCCU_CH_SetPackerOnCounter (XMC_BCCU_CH_t *const channel, uint32_t cnt_val); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * @param sel Selects a dimming engine source of the channel. Use type @ref XMC_BCCU_CH_DIMMING_SOURCE_t * * @return None * * \parDescription:
* Configures dimming engine source by writing register bit CHCONFIG_DSEL\n\n * * \parRelated APIs:
* XMC_BCCU_CH_EnableDimmingBypass()\n\n\n */ void XMC_BCCU_CH_SelectDimEngine (XMC_BCCU_CH_t *const channel, XMC_BCCU_CH_DIMMING_SOURCE_t sel); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return None * * \parDescription:
* Enables dimming engine bypass by writing register bit CHCONFIG_DBP. \n\n * * \parRelated APIs:
* XMC_BCCU_CH_SelectDimEngine(), XMC_BCCU_CH_DisableDimmingBypass()\n\n\n */ void XMC_BCCU_CH_EnableDimmingBypass (XMC_BCCU_CH_t *const channel); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return None * * \parDescription:
* Disables dimming engine bypass by clearing register bit CHCONFIG_DBP. \n\n * * \parRelated APIs:
* XMC_BCCU_CH_EnableDimmingBypass()\n\n\n */ void XMC_BCCU_CH_DisableDimmingBypass (XMC_BCCU_CH_t *const channel); /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return None * * \parDescription:
* Enables gating feature by writing register bit CHCONFIG_GEN. The gating feature is used to enable fast control schemes, * such as peak-current control and this has been controlled by Analog Comparator module.\n\n * * \parRelated APIs:
* XMC_BCCU_CH_DisableGating()\n\n\n */ __STATIC_INLINE void XMC_BCCU_CH_EnableGating (XMC_BCCU_CH_t *const channel) { channel->CHCONFIG |= (uint32_t)(BCCU_CH_CHCONFIG_GEN_Msk); } /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return None * * \parDescription:
* Disables gating feature by writing register bit CHCONFIG_GEN. The gating feature is used to enable/disable fast control * schemes, such as peak-current control and this has been controlled by Analog Comparator module. \n\n * * \parRelated APIs:
* XMC_BCCU_CH_EnableGating()\n\n\n */ __STATIC_INLINE void XMC_BCCU_CH_DisableGating (XMC_BCCU_CH_t *const channel) { channel->CHCONFIG &= ~(uint32_t)(BCCU_CH_CHCONFIG_GEN_Msk); } /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return None * * \parDescription:
* Enables flicker watchdog by writing register bit CHCONFIG_WEN. And limits the sigma-delta modulator output\n * according to Watchdog threshold\n\n * * \parRelated APIs:
* XMC_BCCU_SetFlickerWDThreshold(), XMC_BCCU_ReadFlickerWDThreshold(), XMC_BCCU_CH_Init(), * XMC_BCCU_CH_DisableFlickerWatchdog()\n\n\n */ __STATIC_INLINE void XMC_BCCU_CH_EnableFlickerWatchdog (XMC_BCCU_CH_t *const channel) { channel->CHCONFIG |= (uint32_t)(BCCU_CH_CHCONFIG_WEN_Msk); } /** * * @param channel Base address of the bccu channel. \b Range: BCCU0_CH0, BCCU0_CH1.. * * @return None * * \parDescription:
* Disables flicker watchdog by writing register bit CHCONFIG_WEN. No limits the sigma-delta modulator output * according to Watchdog threshold\n\n * * \parRelated APIs:
* XMC_BCCU_SetFlickerWDThreshold(), XMC_BCCU_ReadFlickerWDThreshold(), XMC_BCCU_CH_Init(), * XMC_BCCU_CH_EnableFlickerWatchdog()\n\n\n */ __STATIC_INLINE void XMC_BCCU_CH_DisableFlickerWatchdog (XMC_BCCU_CH_t *const channel) { channel->CHCONFIG &= ~(uint32_t)(BCCU_CH_CHCONFIG_WEN_Msk); } /** * * @param dim_engine Base address of the bccu dimming engine. \b Range: BCCU0_DE0, BCCU0_DE1, BCCU0_DE2 * @param config Pointer to constant dimming engine configuration data structure. Use type @ref XMC_BCCU_DIM_CONFIG_t. * * @return None * * \parDescription:
* Configures dimming clock divider to adjust the fade rate, dither selection and exponential curve selection using \a * dim_div, \a dither_en, \a cur_sel parameters and by writing into a DTT register.\n\n * * \parRelated APIs:
* XMC_BCCU_GlobalInit(), XMC_BCCU_CH_Init()\n\n\n */ void XMC_BCCU_DIM_Init (XMC_BCCU_DIM_t *const dim_engine, const XMC_BCCU_DIM_CONFIG_t *const config); /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param dim_no Specific dimming engine number to enable. \b Range: 0 to 2\n * * @return None * * \parDescription:
* Enables a specific dimming engine number using \a dim_no by writing a register bit DEEN_EDEy.\n\n * * \parRelated APIs:
* XMC_BCCU_DisableDimmingEngine(), XMC_BCCU_ConcurrentEnableDimmingEngine()\n\n\n */ __STATIC_INLINE void XMC_BCCU_EnableDimmingEngine (XMC_BCCU_t *const bccu, uint32_t dim_no) { bccu->DEEN |= (uint32_t)(BCCU_DEEN_EDE0_Msk << dim_no); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param dim_no Specific dimming engine number to disable. \b Range: 0 to 2\n * * @return None * * \parDescription:
* Disables a specific dimming engine number using \a dim_no by clearing a register bit DEEN_EDEy.\n\n * * \parRelated APIs:
* XMC_BCCU_EnableDimmingEngine(), XMC_BCCU_ConcurrentDisableDimmingEngine()\n\n\n */ __STATIC_INLINE void XMC_BCCU_DisableDimmingEngine (XMC_BCCU_t *const bccu, uint32_t dim_no) { bccu->DEEN &= ~(uint32_t)(BCCU_DEEN_EDE0_Msk << dim_no); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param dim_no Specific dimming engine number to start dimming process \b Range: 0 to 2\n * * @return None * * \parDescription:
* After dimming engine initialization, the outcome of executing the API starts changing the brightness towards to target * by writing a register bit DESTRCON_DEyS.\n\n * * \parRelated APIs:
* XMC_BCCU_AbortDimming(), XMC_BCCU_ConcurrentStartDimming()\n\n\n */ __STATIC_INLINE void XMC_BCCU_StartDimming (XMC_BCCU_t *const bccu, uint32_t dim_no) { bccu->DESTRCON = (uint32_t)(BCCU_DESTRCON_DE0S_Msk << dim_no); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param dim_no Specific dimming engine number to stop dimming process \b Range: 0 to 2\n * * @return None * * \parDescription:
* When the dimming in progress, the outcome of executing the API is stopping the dimming (i.e. fading) * immediately for specific dimming engine number \a dim_no by writing a register bit DESTRCON_DEyA.\n\n * * \parRelated APIs:
* XMC_BCCU_StartDimming(), XMC_BCCU_ConcurrentAbortDimming()\n\n\n */ __STATIC_INLINE void XMC_BCCU_AbortDimming (XMC_BCCU_t *const bccu, uint32_t dim_no) { bccu->DESTRCON = (uint32_t)(BCCU_DESTRCON_DE0A_Msk << dim_no); } /** * * @param bccu Base address of the bccu module. \b Range: BCCU0 * @param dim_no Specific dimming engine number to know the dimming status. \b Range: 0 to 2\n * * @return Dimming completion status. \b Range: 0-Completed or 1-start change towards the target * \parDescription:
* Retrieves dimming completion status for specific dimming engine number using \a dim_no by reading the register bit * DESTRCON_DEyS. \n\n * * \parRelated APIs:
* XMC_BCCU_DIM_SetTargetDimmingLevel(), XMC_BCCU_StartDimming()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_IsDimmingFinished (XMC_BCCU_t *const bccu, uint32_t dim_no) { return (uint32_t)((bccu->DESTRCON & (BCCU_DESTRCON_DE0S_Msk << dim_no)) >> dim_no); } /** * * @param dim_engine Base address of the bccu dimming engine. \b Range: BCCU0_DE0, BCCU0_DE1, BCCU0_DE2 * @param level Target dimming level. \b Range: 0 to 4095 * * @return None * * \parDescription:
* Configures target dimming level by writing register DLS, only be written if no shadow transfer of dimming. * Use XMC_BCCU_IsDimmingFinished() to know shadow transfer finished \n\n * * \parRelated APIs:
* XMC_BCCU_StartDimming(), XMC_BCCU_IsDimmingFinished(), XMC_BCCU_SetGlobalDimmingLevel(), \n * XMC_BCCU_DIM_ReadDimmingLevel()\n\n\n */ void XMC_BCCU_DIM_SetTargetDimmingLevel (XMC_BCCU_DIM_t *const dim_engine, uint32_t level); /** * * @param dim_engine Base address of the bccu dimming engine. \b Range: BCCU0_DE0, BCCU0_DE1, BCCU0_DE2 * * @return Current dimming level. \b Range: 0 or 4095 * \parDescription:
* Retrieves current dimming level by reading the register DE_DL_DLEV.\n\n * * \parRelated APIs:
* XMC_BCCU_DIM_SetTargetDimmingLevel()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_DIM_ReadDimmingLevel (XMC_BCCU_DIM_t *const dim_engine) { return (uint32_t)(dim_engine->DL & BCCU_DE_DL_DLEV_Msk); } /** * * @param dim_engine Base address of the bccu dimming engine. \b Range: BCCU0_DE0, BCCU0_DE1, BCCU0_DE2 * @param div Dimming clock divider, used to adjust the fade rate. If 0, the dimming level as same as target dimming level on shadow transfer\n * * @return None * * \parDescription:
* Configures dimming clock divider by writing register bit DE_DTT_DIMDIV.\n\n * * \parRelated APIs:
* XMC_BCCU_SetDimClockPrescaler(), XMC_BCCU_DIM_ReadDimDivider()\n\n\n */ void XMC_BCCU_DIM_SetDimDivider (XMC_BCCU_DIM_t *const dim_engine, uint32_t div); /** * * @param dim_engine Base address of the bccu dimming engine. \b Range: BCCU0_DE0, BCCU0_DE1, BCCU0_DE2 * * @return Dimming clock divider value. \b Range: 0 to 1023 * \parDescription:
* Retrieves dimming clock divider value by reading the register BCCU_DE_DTT_DIMDIV.\n\n * * \parRelated APIs:
* XMC_BCCU_DIM_SetDimDivider()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_DIM_ReadDimDivider(XMC_BCCU_DIM_t *const dim_engine) { return (uint32_t)(dim_engine->DTT & BCCU_DE_DTT_DIMDIV_Msk); } /** * * @param dim_engine Base address of the bccu dimming engine. \b Range: BCCU0_DE0, BCCU0_DE1, BCCU0_DE2 * @param dither_en Dither enable. Dithering added for every dimming step if dimming level < 128.
* @param sel Type of exponential curve. Use type @ref XMC_BCCU_DIM_CURVE_t. Note: If dither enabled, the configuration is being ignored\n * * @return None * * \parDescription:
* Configures dimming clock curve by writing register bit DE_DTT_CSEL.\n\n * * \parRelated APIs:
* XMC_BCCU_DIM_Init()\n\n\n */ void XMC_BCCU_DIM_ConfigDimCurve (XMC_BCCU_DIM_t *const dim_engine, uint32_t dither_en, XMC_BCCU_DIM_CURVE_t sel); /** * * @param dim_engine Base address of the bccu dimming engine. \b Range: BCCU0_DE0, BCCU0_DE1, BCCU0_DE2 * * @return Type of exponential curve \b Range: XMC_BCCU_DIM_CURVE_COARSE or XMC_BCCU_DIM_CURVE_FINE * \parDescription:
* Retrieves exponential curve type by reading the register bit BCCU_DE_DTT_CSEL. \n\n * * \parRelated APIs:
* XMC_BCCU_DIM_ConfigDimCurve(), XMC_BCCU_IsDitherEnable()\n\n\n */ __STATIC_INLINE XMC_BCCU_DIM_CURVE_t XMC_BCCU_DIM_GetDimCurve (XMC_BCCU_DIM_t *const dim_engine) { return (XMC_BCCU_DIM_CURVE_t)((dim_engine->DTT & BCCU_DE_DTT_CSEL_Msk) >> BCCU_DE_DTT_CSEL_Pos); } /** * * @param dim_engine Base address of the bccu dimming engine. \b Range: BCCU0_DE0, BCCU0_DE1, BCCU0_DE2 * * @return Dither enable status. \b Range: 1-Enabled or 0-Disabled * \parDescription:
* Retrieves dither enable status by reading the register bit BCCU_DE_DTT_DTEN. \n\n * * \parRelated APIs:
* XMC_BCCU_DIM_ConfigDimCurve(), XMC_BCCU_DIM_GetDimCurve()\n\n\n */ __STATIC_INLINE uint32_t XMC_BCCU_IsDitherEnable(XMC_BCCU_DIM_t *const dim_engine) { return (uint32_t)((dim_engine->DTT & BCCU_DE_DTT_DTEN_Msk) >> BCCU_DE_DTT_DTEN_Pos); } /** * @} */ /** * @} */ #ifdef __cplusplus } #endif #endif /* BCCU0 */ #endif /* XMC_BCCU_H */