1 /* 2 * Copyright (c) 2024 Microchip Technology Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef _MEC5_BBLED_V1_H 7 #define _MEC5_BBLED_V1_H 8 9 /** @addtogroup Device_Peripheral_peripherals 10 * @{ 11 */ 12 13 /** 14 * @brief Breathing-blinking LED controller (MEC_BBLED) 15 */ 16 17 typedef struct mec_bbled_regs { /*!< (@ 0x4000B800) MEC_LED0 Structure */ 18 __IOM uint32_t CONFIG; /*!< (@ 0x00000000) LED config */ 19 __IOM uint32_t LIMITS; /*!< (@ 0x00000004) LED limits */ 20 __IOM uint32_t DELAY; /*!< (@ 0x00000008) LED delay */ 21 __IOM uint32_t UPDSS; /*!< (@ 0x0000000C) LED update step size */ 22 __IOM uint32_t UPINVL; /*!< (@ 0x00000010) LED update interval */ 23 __IOM uint32_t OUTDLY; /*!< (@ 0x00000014) LED output delay */ 24 } MEC_BBLED_Type; /*!< Size = 24 (0x18) */ 25 /** @} */ /* End of group Device_Peripheral_peripherals */ 26 27 /** @addtogroup PosMask_peripherals 28 * @{ 29 */ 30 /* ======================================================== CONFIG ========================================================= */ 31 #define MEC_BBLED_CONFIG_CTRL_Pos (0UL) /*!< CTRL (Bit 0) */ 32 #define MEC_BBLED_CONFIG_CTRL_Msk (0x3UL) /*!< CTRL (Bitfield-Mask: 0x03) */ 33 #define MEC_BBLED_CONFIG_CLKSRC_Pos (2UL) /*!< CLKSRC (Bit 2) */ 34 #define MEC_BBLED_CONFIG_CLKSRC_Msk (0x4UL) /*!< CLKSRC (Bitfield-Mask: 0x01) */ 35 #define MEC_BBLED_CONFIG_SYNC_Pos (3UL) /*!< SYNC (Bit 3) */ 36 #define MEC_BBLED_CONFIG_SYNC_Msk (0x8UL) /*!< SYNC (Bitfield-Mask: 0x01) */ 37 #define MEC_BBLED_CONFIG_PWM_SZ_Pos (4UL) /*!< PWM_SZ (Bit 4) */ 38 #define MEC_BBLED_CONFIG_PWM_SZ_Msk (0x30UL) /*!< PWM_SZ (Bitfield-Mask: 0x03) */ 39 #define MEC_BBLED_CONFIG_UPDATE_Pos (6UL) /*!< UPDATE (Bit 6) */ 40 #define MEC_BBLED_CONFIG_UPDATE_Msk (0x40UL) /*!< UPDATE (Bitfield-Mask: 0x01) */ 41 #define MEC_BBLED_CONFIG_SRST_Pos (7UL) /*!< SRST (Bit 7) */ 42 #define MEC_BBLED_CONFIG_SRST_Msk (0x80UL) /*!< SRST (Bitfield-Mask: 0x01) */ 43 #define MEC_BBLED_CONFIG_WDTRLD_Pos (8UL) /*!< WDTRLD (Bit 8) */ 44 #define MEC_BBLED_CONFIG_WDTRLD_Msk (0xff00UL) /*!< WDTRLD (Bitfield-Mask: 0xff) */ 45 #define MEC_BBLED_CONFIG_ASYM_Pos (16UL) /*!< ASYM (Bit 16) */ 46 #define MEC_BBLED_CONFIG_ASYM_Msk (0x10000UL) /*!< ASYM (Bitfield-Mask: 0x01) */ 47 /* ======================================================== LIMITS ========================================================= */ 48 #define MEC_BBLED_LIMITS_MIN_Pos (0UL) /*!< MIN (Bit 0) */ 49 #define MEC_BBLED_LIMITS_MIN_Msk (0xffUL) /*!< MIN (Bitfield-Mask: 0xff) */ 50 #define MEC_BBLED_LIMITS_MAX_Pos (8UL) /*!< MAX (Bit 8) */ 51 #define MEC_BBLED_LIMITS_MAX_Msk (0xff00UL) /*!< MAX (Bitfield-Mask: 0xff) */ 52 /* ========================================================= DELAY ========================================================= */ 53 #define MEC_BBLED_DELAY_LO_Pos (0UL) /*!< LO (Bit 0) */ 54 #define MEC_BBLED_DELAY_LO_Msk (0xfffUL) /*!< LO (Bitfield-Mask: 0xfff) */ 55 #define MEC_BBLED_DELAY_HI_Pos (12UL) /*!< HI (Bit 12) */ 56 #define MEC_BBLED_DELAY_HI_Msk (0xfff000UL) /*!< HI (Bitfield-Mask: 0xfff) */ 57 /* ========================================================= UPDSS ========================================================= */ 58 #define MEC_BBLED_UPDSS_STEP0_Pos (0UL) /*!< STEP0 (Bit 0) */ 59 #define MEC_BBLED_UPDSS_STEP0_Msk (0xfUL) /*!< STEP0 (Bitfield-Mask: 0x0f) */ 60 #define MEC_BBLED_UPDSS_STEP1_Pos (4UL) /*!< STEP1 (Bit 4) */ 61 #define MEC_BBLED_UPDSS_STEP1_Msk (0xf0UL) /*!< STEP1 (Bitfield-Mask: 0x0f) */ 62 #define MEC_BBLED_UPDSS_STEP2_Pos (8UL) /*!< STEP2 (Bit 8) */ 63 #define MEC_BBLED_UPDSS_STEP2_Msk (0xf00UL) /*!< STEP2 (Bitfield-Mask: 0x0f) */ 64 #define MEC_BBLED_UPDSS_STEP3_Pos (12UL) /*!< STEP3 (Bit 12) */ 65 #define MEC_BBLED_UPDSS_STEP3_Msk (0xf000UL) /*!< STEP3 (Bitfield-Mask: 0x0f) */ 66 #define MEC_BBLED_UPDSS_STEP4_Pos (16UL) /*!< STEP4 (Bit 16) */ 67 #define MEC_BBLED_UPDSS_STEP4_Msk (0xf0000UL) /*!< STEP4 (Bitfield-Mask: 0x0f) */ 68 #define MEC_BBLED_UPDSS_STEP5_Pos (20UL) /*!< STEP5 (Bit 20) */ 69 #define MEC_BBLED_UPDSS_STEP5_Msk (0xf00000UL) /*!< STEP5 (Bitfield-Mask: 0x0f) */ 70 #define MEC_BBLED_UPDSS_STEP6_Pos (24UL) /*!< STEP6 (Bit 24) */ 71 #define MEC_BBLED_UPDSS_STEP6_Msk (0xf000000UL) /*!< STEP6 (Bitfield-Mask: 0x0f) */ 72 #define MEC_BBLED_UPDSS_STEP7_Pos (28UL) /*!< STEP7 (Bit 28) */ 73 #define MEC_BBLED_UPDSS_STEP7_Msk (0xf0000000UL) /*!< STEP7 (Bitfield-Mask: 0x0f) */ 74 /* ======================================================== UPINVL ========================================================= */ 75 #define MEC_BBLED_UPINVL_INTRV0_Pos (0UL) /*!< INTRV0 (Bit 0) */ 76 #define MEC_BBLED_UPINVL_INTRV0_Msk (0xfUL) /*!< INTRV0 (Bitfield-Mask: 0x0f) */ 77 #define MEC_BBLED_UPINVL_INTRV1_Pos (4UL) /*!< INTRV1 (Bit 4) */ 78 #define MEC_BBLED_UPINVL_INTRV1_Msk (0xf0UL) /*!< INTRV1 (Bitfield-Mask: 0x0f) */ 79 #define MEC_BBLED_UPINVL_INTRV2_Pos (8UL) /*!< INTRV2 (Bit 8) */ 80 #define MEC_BBLED_UPINVL_INTRV2_Msk (0xf00UL) /*!< INTRV2 (Bitfield-Mask: 0x0f) */ 81 #define MEC_BBLED_UPINVL_INTRV3_Pos (12UL) /*!< INTRV3 (Bit 12) */ 82 #define MEC_BBLED_UPINVL_INTRV3_Msk (0xf000UL) /*!< INTRV3 (Bitfield-Mask: 0x0f) */ 83 #define MEC_BBLED_UPINVL_INTRV4_Pos (16UL) /*!< INTRV4 (Bit 16) */ 84 #define MEC_BBLED_UPINVL_INTRV4_Msk (0xf0000UL) /*!< INTRV4 (Bitfield-Mask: 0x0f) */ 85 #define MEC_BBLED_UPINVL_INTRV5_Pos (20UL) /*!< INTRV5 (Bit 20) */ 86 #define MEC_BBLED_UPINVL_INTRV5_Msk (0xf00000UL) /*!< INTRV5 (Bitfield-Mask: 0x0f) */ 87 #define MEC_BBLED_UPINVL_INTRV6_Pos (24UL) /*!< INTRV6 (Bit 24) */ 88 #define MEC_BBLED_UPINVL_INTRV6_Msk (0xf000000UL) /*!< INTRV6 (Bitfield-Mask: 0x0f) */ 89 #define MEC_BBLED_UPINVL_INTRV7_Pos (28UL) /*!< INTRV7 (Bit 28) */ 90 #define MEC_BBLED_UPINVL_INTRV7_Msk (0xf0000000UL) /*!< INTRV7 (Bitfield-Mask: 0x0f) */ 91 /* ======================================================== OUTDLY ========================================================= */ 92 #define MEC_BBLED_OUTDLY_CNT_Pos (0UL) /*!< CNT (Bit 0) */ 93 #define MEC_BBLED_OUTDLY_CNT_Msk (0xffUL) /*!< CNT (Bitfield-Mask: 0xff) */ 94 95 /** @} */ /* End of group PosMask_peripherals */ 96 97 /** @addtogroup EnumValue_peripherals 98 * @{ 99 */ 100 /* ======================================================== CONFIG ========================================================= */ 101 /* ============================================== MEC_BBLED CONFIG CTRL [0..1] ============================================== */ 102 typedef enum { /*!< MEC_BBLED_CONFIG_CTRL */ 103 MEC_BBLED_CONFIG_CTRL_OFF = 0, /*!< OFF : Always off */ 104 MEC_BBLED_CONFIG_CTRL_BREATH = 1, /*!< BREATH : LED breathing mode */ 105 MEC_BBLED_CONFIG_CTRL_BLINK = 2, /*!< BLINK : LED blink mode */ 106 MEC_BBLED_CONFIG_CTRL_ON = 3, /*!< ON : PWM always ON */ 107 } MEC_BBLED_CONFIG_CTRL_Enum; 108 109 /* ============================================= MEC_BBLED CONFIG CLKSRC [2..2] ============================================= */ 110 typedef enum { /*!< MEC_BBLED_CONFIG_CLKSRC */ 111 MEC_BBLED_CONFIG_CLKSRC_32K = 0, /*!< 32K : 32KHz */ 112 MEC_BBLED_CONFIG_CLKSRC_48M = 1, /*!< 48M : 48MHz */ 113 } MEC_BBLED_CONFIG_CLKSRC_Enum; 114 115 /* ============================================== MEC_BBLED CONFIG SYNC [3..3] ============================================== */ 116 typedef enum { /*!< MEC_BBLED_CONFIG_SYNC */ 117 MEC_BBLED_CONFIG_SYNC_EN = 1, /*!< EN : Enable */ 118 } MEC_BBLED_CONFIG_SYNC_Enum; 119 120 /* ============================================= MEC_BBLED CONFIG PWM_SZ [4..5] ============================================= */ 121 typedef enum { /*!< MEC_BBLED_CONFIG_PWM_SZ */ 122 MEC_BBLED_CONFIG_PWM_SZ_8BIT = 0, /*!< 8BIT : PWM counter is 8-bit */ 123 MEC_BBLED_CONFIG_PWM_SZ_7BIT = 1, /*!< 7BIT : PWM counter is 7-bit */ 124 MEC_BBLED_CONFIG_PWM_SZ_6BIT = 2, /*!< 6BIT : PWM counter is 6-bit */ 125 MEC_BBLED_CONFIG_PWM_SZ_RSVD = 3, /*!< RSVD : PWM size reserved value */ 126 } MEC_BBLED_CONFIG_PWM_SZ_Enum; 127 128 /* ============================================= MEC_BBLED CONFIG UPDATE [6..6] ============================================= */ 129 typedef enum { /*!< MEC_BBLED_CONFIG_UPDATE */ 130 MEC_BBLED_CONFIG_UPDATE_EN = 1, /*!< EN : Enable */ 131 } MEC_BBLED_CONFIG_UPDATE_Enum; 132 133 /* ============================================== MEC_BBLED CONFIG SRST [7..7] ============================================== */ 134 typedef enum { /*!< MEC_BBLED_CONFIG_SRST */ 135 MEC_BBLED_CONFIG_SRST_EN = 1, /*!< EN : Enable */ 136 } MEC_BBLED_CONFIG_SRST_Enum; 137 138 /* ============================================= MEC_BBLED CONFIG ASYM [16..16] ============================================= */ 139 typedef enum { /*!< MEC_BBLED_CONFIG_ASYM */ 140 MEC_BBLED_CONFIG_ASYM_EN = 1, /*!< EN : Enable */ 141 } MEC_BBLED_CONFIG_ASYM_Enum; 142 143 /* ======================================================== LIMITS ========================================================= */ 144 /* ========================================================= DELAY ========================================================= */ 145 /* ========================================================= UPDSS ========================================================= */ 146 /* ============================================== MEC_BBLED UPDSS STEP0 [0..3] ============================================== */ 147 typedef enum { /*!< MEC_BBLED_UPDSS_STEP0 */ 148 MEC_BBLED_UPDSS_STEP0_VAL1 = 0, /*!< VAL1 : Step by 1 */ 149 } MEC_BBLED_UPDSS_STEP0_Enum; 150 151 /* ============================================== MEC_BBLED UPDSS STEP1 [4..7] ============================================== */ 152 typedef enum { /*!< MEC_BBLED_UPDSS_STEP1 */ 153 MEC_BBLED_UPDSS_STEP1_VAL1 = 0, /*!< VAL1 : Step by 1 */ 154 } MEC_BBLED_UPDSS_STEP1_Enum; 155 156 /* ============================================= MEC_BBLED UPDSS STEP2 [8..11] ============================================== */ 157 typedef enum { /*!< MEC_BBLED_UPDSS_STEP2 */ 158 MEC_BBLED_UPDSS_STEP2_VAL1 = 0, /*!< VAL1 : Step by 1 */ 159 } MEC_BBLED_UPDSS_STEP2_Enum; 160 161 /* ============================================= MEC_BBLED UPDSS STEP3 [12..15] ============================================= */ 162 typedef enum { /*!< MEC_BBLED_UPDSS_STEP3 */ 163 MEC_BBLED_UPDSS_STEP3_VAL1 = 0, /*!< VAL1 : Step by 1 */ 164 } MEC_BBLED_UPDSS_STEP3_Enum; 165 166 /* ============================================= MEC_BBLED UPDSS STEP4 [16..19] ============================================= */ 167 typedef enum { /*!< MEC_BBLED_UPDSS_STEP4 */ 168 MEC_BBLED_UPDSS_STEP4_VAL1 = 0, /*!< VAL1 : Step by 1 */ 169 } MEC_BBLED_UPDSS_STEP4_Enum; 170 171 /* ============================================= MEC_BBLED UPDSS STEP5 [20..23] ============================================= */ 172 typedef enum { /*!< MEC_BBLED_UPDSS_STEP5 */ 173 MEC_BBLED_UPDSS_STEP5_VAL1 = 0, /*!< VAL1 : Step by 1 */ 174 } MEC_BBLED_UPDSS_STEP5_Enum; 175 176 /* ============================================= MEC_BBLED UPDSS STEP6 [24..27] ============================================= */ 177 typedef enum { /*!< MEC_BBLED_UPDSS_STEP6 */ 178 MEC_BBLED_UPDSS_STEP6_VAL1 = 0, /*!< VAL1 : Step by 1 */ 179 } MEC_BBLED_UPDSS_STEP6_Enum; 180 181 /* ============================================= MEC_BBLED UPDSS STEP7 [28..31] ============================================= */ 182 typedef enum { /*!< MEC_BBLED_UPDSS_STEP7 */ 183 MEC_BBLED_UPDSS_STEP7_VAL1 = 0, /*!< VAL1 : Step by 1 */ 184 } MEC_BBLED_UPDSS_STEP7_Enum; 185 186 /* ======================================================== UPINVL ========================================================= */ 187 /* ============================================= MEC_BBLED UPINVL INTRV0 [0..3] ============================================= */ 188 typedef enum { /*!< MEC_BBLED_UPINVL_INTRV0 */ 189 MEC_BBLED_UPINVL_INTRV0_PER1 = 0, /*!< PER1 : 1 PWM period */ 190 } MEC_BBLED_UPINVL_INTRV0_Enum; 191 192 /* ============================================= MEC_BBLED UPINVL INTRV1 [4..7] ============================================= */ 193 typedef enum { /*!< MEC_BBLED_UPINVL_INTRV1 */ 194 MEC_BBLED_UPINVL_INTRV1_PER1 = 0, /*!< PER1 : 1 PWM period */ 195 } MEC_BBLED_UPINVL_INTRV1_Enum; 196 197 /* ============================================ MEC_BBLED UPINVL INTRV2 [8..11] ============================================= */ 198 typedef enum { /*!< MEC_BBLED_UPINVL_INTRV2 */ 199 MEC_BBLED_UPINVL_INTRV2_PER1 = 0, /*!< PER1 : 1 PWM period */ 200 } MEC_BBLED_UPINVL_INTRV2_Enum; 201 202 /* ============================================ MEC_BBLED UPINVL INTRV3 [12..15] ============================================ */ 203 typedef enum { /*!< MEC_BBLED_UPINVL_INTRV3 */ 204 MEC_BBLED_UPINVL_INTRV3_PER1 = 0, /*!< PER1 : 1 PWM period */ 205 } MEC_BBLED_UPINVL_INTRV3_Enum; 206 207 /* ============================================ MEC_BBLED UPINVL INTRV4 [16..19] ============================================ */ 208 typedef enum { /*!< MEC_BBLED_UPINVL_INTRV4 */ 209 MEC_BBLED_UPINVL_INTRV4_PER1 = 0, /*!< PER1 : 1 PWM period */ 210 } MEC_BBLED_UPINVL_INTRV4_Enum; 211 212 /* ============================================ MEC_BBLED UPINVL INTRV5 [20..23] ============================================ */ 213 typedef enum { /*!< MEC_BBLED_UPINVL_INTRV5 */ 214 MEC_BBLED_UPINVL_INTRV5_PER1 = 0, /*!< PER1 : 1 PWM period */ 215 } MEC_BBLED_UPINVL_INTRV5_Enum; 216 217 /* ============================================ MEC_BBLED UPINVL INTRV6 [24..27] ============================================ */ 218 typedef enum { /*!< MEC_BBLED_UPINVL_INTRV6 */ 219 MEC_BBLED_UPINVL_INTRV6_PER1 = 0, /*!< PER1 : 1 PWM period */ 220 } MEC_BBLED_UPINVL_INTRV6_Enum; 221 222 /* ============================================ MEC_BBLED UPINVL INTRV7 [28..31] ============================================ */ 223 typedef enum { /*!< MEC_BBLED_UPINVL_INTRV7 */ 224 MEC_BBLED_UPINVL_INTRV7_PER1 = 0, /*!< PER1 : 1 PWM period */ 225 } MEC_BBLED_UPINVL_INTRV7_Enum; 226 /** @} */ /* End of group EnumValue_peripherals */ 227 228 #endif /* _MEC5_BBLED_V1_H */ 229