1 /* 2 * Copyright 1997-2016 Freescale Semiconductor, Inc. 3 * Copyright 2016-2022 NXP 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 /*! 9 * @file S32K116_CMP.h 10 * @version 1.1 11 * @date 2022-01-21 12 * @brief Peripheral Access Layer for S32K116_CMP 13 * 14 * This file contains register definitions and macros for easy access to their 15 * bit fields. 16 * 17 * This file assumes LITTLE endian system. 18 */ 19 20 /** 21 * @page misra_violations MISRA-C:2012 violations 22 * 23 * @section [global] 24 * Violates MISRA 2012 Advisory Rule 2.3, local typedef not referenced 25 * The SoC header defines typedef for all modules. 26 * 27 * @section [global] 28 * Violates MISRA 2012 Advisory Rule 2.5, local macro not referenced 29 * The SoC header defines macros for all modules and registers. 30 * 31 * @section [global] 32 * Violates MISRA 2012 Advisory Directive 4.9, Function-like macro 33 * These are generated macros used for accessing the bit-fields from registers. 34 * 35 * @section [global] 36 * Violates MISRA 2012 Required Rule 5.1, identifier clash 37 * The supported compilers use more than 31 significant characters for identifiers. 38 * 39 * @section [global] 40 * Violates MISRA 2012 Required Rule 5.2, identifier clash 41 * The supported compilers use more than 31 significant characters for identifiers. 42 * 43 * @section [global] 44 * Violates MISRA 2012 Required Rule 5.4, identifier clash 45 * The supported compilers use more than 31 significant characters for identifiers. 46 * 47 * @section [global] 48 * Violates MISRA 2012 Required Rule 5.5, identifier clash 49 * The supported compilers use more than 31 significant characters for identifiers. 50 * 51 * @section [global] 52 * Violates MISRA 2012 Required Rule 21.1, defined macro '__I' is reserved to the compiler 53 * This type qualifier is needed to ensure correct I/O access and addressing. 54 */ 55 56 /* Prevention from multiple including the same memory map */ 57 #if !defined(S32K116_CMP_H_) /* Check if memory map has not been already included */ 58 #define S32K116_CMP_H_ 59 60 #include "S32K116_COMMON.h" 61 62 /* ---------------------------------------------------------------------------- 63 -- CMP Peripheral Access Layer 64 ---------------------------------------------------------------------------- */ 65 66 /*! 67 * @addtogroup CMP_Peripheral_Access_Layer CMP Peripheral Access Layer 68 * @{ 69 */ 70 71 /** CMP - Register Layout Typedef */ 72 typedef struct { 73 __IO uint32_t C0; /**< CMP Control Register 0, offset: 0x0 */ 74 __IO uint32_t C1; /**< CMP Control Register 1, offset: 0x4 */ 75 __IO uint32_t C2; /**< CMP Control Register 2, offset: 0x8 */ 76 } CMP_Type, *CMP_MemMapPtr; 77 78 /** Number of instances of the CMP module. */ 79 #define CMP_INSTANCE_COUNT (1u) 80 81 /* CMP - Peripheral instance base addresses */ 82 /** Peripheral CMP0 base address */ 83 #define IP_CMP0_BASE (0x40073000u) 84 /** Peripheral CMP0 base pointer */ 85 #define IP_CMP0 ((CMP_Type *)IP_CMP0_BASE) 86 /** Array initializer of CMP peripheral base addresses */ 87 #define IP_CMP_BASE_ADDRS { IP_CMP0_BASE } 88 /** Array initializer of CMP peripheral base pointers */ 89 #define IP_CMP_BASE_PTRS { IP_CMP0 } 90 91 /* ---------------------------------------------------------------------------- 92 -- CMP Register Masks 93 ---------------------------------------------------------------------------- */ 94 95 /*! 96 * @addtogroup CMP_Register_Masks CMP Register Masks 97 * @{ 98 */ 99 100 /*! @name C0 - CMP Control Register 0 */ 101 /*! @{ */ 102 103 #define CMP_C0_HYSTCTR_MASK (0x3U) 104 #define CMP_C0_HYSTCTR_SHIFT (0U) 105 #define CMP_C0_HYSTCTR_WIDTH (2U) 106 #define CMP_C0_HYSTCTR(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_HYSTCTR_SHIFT)) & CMP_C0_HYSTCTR_MASK) 107 108 #define CMP_C0_OFFSET_MASK (0x4U) 109 #define CMP_C0_OFFSET_SHIFT (2U) 110 #define CMP_C0_OFFSET_WIDTH (1U) 111 #define CMP_C0_OFFSET(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_OFFSET_SHIFT)) & CMP_C0_OFFSET_MASK) 112 113 #define CMP_C0_FILTER_CNT_MASK (0x70U) 114 #define CMP_C0_FILTER_CNT_SHIFT (4U) 115 #define CMP_C0_FILTER_CNT_WIDTH (3U) 116 #define CMP_C0_FILTER_CNT(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_FILTER_CNT_SHIFT)) & CMP_C0_FILTER_CNT_MASK) 117 118 #define CMP_C0_EN_MASK (0x100U) 119 #define CMP_C0_EN_SHIFT (8U) 120 #define CMP_C0_EN_WIDTH (1U) 121 #define CMP_C0_EN(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_EN_SHIFT)) & CMP_C0_EN_MASK) 122 123 #define CMP_C0_OPE_MASK (0x200U) 124 #define CMP_C0_OPE_SHIFT (9U) 125 #define CMP_C0_OPE_WIDTH (1U) 126 #define CMP_C0_OPE(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_OPE_SHIFT)) & CMP_C0_OPE_MASK) 127 128 #define CMP_C0_COS_MASK (0x400U) 129 #define CMP_C0_COS_SHIFT (10U) 130 #define CMP_C0_COS_WIDTH (1U) 131 #define CMP_C0_COS(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_COS_SHIFT)) & CMP_C0_COS_MASK) 132 133 #define CMP_C0_INVT_MASK (0x800U) 134 #define CMP_C0_INVT_SHIFT (11U) 135 #define CMP_C0_INVT_WIDTH (1U) 136 #define CMP_C0_INVT(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_INVT_SHIFT)) & CMP_C0_INVT_MASK) 137 138 #define CMP_C0_PMODE_MASK (0x1000U) 139 #define CMP_C0_PMODE_SHIFT (12U) 140 #define CMP_C0_PMODE_WIDTH (1U) 141 #define CMP_C0_PMODE(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_PMODE_SHIFT)) & CMP_C0_PMODE_MASK) 142 143 #define CMP_C0_WE_MASK (0x4000U) 144 #define CMP_C0_WE_SHIFT (14U) 145 #define CMP_C0_WE_WIDTH (1U) 146 #define CMP_C0_WE(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_WE_SHIFT)) & CMP_C0_WE_MASK) 147 148 #define CMP_C0_SE_MASK (0x8000U) 149 #define CMP_C0_SE_SHIFT (15U) 150 #define CMP_C0_SE_WIDTH (1U) 151 #define CMP_C0_SE(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_SE_SHIFT)) & CMP_C0_SE_MASK) 152 153 #define CMP_C0_FPR_MASK (0xFF0000U) 154 #define CMP_C0_FPR_SHIFT (16U) 155 #define CMP_C0_FPR_WIDTH (8U) 156 #define CMP_C0_FPR(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_FPR_SHIFT)) & CMP_C0_FPR_MASK) 157 158 #define CMP_C0_COUT_MASK (0x1000000U) 159 #define CMP_C0_COUT_SHIFT (24U) 160 #define CMP_C0_COUT_WIDTH (1U) 161 #define CMP_C0_COUT(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_COUT_SHIFT)) & CMP_C0_COUT_MASK) 162 163 #define CMP_C0_CFF_MASK (0x2000000U) 164 #define CMP_C0_CFF_SHIFT (25U) 165 #define CMP_C0_CFF_WIDTH (1U) 166 #define CMP_C0_CFF(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_CFF_SHIFT)) & CMP_C0_CFF_MASK) 167 168 #define CMP_C0_CFR_MASK (0x4000000U) 169 #define CMP_C0_CFR_SHIFT (26U) 170 #define CMP_C0_CFR_WIDTH (1U) 171 #define CMP_C0_CFR(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_CFR_SHIFT)) & CMP_C0_CFR_MASK) 172 173 #define CMP_C0_IEF_MASK (0x8000000U) 174 #define CMP_C0_IEF_SHIFT (27U) 175 #define CMP_C0_IEF_WIDTH (1U) 176 #define CMP_C0_IEF(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_IEF_SHIFT)) & CMP_C0_IEF_MASK) 177 178 #define CMP_C0_IER_MASK (0x10000000U) 179 #define CMP_C0_IER_SHIFT (28U) 180 #define CMP_C0_IER_WIDTH (1U) 181 #define CMP_C0_IER(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_IER_SHIFT)) & CMP_C0_IER_MASK) 182 183 #define CMP_C0_DMAEN_MASK (0x40000000U) 184 #define CMP_C0_DMAEN_SHIFT (30U) 185 #define CMP_C0_DMAEN_WIDTH (1U) 186 #define CMP_C0_DMAEN(x) (((uint32_t)(((uint32_t)(x)) << CMP_C0_DMAEN_SHIFT)) & CMP_C0_DMAEN_MASK) 187 /*! @} */ 188 189 /*! @name C1 - CMP Control Register 1 */ 190 /*! @{ */ 191 192 #define CMP_C1_VOSEL_MASK (0xFFU) 193 #define CMP_C1_VOSEL_SHIFT (0U) 194 #define CMP_C1_VOSEL_WIDTH (8U) 195 #define CMP_C1_VOSEL(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_VOSEL_SHIFT)) & CMP_C1_VOSEL_MASK) 196 197 #define CMP_C1_MSEL_MASK (0x700U) 198 #define CMP_C1_MSEL_SHIFT (8U) 199 #define CMP_C1_MSEL_WIDTH (3U) 200 #define CMP_C1_MSEL(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_MSEL_SHIFT)) & CMP_C1_MSEL_MASK) 201 202 #define CMP_C1_PSEL_MASK (0x3800U) 203 #define CMP_C1_PSEL_SHIFT (11U) 204 #define CMP_C1_PSEL_WIDTH (3U) 205 #define CMP_C1_PSEL(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_PSEL_SHIFT)) & CMP_C1_PSEL_MASK) 206 207 #define CMP_C1_VRSEL_MASK (0x4000U) 208 #define CMP_C1_VRSEL_SHIFT (14U) 209 #define CMP_C1_VRSEL_WIDTH (1U) 210 #define CMP_C1_VRSEL(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_VRSEL_SHIFT)) & CMP_C1_VRSEL_MASK) 211 212 #define CMP_C1_DACEN_MASK (0x8000U) 213 #define CMP_C1_DACEN_SHIFT (15U) 214 #define CMP_C1_DACEN_WIDTH (1U) 215 #define CMP_C1_DACEN(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_DACEN_SHIFT)) & CMP_C1_DACEN_MASK) 216 217 #define CMP_C1_CHN0_MASK (0x10000U) 218 #define CMP_C1_CHN0_SHIFT (16U) 219 #define CMP_C1_CHN0_WIDTH (1U) 220 #define CMP_C1_CHN0(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_CHN0_SHIFT)) & CMP_C1_CHN0_MASK) 221 222 #define CMP_C1_CHN1_MASK (0x20000U) 223 #define CMP_C1_CHN1_SHIFT (17U) 224 #define CMP_C1_CHN1_WIDTH (1U) 225 #define CMP_C1_CHN1(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_CHN1_SHIFT)) & CMP_C1_CHN1_MASK) 226 227 #define CMP_C1_CHN2_MASK (0x40000U) 228 #define CMP_C1_CHN2_SHIFT (18U) 229 #define CMP_C1_CHN2_WIDTH (1U) 230 #define CMP_C1_CHN2(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_CHN2_SHIFT)) & CMP_C1_CHN2_MASK) 231 232 #define CMP_C1_CHN3_MASK (0x80000U) 233 #define CMP_C1_CHN3_SHIFT (19U) 234 #define CMP_C1_CHN3_WIDTH (1U) 235 #define CMP_C1_CHN3(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_CHN3_SHIFT)) & CMP_C1_CHN3_MASK) 236 237 #define CMP_C1_CHN4_MASK (0x100000U) 238 #define CMP_C1_CHN4_SHIFT (20U) 239 #define CMP_C1_CHN4_WIDTH (1U) 240 #define CMP_C1_CHN4(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_CHN4_SHIFT)) & CMP_C1_CHN4_MASK) 241 242 #define CMP_C1_CHN5_MASK (0x200000U) 243 #define CMP_C1_CHN5_SHIFT (21U) 244 #define CMP_C1_CHN5_WIDTH (1U) 245 #define CMP_C1_CHN5(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_CHN5_SHIFT)) & CMP_C1_CHN5_MASK) 246 247 #define CMP_C1_CHN6_MASK (0x400000U) 248 #define CMP_C1_CHN6_SHIFT (22U) 249 #define CMP_C1_CHN6_WIDTH (1U) 250 #define CMP_C1_CHN6(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_CHN6_SHIFT)) & CMP_C1_CHN6_MASK) 251 252 #define CMP_C1_CHN7_MASK (0x800000U) 253 #define CMP_C1_CHN7_SHIFT (23U) 254 #define CMP_C1_CHN7_WIDTH (1U) 255 #define CMP_C1_CHN7(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_CHN7_SHIFT)) & CMP_C1_CHN7_MASK) 256 257 #define CMP_C1_INNSEL_MASK (0x3000000U) 258 #define CMP_C1_INNSEL_SHIFT (24U) 259 #define CMP_C1_INNSEL_WIDTH (2U) 260 #define CMP_C1_INNSEL(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_INNSEL_SHIFT)) & CMP_C1_INNSEL_MASK) 261 262 #define CMP_C1_INPSEL_MASK (0x18000000U) 263 #define CMP_C1_INPSEL_SHIFT (27U) 264 #define CMP_C1_INPSEL_WIDTH (2U) 265 #define CMP_C1_INPSEL(x) (((uint32_t)(((uint32_t)(x)) << CMP_C1_INPSEL_SHIFT)) & CMP_C1_INPSEL_MASK) 266 /*! @} */ 267 268 /*! @name C2 - CMP Control Register 2 */ 269 /*! @{ */ 270 271 #define CMP_C2_ACOn_MASK (0xFFU) 272 #define CMP_C2_ACOn_SHIFT (0U) 273 #define CMP_C2_ACOn_WIDTH (8U) 274 #define CMP_C2_ACOn(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_ACOn_SHIFT)) & CMP_C2_ACOn_MASK) 275 276 #define CMP_C2_INITMOD_MASK (0x3F00U) 277 #define CMP_C2_INITMOD_SHIFT (8U) 278 #define CMP_C2_INITMOD_WIDTH (6U) 279 #define CMP_C2_INITMOD(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_INITMOD_SHIFT)) & CMP_C2_INITMOD_MASK) 280 281 #define CMP_C2_NSAM_MASK (0xC000U) 282 #define CMP_C2_NSAM_SHIFT (14U) 283 #define CMP_C2_NSAM_WIDTH (2U) 284 #define CMP_C2_NSAM(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_NSAM_SHIFT)) & CMP_C2_NSAM_MASK) 285 286 #define CMP_C2_CH0F_MASK (0x10000U) 287 #define CMP_C2_CH0F_SHIFT (16U) 288 #define CMP_C2_CH0F_WIDTH (1U) 289 #define CMP_C2_CH0F(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_CH0F_SHIFT)) & CMP_C2_CH0F_MASK) 290 291 #define CMP_C2_CH1F_MASK (0x20000U) 292 #define CMP_C2_CH1F_SHIFT (17U) 293 #define CMP_C2_CH1F_WIDTH (1U) 294 #define CMP_C2_CH1F(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_CH1F_SHIFT)) & CMP_C2_CH1F_MASK) 295 296 #define CMP_C2_CH2F_MASK (0x40000U) 297 #define CMP_C2_CH2F_SHIFT (18U) 298 #define CMP_C2_CH2F_WIDTH (1U) 299 #define CMP_C2_CH2F(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_CH2F_SHIFT)) & CMP_C2_CH2F_MASK) 300 301 #define CMP_C2_CH3F_MASK (0x80000U) 302 #define CMP_C2_CH3F_SHIFT (19U) 303 #define CMP_C2_CH3F_WIDTH (1U) 304 #define CMP_C2_CH3F(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_CH3F_SHIFT)) & CMP_C2_CH3F_MASK) 305 306 #define CMP_C2_CH4F_MASK (0x100000U) 307 #define CMP_C2_CH4F_SHIFT (20U) 308 #define CMP_C2_CH4F_WIDTH (1U) 309 #define CMP_C2_CH4F(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_CH4F_SHIFT)) & CMP_C2_CH4F_MASK) 310 311 #define CMP_C2_CH5F_MASK (0x200000U) 312 #define CMP_C2_CH5F_SHIFT (21U) 313 #define CMP_C2_CH5F_WIDTH (1U) 314 #define CMP_C2_CH5F(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_CH5F_SHIFT)) & CMP_C2_CH5F_MASK) 315 316 #define CMP_C2_CH6F_MASK (0x400000U) 317 #define CMP_C2_CH6F_SHIFT (22U) 318 #define CMP_C2_CH6F_WIDTH (1U) 319 #define CMP_C2_CH6F(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_CH6F_SHIFT)) & CMP_C2_CH6F_MASK) 320 321 #define CMP_C2_CH7F_MASK (0x800000U) 322 #define CMP_C2_CH7F_SHIFT (23U) 323 #define CMP_C2_CH7F_WIDTH (1U) 324 #define CMP_C2_CH7F(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_CH7F_SHIFT)) & CMP_C2_CH7F_MASK) 325 326 #define CMP_C2_FXMXCH_MASK (0xE000000U) 327 #define CMP_C2_FXMXCH_SHIFT (25U) 328 #define CMP_C2_FXMXCH_WIDTH (3U) 329 #define CMP_C2_FXMXCH(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_FXMXCH_SHIFT)) & CMP_C2_FXMXCH_MASK) 330 331 #define CMP_C2_FXMP_MASK (0x20000000U) 332 #define CMP_C2_FXMP_SHIFT (29U) 333 #define CMP_C2_FXMP_WIDTH (1U) 334 #define CMP_C2_FXMP(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_FXMP_SHIFT)) & CMP_C2_FXMP_MASK) 335 336 #define CMP_C2_RRIE_MASK (0x40000000U) 337 #define CMP_C2_RRIE_SHIFT (30U) 338 #define CMP_C2_RRIE_WIDTH (1U) 339 #define CMP_C2_RRIE(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_RRIE_SHIFT)) & CMP_C2_RRIE_MASK) 340 341 #define CMP_C2_RRE_MASK (0x80000000U) 342 #define CMP_C2_RRE_SHIFT (31U) 343 #define CMP_C2_RRE_WIDTH (1U) 344 #define CMP_C2_RRE(x) (((uint32_t)(((uint32_t)(x)) << CMP_C2_RRE_SHIFT)) & CMP_C2_RRE_MASK) 345 /*! @} */ 346 347 /*! 348 * @} 349 */ /* end of group CMP_Register_Masks */ 350 351 /*! 352 * @} 353 */ /* end of group CMP_Peripheral_Access_Layer */ 354 355 #endif /* #if !defined(S32K116_CMP_H_) */ 356