1 /* 2 * Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef BSP_ELC_H 8 #define BSP_ELC_H 9 10 /*******************************************************************************************************************//** 11 * @addtogroup BSP_MCU_RA4M1 12 * @{ 13 **********************************************************************************************************************/ 14 15 /*********************************************************************************************************************** 16 * Macro definitions 17 **********************************************************************************************************************/ 18 19 /*********************************************************************************************************************** 20 * Typedef definitions 21 **********************************************************************************************************************/ 22 23 /*********************************************************************************************************************** 24 * Exported global variables 25 **********************************************************************************************************************/ 26 27 /*********************************************************************************************************************** 28 * Exported global functions (to be accessed by other files) 29 **********************************************************************************************************************/ 30 31 /* UNCRUSTIFY-OFF */ 32 33 /** Sources of event signals to be linked to other peripherals or the CPU 34 * @note This list is device specific. 35 * */ 36 typedef enum e_elc_event_ra4m1 37 { 38 ELC_EVENT_NONE = (0x0), // Link disabled 39 ELC_EVENT_ICU_IRQ0 = (0x001), // External pin interrupt 0 40 ELC_EVENT_ICU_IRQ1 = (0x002), // External pin interrupt 1 41 ELC_EVENT_ICU_IRQ2 = (0x003), // External pin interrupt 2 42 ELC_EVENT_ICU_IRQ3 = (0x004), // External pin interrupt 3 43 ELC_EVENT_ICU_IRQ4 = (0x005), // External pin interrupt 4 44 ELC_EVENT_ICU_IRQ5 = (0x006), // External pin interrupt 5 45 ELC_EVENT_ICU_IRQ6 = (0x007), // External pin interrupt 6 46 ELC_EVENT_ICU_IRQ7 = (0x008), // External pin interrupt 7 47 ELC_EVENT_ICU_IRQ8 = (0x009), // External pin interrupt 8 48 ELC_EVENT_ICU_IRQ9 = (0x00A), // External pin interrupt 9 49 ELC_EVENT_ICU_IRQ10 = (0x00B), // External pin interrupt 10 50 ELC_EVENT_ICU_IRQ11 = (0x00C), // External pin interrupt 11 51 ELC_EVENT_ICU_IRQ12 = (0x00D), // External pin interrupt 12 52 ELC_EVENT_ICU_IRQ14 = (0x00F), // External pin interrupt 14 53 ELC_EVENT_ICU_IRQ15 = (0x010), // External pin interrupt 15 54 ELC_EVENT_DMAC0_INT = (0x011), // DMAC0 transfer end 55 ELC_EVENT_DMAC1_INT = (0x012), // DMAC1 transfer end 56 ELC_EVENT_DMAC2_INT = (0x013), // DMAC2 transfer end 57 ELC_EVENT_DMAC3_INT = (0x014), // DMAC3 transfer end 58 ELC_EVENT_DTC_COMPLETE = (0x015), // DTC transfer complete 59 ELC_EVENT_DTC_END = (0x016), // DTC transfer end 60 ELC_EVENT_ICU_SNOOZE_CANCEL = (0x017), // Canceling from Snooze mode 61 ELC_EVENT_FCU_FRDYI = (0x018), // Flash ready interrupt 62 ELC_EVENT_LVD_LVD1 = (0x019), // Voltage monitor 1 interrupt 63 ELC_EVENT_LVD_LVD2 = (0x01A), // Voltage monitor 2 interrupt 64 ELC_EVENT_LVD_VBATT = (0x01B), // VBATT low voltage detect 65 ELC_EVENT_CGC_MOSC_STOP = (0x01C), // Main Clock oscillation stop 66 ELC_EVENT_LPM_SNOOZE_REQUEST = (0x01D), // Snooze entry 67 ELC_EVENT_AGT0_INT = (0x01E), // AGT interrupt 68 ELC_EVENT_AGT0_COMPARE_A = (0x01F), // Compare match A 69 ELC_EVENT_AGT0_COMPARE_B = (0x020), // Compare match B 70 ELC_EVENT_AGT1_INT = (0x021), // AGT interrupt 71 ELC_EVENT_AGT1_COMPARE_A = (0x022), // Compare match A 72 ELC_EVENT_AGT1_COMPARE_B = (0x023), // Compare match B 73 ELC_EVENT_IWDT_UNDERFLOW = (0x024), // IWDT underflow 74 ELC_EVENT_WDT_UNDERFLOW = (0x025), // WDT0 underflow 75 ELC_EVENT_RTC_ALARM = (0x026), // Alarm interrupt 76 ELC_EVENT_RTC_PERIOD = (0x027), // Periodic interrupt 77 ELC_EVENT_RTC_CARRY = (0x028), // Carry interrupt 78 ELC_EVENT_ADC0_SCAN_END = (0x029), // End of A/D scanning operation 79 ELC_EVENT_ADC0_SCAN_END_B = (0x02A), // A/D scan end interrupt for group B 80 ELC_EVENT_ADC0_WINDOW_A = (0x02B), // Window A Compare match interrupt 81 ELC_EVENT_ADC0_WINDOW_B = (0x02C), // Window B Compare match interrupt 82 ELC_EVENT_ADC0_COMPARE_MATCH = (0x02D), // Compare match 83 ELC_EVENT_ADC0_COMPARE_MISMATCH = (0x02E), // Compare mismatch 84 ELC_EVENT_ACMPLP0_INT = (0x02F), // Low Power Comparator channel 0 interrupt 85 ELC_EVENT_ACMPLP1_INT = (0x030), // Low Power Comparator channel 1 interrupt 86 ELC_EVENT_USBFS_FIFO_0 = (0x031), // DMA transfer request 0 87 ELC_EVENT_USBFS_FIFO_1 = (0x032), // DMA transfer request 1 88 ELC_EVENT_USBFS_INT = (0x033), // USBFS interrupt 89 ELC_EVENT_USBFS_RESUME = (0x034), // USBFS resume interrupt 90 ELC_EVENT_IIC0_RXI = (0x035), // Receive data full 91 ELC_EVENT_IIC0_TXI = (0x036), // Transmit data empty 92 ELC_EVENT_IIC0_TEI = (0x037), // Transmit end 93 ELC_EVENT_IIC0_ERI = (0x038), // Transfer error 94 ELC_EVENT_IIC0_WUI = (0x039), // Wakeup interrupt 95 ELC_EVENT_IIC1_RXI = (0x03A), // Receive data full 96 ELC_EVENT_IIC1_TXI = (0x03B), // Transmit data empty 97 ELC_EVENT_IIC1_TEI = (0x03C), // Transmit end 98 ELC_EVENT_IIC1_ERI = (0x03D), // Transfer error 99 ELC_EVENT_SSI0_TXI = (0x03E), // Transmit data empty 100 ELC_EVENT_SSI0_RXI = (0x03F), // Receive data full 101 ELC_EVENT_SSI0_INT = (0x041), // Error interrupt 102 ELC_EVENT_CTSU_WRITE = (0x042), // Write request interrupt 103 ELC_EVENT_CTSU_READ = (0x043), // Measurement data transfer request interrupt 104 ELC_EVENT_CTSU_END = (0x044), // Measurement end interrupt 105 ELC_EVENT_KEY_INT = (0x045), // Key interrupt 106 ELC_EVENT_DOC_INT = (0x046), // Data operation circuit interrupt 107 ELC_EVENT_CAC_FREQUENCY_ERROR = (0x047), // Frequency error interrupt 108 ELC_EVENT_CAC_MEASUREMENT_END = (0x048), // Measurement end interrupt 109 ELC_EVENT_CAC_OVERFLOW = (0x049), // Overflow interrupt 110 ELC_EVENT_CAN0_ERROR = (0x04A), // Error interrupt 111 ELC_EVENT_CAN0_FIFO_RX = (0x04B), // Receive FIFO interrupt 112 ELC_EVENT_CAN0_FIFO_TX = (0x04C), // Transmit FIFO interrupt 113 ELC_EVENT_CAN0_MAILBOX_RX = (0x04D), // Reception complete interrupt 114 ELC_EVENT_CAN0_MAILBOX_TX = (0x04E), // Transmission complete interrupt 115 ELC_EVENT_IOPORT_EVENT_1 = (0x04F), // Port 1 event 116 ELC_EVENT_IOPORT_EVENT_2 = (0x050), // Port 2 event 117 ELC_EVENT_IOPORT_EVENT_3 = (0x051), // Port 3 event 118 ELC_EVENT_IOPORT_EVENT_4 = (0x052), // Port 4 event 119 ELC_EVENT_ELC_SOFTWARE_EVENT_0 = (0x053), // Software event 0 120 ELC_EVENT_ELC_SOFTWARE_EVENT_1 = (0x054), // Software event 1 121 ELC_EVENT_POEG0_EVENT = (0x055), // Port Output disable 0 interrupt 122 ELC_EVENT_POEG1_EVENT = (0x056), // Port Output disable 1 interrupt 123 ELC_EVENT_GPT0_CAPTURE_COMPARE_A = (0x057), // Capture/Compare match A 124 ELC_EVENT_GPT0_CAPTURE_COMPARE_B = (0x058), // Capture/Compare match B 125 ELC_EVENT_GPT0_COMPARE_C = (0x059), // Compare match C 126 ELC_EVENT_GPT0_COMPARE_D = (0x05A), // Compare match D 127 ELC_EVENT_GPT0_COMPARE_E = (0x05B), // Compare match E 128 ELC_EVENT_GPT0_COMPARE_F = (0x05C), // Compare match F 129 ELC_EVENT_GPT0_COUNTER_OVERFLOW = (0x05D), // Overflow 130 ELC_EVENT_GPT0_COUNTER_UNDERFLOW = (0x05E), // Underflow 131 ELC_EVENT_GPT1_CAPTURE_COMPARE_A = (0x05F), // Capture/Compare match A 132 ELC_EVENT_GPT1_CAPTURE_COMPARE_B = (0x060), // Capture/Compare match B 133 ELC_EVENT_GPT1_COMPARE_C = (0x061), // Compare match C 134 ELC_EVENT_GPT1_COMPARE_D = (0x062), // Compare match D 135 ELC_EVENT_GPT1_COMPARE_E = (0x063), // Compare match E 136 ELC_EVENT_GPT1_COMPARE_F = (0x064), // Compare match F 137 ELC_EVENT_GPT1_COUNTER_OVERFLOW = (0x065), // Overflow 138 ELC_EVENT_GPT1_COUNTER_UNDERFLOW = (0x066), // Underflow 139 ELC_EVENT_GPT2_CAPTURE_COMPARE_A = (0x067), // Capture/Compare match A 140 ELC_EVENT_GPT2_CAPTURE_COMPARE_B = (0x068), // Capture/Compare match B 141 ELC_EVENT_GPT2_COMPARE_C = (0x069), // Compare match C 142 ELC_EVENT_GPT2_COMPARE_D = (0x06A), // Compare match D 143 ELC_EVENT_GPT2_COMPARE_E = (0x06B), // Compare match E 144 ELC_EVENT_GPT2_COMPARE_F = (0x06C), // Compare match F 145 ELC_EVENT_GPT2_COUNTER_OVERFLOW = (0x06D), // Overflow 146 ELC_EVENT_GPT2_COUNTER_UNDERFLOW = (0x06E), // Underflow 147 ELC_EVENT_GPT3_CAPTURE_COMPARE_A = (0x06F), // Capture/Compare match A 148 ELC_EVENT_GPT3_CAPTURE_COMPARE_B = (0x070), // Capture/Compare match B 149 ELC_EVENT_GPT3_COMPARE_C = (0x071), // Compare match C 150 ELC_EVENT_GPT3_COMPARE_D = (0x072), // Compare match D 151 ELC_EVENT_GPT3_COMPARE_E = (0x073), // Compare match E 152 ELC_EVENT_GPT3_COMPARE_F = (0x074), // Compare match F 153 ELC_EVENT_GPT3_COUNTER_OVERFLOW = (0x075), // Overflow 154 ELC_EVENT_GPT3_COUNTER_UNDERFLOW = (0x076), // Underflow 155 ELC_EVENT_GPT4_CAPTURE_COMPARE_A = (0x077), // Capture/Compare match A 156 ELC_EVENT_GPT4_CAPTURE_COMPARE_B = (0x078), // Capture/Compare match B 157 ELC_EVENT_GPT4_COMPARE_C = (0x079), // Compare match C 158 ELC_EVENT_GPT4_COMPARE_D = (0x07A), // Compare match D 159 ELC_EVENT_GPT4_COMPARE_E = (0x07B), // Compare match E 160 ELC_EVENT_GPT4_COMPARE_F = (0x07C), // Compare match F 161 ELC_EVENT_GPT4_COUNTER_OVERFLOW = (0x07D), // Overflow 162 ELC_EVENT_GPT4_COUNTER_UNDERFLOW = (0x07E), // Underflow 163 ELC_EVENT_GPT5_CAPTURE_COMPARE_A = (0x07F), // Capture/Compare match A 164 ELC_EVENT_GPT5_CAPTURE_COMPARE_B = (0x080), // Capture/Compare match B 165 ELC_EVENT_GPT5_COMPARE_C = (0x081), // Compare match C 166 ELC_EVENT_GPT5_COMPARE_D = (0x082), // Compare match D 167 ELC_EVENT_GPT5_COMPARE_E = (0x083), // Compare match E 168 ELC_EVENT_GPT5_COMPARE_F = (0x084), // Compare match F 169 ELC_EVENT_GPT5_COUNTER_OVERFLOW = (0x085), // Overflow 170 ELC_EVENT_GPT5_COUNTER_UNDERFLOW = (0x086), // Underflow 171 ELC_EVENT_GPT6_CAPTURE_COMPARE_A = (0x087), // Capture/Compare match A 172 ELC_EVENT_GPT6_CAPTURE_COMPARE_B = (0x088), // Capture/Compare match B 173 ELC_EVENT_GPT6_COMPARE_C = (0x089), // Compare match C 174 ELC_EVENT_GPT6_COMPARE_D = (0x08A), // Compare match D 175 ELC_EVENT_GPT6_COMPARE_E = (0x08B), // Compare match E 176 ELC_EVENT_GPT6_COMPARE_F = (0x08C), // Compare match F 177 ELC_EVENT_GPT6_COUNTER_OVERFLOW = (0x08D), // Overflow 178 ELC_EVENT_GPT6_COUNTER_UNDERFLOW = (0x08E), // Underflow 179 ELC_EVENT_GPT7_CAPTURE_COMPARE_A = (0x08F), // Capture/Compare match A 180 ELC_EVENT_GPT7_CAPTURE_COMPARE_B = (0x090), // Capture/Compare match B 181 ELC_EVENT_GPT7_COMPARE_C = (0x091), // Compare match C 182 ELC_EVENT_GPT7_COMPARE_D = (0x092), // Compare match D 183 ELC_EVENT_GPT7_COMPARE_E = (0x093), // Compare match E 184 ELC_EVENT_GPT7_COMPARE_F = (0x094), // Compare match F 185 ELC_EVENT_GPT7_COUNTER_OVERFLOW = (0x095), // Overflow 186 ELC_EVENT_GPT7_COUNTER_UNDERFLOW = (0x096), // Underflow 187 ELC_EVENT_OPS_UVW_EDGE = (0x097), // UVW edge event 188 ELC_EVENT_SCI0_RXI = (0x098), // Receive data full 189 ELC_EVENT_SCI0_TXI = (0x099), // Transmit data empty 190 ELC_EVENT_SCI0_TEI = (0x09A), // Transmit end 191 ELC_EVENT_SCI0_ERI = (0x09B), // Receive error 192 ELC_EVENT_SCI0_AM = (0x09C), // Address match event 193 ELC_EVENT_SCI0_RXI_OR_ERI = (0x09D), // Receive data full/Receive error 194 ELC_EVENT_SCI1_RXI = (0x09E), // Receive data full 195 ELC_EVENT_SCI1_TXI = (0x09F), // Transmit data empty 196 ELC_EVENT_SCI1_TEI = (0x0A0), // Transmit end 197 ELC_EVENT_SCI1_ERI = (0x0A1), // Receive error 198 ELC_EVENT_SCI1_AM = (0x0A2), // Address match event 199 ELC_EVENT_SCI2_RXI = (0x0A3), // Receive data full 200 ELC_EVENT_SCI2_TXI = (0x0A4), // Transmit data empty 201 ELC_EVENT_SCI2_TEI = (0x0A5), // Transmit end 202 ELC_EVENT_SCI2_ERI = (0x0A6), // Receive error 203 ELC_EVENT_SCI2_AM = (0x0A7), // Address match event 204 ELC_EVENT_SCI9_RXI = (0x0A8), // Receive data full 205 ELC_EVENT_SCI9_TXI = (0x0A9), // Transmit data empty 206 ELC_EVENT_SCI9_TEI = (0x0AA), // Transmit end 207 ELC_EVENT_SCI9_ERI = (0x0AB), // Receive error 208 ELC_EVENT_SCI9_AM = (0x0AC), // Address match event 209 ELC_EVENT_SPI0_RXI = (0x0AD), // Receive buffer full 210 ELC_EVENT_SPI0_TXI = (0x0AE), // Transmit buffer empty 211 ELC_EVENT_SPI0_IDLE = (0x0AF), // Idle 212 ELC_EVENT_SPI0_ERI = (0x0B0), // Error 213 ELC_EVENT_SPI0_TEI = (0x0B1), // Transmission complete event 214 ELC_EVENT_SPI1_RXI = (0x0B2), // Receive buffer full 215 ELC_EVENT_SPI1_TXI = (0x0B3), // Transmit buffer empty 216 ELC_EVENT_SPI1_IDLE = (0x0B4), // Idle 217 ELC_EVENT_SPI1_ERI = (0x0B5), // Error 218 ELC_EVENT_SPI1_TEI = (0x0B6) // Transmission complete event 219 } elc_event_t; 220 221 #define BSP_PRV_VECT_ENUM(event,group) (ELC_ ## event) 222 223 #define ELC_PERIPHERAL_NUM (19U) 224 #define BSP_OVERRIDE_ELC_PERIPHERAL_T 225 /** Possible peripherals to be linked to event signals 226 * @note This list is device specific. 227 * */ 228 typedef enum e_elc_peripheral 229 { 230 ELC_PERIPHERAL_GPT_A = (0), 231 ELC_PERIPHERAL_GPT_B = (1), 232 ELC_PERIPHERAL_GPT_C = (2), 233 ELC_PERIPHERAL_GPT_D = (3), 234 ELC_PERIPHERAL_GPT_E = (4), 235 ELC_PERIPHERAL_GPT_F = (5), 236 ELC_PERIPHERAL_GPT_G = (6), 237 ELC_PERIPHERAL_GPT_H = (7), 238 ELC_PERIPHERAL_ADC0 = (8), 239 ELC_PERIPHERAL_ADC0_B = (9), 240 ELC_PERIPHERAL_DAC0 = (12), 241 ELC_PERIPHERAL_IOPORT1 = (14), 242 ELC_PERIPHERAL_IOPORT2 = (15), 243 ELC_PERIPHERAL_IOPORT3 = (16), 244 ELC_PERIPHERAL_IOPORT4 = (17), 245 ELC_PERIPHERAL_CTSU = (18) 246 } elc_peripheral_t; 247 248 /** Positions of event link set registers (ELSRs) available on this MCU */ 249 #define BSP_ELC_PERIPHERAL_MASK (0x0007D3FFU) 250 251 /* UNCRUSTIFY-ON */ 252 /** @} (end addtogroup BSP_MCU_RA4M1) */ 253 254 #endif 255