HPM SDK
HPMicro Software Development Kit
hpm_mcan_regs.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2025 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_MCAN_H
10 #define HPM_MCAN_H
11 
12 typedef struct {
13  __R uint8_t RESERVED0[4]; /* 0x0 - 0x3: Reserved */
14  __R uint32_t ENDN; /* 0x4: endian register */
15  __R uint8_t RESERVED1[4]; /* 0x8 - 0xB: Reserved */
16  __RW uint32_t DBTP; /* 0xC: data bit timing and prescaler, writeable when CCCR.CCE and CCCR.INT are set */
17  __RW uint32_t TEST; /* 0x10: test register */
18  __RW uint32_t RWD; /* 0x14: ram watchdog */
19  __RW uint32_t CCCR; /* 0x18: CC control register */
20  __RW uint32_t NBTP; /* 0x1C: nominal bit timing and prescaler register */
21  __RW uint32_t TSCC; /* 0x20: timestamp counter configuration */
22  __R uint32_t TSCV; /* 0x24: timestamp counter value */
23  __RW uint32_t TOCC; /* 0x28: timeout counter configuration */
24  __R uint32_t TOCV; /* 0x2C: timeout counter value */
25  __R uint8_t RESERVED2[16]; /* 0x30 - 0x3F: Reserved */
26  __R uint32_t ECR; /* 0x40: error counter register */
27  __R uint32_t PSR; /* 0x44: protocol status register */
28  __RW uint32_t TDCR; /* 0x48: transmitter delay compensation */
29  __R uint8_t RESERVED3[4]; /* 0x4C - 0x4F: Reserved */
30  __RW uint32_t IR; /* 0x50: interrupt register */
31  __RW uint32_t IE; /* 0x54: interrupt enable */
32  __RW uint32_t ILS; /* 0x58: interrupt line select */
33  __RW uint32_t ILE; /* 0x5C: interrupt line enable */
34  __R uint8_t RESERVED4[32]; /* 0x60 - 0x7F: Reserved */
35  __RW uint32_t GFC; /* 0x80: global filter configuration */
36  __RW uint32_t SIDFC; /* 0x84: standard ID filter configuration */
37  __RW uint32_t XIDFC; /* 0x88: extended ID filter configuration */
38  __R uint8_t RESERVED5[4]; /* 0x8C - 0x8F: Reserved */
39  __RW uint32_t XIDAM; /* 0x90: extended id and mask */
40  __R uint32_t HPMS; /* 0x94: high priority message status */
41  __RW uint32_t NDAT1; /* 0x98: new data1 */
42  __RW uint32_t NDAT2; /* 0x9C: new data2 */
43  __RW uint32_t RXF0C; /* 0xA0: rx fifo 0 configuration */
44  __R uint32_t RXF0S; /* 0xA4: rx fifo 0 status */
45  __RW uint32_t RXF0A; /* 0xA8: rx fifo0 acknowledge */
46  __RW uint32_t RXBC; /* 0xAC: rx buffer configuration */
47  __RW uint32_t RXF1C; /* 0xB0: rx fifo1 configuration */
48  __R uint32_t RXF1S; /* 0xB4: rx fifo1 status */
49  __RW uint32_t RXF1A; /* 0xB8: rx fifo 1 acknowledge */
50  __RW uint32_t RXESC; /* 0xBC: rx buffer/fifo element size configuration */
51  __RW uint32_t TXBC; /* 0xC0: tx buffer configuration */
52  __R uint32_t TXFQS; /* 0xC4: tx fifo/queue status */
53  __RW uint32_t TXESC; /* 0xC8: tx buffer element size configuration */
54  __R uint32_t TXBRP; /* 0xCC: tx buffer request pending */
55  __RW uint32_t TXBAR; /* 0xD0: tx buffer add request */
56  __RW uint32_t TXBCR; /* 0xD4: tx buffer cancellation request */
57  __R uint32_t TXBTO; /* 0xD8: tx buffer transmission occurred */
58  __R uint32_t TXBCF; /* 0xDC: tx buffer cancellation finished */
59  __RW uint32_t TXBTIE; /* 0xE0: tx buffer transmission interrupt enable */
60  __RW uint32_t TXBCIE; /* 0xE4: tx buffer cancellation finished interrupt enable */
61  __R uint8_t RESERVED6[8]; /* 0xE8 - 0xEF: Reserved */
62  __RW uint32_t TXEFC; /* 0xF0: tx event fifo configuration */
63  __R uint32_t TXEFS; /* 0xF4: tx event fifo status */
64  __RW uint32_t TXEFA; /* 0xF8: tx event fifo acknowledge */
65  __R uint8_t RESERVED7[260]; /* 0xFC - 0x1FF: Reserved */
66  __R uint32_t TS_SEL[16]; /* 0x200 - 0x23C: timestamp 0 */
67  __R uint32_t CREL; /* 0x240: core release register */
68  __RW uint32_t TSCFG; /* 0x244: timestamp configuration */
69  __R uint32_t TSS1; /* 0x248: timestamp status1 */
70  __R uint32_t TSS2; /* 0x24C: timestamp status2 */
71  __R uint32_t ATB; /* 0x250: actual timebase */
72  __R uint32_t ATBH; /* 0x254: actual timebase high */
73  __R uint8_t RESERVED8[424]; /* 0x258 - 0x3FF: Reserved */
74  __RW uint32_t GLB_CTL; /* 0x400: global control */
75  __R uint32_t GLB_STATUS; /* 0x404: global status */
76  __R uint8_t RESERVED9[4]; /* 0x408 - 0x40B: Reserved */
77 } MCAN_Type;
78 
79 
80 /* Bitfield definition for register: ENDN */
81 /*
82  * EVT (R)
83  *
84  * Endianness Test Value
85  * The endianness test value is 0x87654321.
86  */
87 #define MCAN_ENDN_EVT_MASK (0xFFFFFFFFUL)
88 #define MCAN_ENDN_EVT_SHIFT (0U)
89 #define MCAN_ENDN_EVT_GET(x) (((uint32_t)(x) & MCAN_ENDN_EVT_MASK) >> MCAN_ENDN_EVT_SHIFT)
90 
91 /* Bitfield definition for register: DBTP */
92 /*
93  * TDC (RW)
94  *
95  * transmitter delay compensation enable
96  * 0= Transmitter Delay Compensation disabled
97  * 1= Transmitter Delay Compensation enabled
98  */
99 #define MCAN_DBTP_TDC_MASK (0x800000UL)
100 #define MCAN_DBTP_TDC_SHIFT (23U)
101 #define MCAN_DBTP_TDC_SET(x) (((uint32_t)(x) << MCAN_DBTP_TDC_SHIFT) & MCAN_DBTP_TDC_MASK)
102 #define MCAN_DBTP_TDC_GET(x) (((uint32_t)(x) & MCAN_DBTP_TDC_MASK) >> MCAN_DBTP_TDC_SHIFT)
103 
104 /*
105  * DBRP (RW)
106  *
107  * Data Bit Rate Prescaler
108  * The value by which the oscillator frequency is divided for generating the bit time quanta. The bit time is built up from a multiple of this quanta. Valid values for the Bit Rate Prescaler are 0 to 31.
109  * When TDC = ‘1’, the range is limited to 0,1. The actual interpretation by the hardware of this value is such that one more than the value programmed here is used.
110  */
111 #define MCAN_DBTP_DBRP_MASK (0x1F0000UL)
112 #define MCAN_DBTP_DBRP_SHIFT (16U)
113 #define MCAN_DBTP_DBRP_SET(x) (((uint32_t)(x) << MCAN_DBTP_DBRP_SHIFT) & MCAN_DBTP_DBRP_MASK)
114 #define MCAN_DBTP_DBRP_GET(x) (((uint32_t)(x) & MCAN_DBTP_DBRP_MASK) >> MCAN_DBTP_DBRP_SHIFT)
115 
116 /*
117  * DTSEG1 (RW)
118  *
119  * Data time segment before sample point
120  * Valid values are 0 to 31. The actual interpretation by the hardware of this value is such that one more than the programmed value is used.
121  */
122 #define MCAN_DBTP_DTSEG1_MASK (0x1F00U)
123 #define MCAN_DBTP_DTSEG1_SHIFT (8U)
124 #define MCAN_DBTP_DTSEG1_SET(x) (((uint32_t)(x) << MCAN_DBTP_DTSEG1_SHIFT) & MCAN_DBTP_DTSEG1_MASK)
125 #define MCAN_DBTP_DTSEG1_GET(x) (((uint32_t)(x) & MCAN_DBTP_DTSEG1_MASK) >> MCAN_DBTP_DTSEG1_SHIFT)
126 
127 /*
128  * DTSEG2 (RW)
129  *
130  * Data time segment after sample point
131  * Valid values are 0 to 15. The actual interpretation by the hardware of this value is such that one more than the programmed value is used.
132  */
133 #define MCAN_DBTP_DTSEG2_MASK (0xF0U)
134 #define MCAN_DBTP_DTSEG2_SHIFT (4U)
135 #define MCAN_DBTP_DTSEG2_SET(x) (((uint32_t)(x) << MCAN_DBTP_DTSEG2_SHIFT) & MCAN_DBTP_DTSEG2_MASK)
136 #define MCAN_DBTP_DTSEG2_GET(x) (((uint32_t)(x) & MCAN_DBTP_DTSEG2_MASK) >> MCAN_DBTP_DTSEG2_SHIFT)
137 
138 /*
139  * DSJW (RW)
140  *
141  * Data (Re)Synchronization Jump Width
142  * Valid values are 0 to 15. The actual interpretation by the hardware of this value is such that one more than the value programmed here is used.
143  */
144 #define MCAN_DBTP_DSJW_MASK (0xFU)
145 #define MCAN_DBTP_DSJW_SHIFT (0U)
146 #define MCAN_DBTP_DSJW_SET(x) (((uint32_t)(x) << MCAN_DBTP_DSJW_SHIFT) & MCAN_DBTP_DSJW_MASK)
147 #define MCAN_DBTP_DSJW_GET(x) (((uint32_t)(x) & MCAN_DBTP_DSJW_MASK) >> MCAN_DBTP_DSJW_SHIFT)
148 
149 /* Bitfield definition for register: TEST */
150 /*
151  * SVAL (R)
152  *
153  * Started Valid
154  * 0= Value of TXBNS not valid
155  * 1= Value of TXBNS valid
156  */
157 #define MCAN_TEST_SVAL_MASK (0x200000UL)
158 #define MCAN_TEST_SVAL_SHIFT (21U)
159 #define MCAN_TEST_SVAL_GET(x) (((uint32_t)(x) & MCAN_TEST_SVAL_MASK) >> MCAN_TEST_SVAL_SHIFT)
160 
161 /*
162  * TXBNS (R)
163  *
164  * Tx Buffer Number Started
165  * Tx Buffer number of message whose transmission was started last. Valid when SVAL is set. Valid values are 0 to 31.
166  */
167 #define MCAN_TEST_TXBNS_MASK (0x1F0000UL)
168 #define MCAN_TEST_TXBNS_SHIFT (16U)
169 #define MCAN_TEST_TXBNS_GET(x) (((uint32_t)(x) & MCAN_TEST_TXBNS_MASK) >> MCAN_TEST_TXBNS_SHIFT)
170 
171 /*
172  * PVAL (R)
173  *
174  * Prepared Valid
175  * 0= Value of TXBNP not valid
176  * 1= Value of TXBNP valid
177  */
178 #define MCAN_TEST_PVAL_MASK (0x2000U)
179 #define MCAN_TEST_PVAL_SHIFT (13U)
180 #define MCAN_TEST_PVAL_GET(x) (((uint32_t)(x) & MCAN_TEST_PVAL_MASK) >> MCAN_TEST_PVAL_SHIFT)
181 
182 /*
183  * TXBNP (R)
184  *
185  * Tx Buffer Number Prepared
186  * Tx Buffer number of message that is ready for transmission. Valid when PVAL is set.Valid values are 0 to 31.
187  */
188 #define MCAN_TEST_TXBNP_MASK (0x1F00U)
189 #define MCAN_TEST_TXBNP_SHIFT (8U)
190 #define MCAN_TEST_TXBNP_GET(x) (((uint32_t)(x) & MCAN_TEST_TXBNP_MASK) >> MCAN_TEST_TXBNP_SHIFT)
191 
192 /*
193  * RX (R)
194  *
195  * Receive Pin
196  * Monitors the actual value of pin m_can_rx
197  * 0= The CAN bus is dominant (m_can_rx = ‘0’)
198  * 1= The CAN bus is recessive (m_can_rx = ‘1’)
199  */
200 #define MCAN_TEST_RX_MASK (0x80U)
201 #define MCAN_TEST_RX_SHIFT (7U)
202 #define MCAN_TEST_RX_GET(x) (((uint32_t)(x) & MCAN_TEST_RX_MASK) >> MCAN_TEST_RX_SHIFT)
203 
204 /*
205  * TX (RW)
206  *
207  * Control of Transmit Pin
208  * 00 Reset value, m_can_tx controlled by the CAN Core, updated at the end of the CAN bit time
209  * 01 Sample Point can be monitored at pin m_can_tx
210  * 10 Dominant (‘0’) level at pin m_can_tx
211  * 11 Recessive (‘1’) at pin m_can_tx
212  */
213 #define MCAN_TEST_TX_MASK (0x60U)
214 #define MCAN_TEST_TX_SHIFT (5U)
215 #define MCAN_TEST_TX_SET(x) (((uint32_t)(x) << MCAN_TEST_TX_SHIFT) & MCAN_TEST_TX_MASK)
216 #define MCAN_TEST_TX_GET(x) (((uint32_t)(x) & MCAN_TEST_TX_MASK) >> MCAN_TEST_TX_SHIFT)
217 
218 /*
219  * LBCK (RW)
220  *
221  * Loop Back Mode
222  * 0= Reset value, Loop Back Mode is disabled
223  * 1= Loop Back Mode is enabled
224  */
225 #define MCAN_TEST_LBCK_MASK (0x10U)
226 #define MCAN_TEST_LBCK_SHIFT (4U)
227 #define MCAN_TEST_LBCK_SET(x) (((uint32_t)(x) << MCAN_TEST_LBCK_SHIFT) & MCAN_TEST_LBCK_MASK)
228 #define MCAN_TEST_LBCK_GET(x) (((uint32_t)(x) & MCAN_TEST_LBCK_MASK) >> MCAN_TEST_LBCK_SHIFT)
229 
230 /* Bitfield definition for register: RWD */
231 /*
232  * WDV (R)
233  *
234  * Watchdog Value
235  * Actual Message RAM Watchdog Counter Value.
236  */
237 #define MCAN_RWD_WDV_MASK (0xFF00U)
238 #define MCAN_RWD_WDV_SHIFT (8U)
239 #define MCAN_RWD_WDV_GET(x) (((uint32_t)(x) & MCAN_RWD_WDV_MASK) >> MCAN_RWD_WDV_SHIFT)
240 
241 /*
242  * WDC (RW)
243  *
244  * Watchdog Configuration
245  * Start value of the Message RAM Watchdog Counter. With the reset value of “00” the counter is disabled.
246  */
247 #define MCAN_RWD_WDC_MASK (0xFFU)
248 #define MCAN_RWD_WDC_SHIFT (0U)
249 #define MCAN_RWD_WDC_SET(x) (((uint32_t)(x) << MCAN_RWD_WDC_SHIFT) & MCAN_RWD_WDC_MASK)
250 #define MCAN_RWD_WDC_GET(x) (((uint32_t)(x) & MCAN_RWD_WDC_MASK) >> MCAN_RWD_WDC_SHIFT)
251 
252 /* Bitfield definition for register: CCCR */
253 /*
254  * NISO (RW)
255  *
256  * Non ISO Operation
257  * If this bit is set, the M_CAN uses the CAN FD frame format as specified by the Bosch CAN FD
258  * Specification V1.0.
259  * 0= CAN FD frame format according to ISO 11898-1:2015
260  * 1= CAN FD frame format according to Bosch CAN FD Specification V1.0
261  * Note: When the generic parameter iso_only_g is set to ‘1’ in hardware synthesis, this bit becomes reserved and is read as ‘0’. The M_CAN always operates with the CAN FD frame format according to ISO 11898-1:2015.
262  */
263 #define MCAN_CCCR_NISO_MASK (0x8000U)
264 #define MCAN_CCCR_NISO_SHIFT (15U)
265 #define MCAN_CCCR_NISO_SET(x) (((uint32_t)(x) << MCAN_CCCR_NISO_SHIFT) & MCAN_CCCR_NISO_MASK)
266 #define MCAN_CCCR_NISO_GET(x) (((uint32_t)(x) & MCAN_CCCR_NISO_MASK) >> MCAN_CCCR_NISO_SHIFT)
267 
268 /*
269  * TXP (RW)
270  *
271  * Transmit Pause
272  * If this bit is set, the M_CAN pauses for two CAN bit times before starting the next transmission after
273  * itself has successfully transmitted a frame (see Section 3.5).
274  * 0= Transmit pause disabled
275  * 1= Transmit pause enabled
276  */
277 #define MCAN_CCCR_TXP_MASK (0x4000U)
278 #define MCAN_CCCR_TXP_SHIFT (14U)
279 #define MCAN_CCCR_TXP_SET(x) (((uint32_t)(x) << MCAN_CCCR_TXP_SHIFT) & MCAN_CCCR_TXP_MASK)
280 #define MCAN_CCCR_TXP_GET(x) (((uint32_t)(x) & MCAN_CCCR_TXP_MASK) >> MCAN_CCCR_TXP_SHIFT)
281 
282 /*
283  * EFBI (RW)
284  *
285  * Edge Filtering during Bus Integration
286  * 0= Edge filtering disabled
287  * 1= Two consecutive dominant tq required to detect an edge for hard synchronization
288  */
289 #define MCAN_CCCR_EFBI_MASK (0x2000U)
290 #define MCAN_CCCR_EFBI_SHIFT (13U)
291 #define MCAN_CCCR_EFBI_SET(x) (((uint32_t)(x) << MCAN_CCCR_EFBI_SHIFT) & MCAN_CCCR_EFBI_MASK)
292 #define MCAN_CCCR_EFBI_GET(x) (((uint32_t)(x) & MCAN_CCCR_EFBI_MASK) >> MCAN_CCCR_EFBI_SHIFT)
293 
294 /*
295  * PXHD (RW)
296  *
297  * Protocol Exception Handling Disable
298  * 0= Protocol exception handling enabled
299  * 1= Protocol exception handling disabled
300  * Note: When protocol exception handling is disabled, the M_CAN will transmit an error frame when it detects a protocol exception condition.
301  */
302 #define MCAN_CCCR_PXHD_MASK (0x1000U)
303 #define MCAN_CCCR_PXHD_SHIFT (12U)
304 #define MCAN_CCCR_PXHD_SET(x) (((uint32_t)(x) << MCAN_CCCR_PXHD_SHIFT) & MCAN_CCCR_PXHD_MASK)
305 #define MCAN_CCCR_PXHD_GET(x) (((uint32_t)(x) & MCAN_CCCR_PXHD_MASK) >> MCAN_CCCR_PXHD_SHIFT)
306 
307 /*
308  * WMM (RW)
309  *
310  * Wide Message Marker
311  * Enables the use of 16-bit Wide Message Markers. When 16-bit Wide Message Markers are used (WMM = ‘1’), 16-bit internal timestamping is disabled for the Tx Event FIFO.
312  * 0= 8-bit Message Marker used
313  * 1= 16-bit Message Marker used, replacing 16-bit timestamps in Tx Event FIFO
314  */
315 #define MCAN_CCCR_WMM_MASK (0x800U)
316 #define MCAN_CCCR_WMM_SHIFT (11U)
317 #define MCAN_CCCR_WMM_SET(x) (((uint32_t)(x) << MCAN_CCCR_WMM_SHIFT) & MCAN_CCCR_WMM_MASK)
318 #define MCAN_CCCR_WMM_GET(x) (((uint32_t)(x) & MCAN_CCCR_WMM_MASK) >> MCAN_CCCR_WMM_SHIFT)
319 
320 /*
321  * UTSU (RW)
322  *
323  * Use Timestamping Unit
324  * When UTSU is set, 16-bit Wide Message Markers are also enabled regardless of the value of WMM.
325  * 0= Internal time stamping
326  * 1= External time stamping by TSU
327  * Note: When generic parameter connected_tsu_g = ‘0’, there is no TSU connected to the M_CAN.
328  * In this case bit UTSU is fixed to zero by synthesis.
329  */
330 #define MCAN_CCCR_UTSU_MASK (0x400U)
331 #define MCAN_CCCR_UTSU_SHIFT (10U)
332 #define MCAN_CCCR_UTSU_SET(x) (((uint32_t)(x) << MCAN_CCCR_UTSU_SHIFT) & MCAN_CCCR_UTSU_MASK)
333 #define MCAN_CCCR_UTSU_GET(x) (((uint32_t)(x) & MCAN_CCCR_UTSU_MASK) >> MCAN_CCCR_UTSU_SHIFT)
334 
335 /*
336  * BRSE (RW)
337  *
338  * Bit Rate Switch Enable
339  * 0= Bit rate switching for transmissions disabled
340  * 1= Bit rate switching for transmissions enabled
341  * Note: When CAN FD operation is disabled FDOE = ‘0’, BRSE is not evaluated.
342  */
343 #define MCAN_CCCR_BRSE_MASK (0x200U)
344 #define MCAN_CCCR_BRSE_SHIFT (9U)
345 #define MCAN_CCCR_BRSE_SET(x) (((uint32_t)(x) << MCAN_CCCR_BRSE_SHIFT) & MCAN_CCCR_BRSE_MASK)
346 #define MCAN_CCCR_BRSE_GET(x) (((uint32_t)(x) & MCAN_CCCR_BRSE_MASK) >> MCAN_CCCR_BRSE_SHIFT)
347 
348 /*
349  * FDOE (RW)
350  *
351  * FD Operation Enable
352  * 0= FD operation disabled
353  * 1= FD operation enabled
354  */
355 #define MCAN_CCCR_FDOE_MASK (0x100U)
356 #define MCAN_CCCR_FDOE_SHIFT (8U)
357 #define MCAN_CCCR_FDOE_SET(x) (((uint32_t)(x) << MCAN_CCCR_FDOE_SHIFT) & MCAN_CCCR_FDOE_MASK)
358 #define MCAN_CCCR_FDOE_GET(x) (((uint32_t)(x) & MCAN_CCCR_FDOE_MASK) >> MCAN_CCCR_FDOE_SHIFT)
359 
360 /*
361  * TEST (RW)
362  *
363  * Test Mode Enable
364  * 0= Normal operation, register TEST holds reset values
365  * 1= Test Mode, write access to register TEST enabled
366  */
367 #define MCAN_CCCR_TEST_MASK (0x80U)
368 #define MCAN_CCCR_TEST_SHIFT (7U)
369 #define MCAN_CCCR_TEST_SET(x) (((uint32_t)(x) << MCAN_CCCR_TEST_SHIFT) & MCAN_CCCR_TEST_MASK)
370 #define MCAN_CCCR_TEST_GET(x) (((uint32_t)(x) & MCAN_CCCR_TEST_MASK) >> MCAN_CCCR_TEST_SHIFT)
371 
372 /*
373  * DAR (RW)
374  *
375  * Disable Automatic Retransmission
376  * 0= Automatic retransmission of messages not transmitted successfully enabled
377  * 1= Automatic retransmission disabled
378  */
379 #define MCAN_CCCR_DAR_MASK (0x40U)
380 #define MCAN_CCCR_DAR_SHIFT (6U)
381 #define MCAN_CCCR_DAR_SET(x) (((uint32_t)(x) << MCAN_CCCR_DAR_SHIFT) & MCAN_CCCR_DAR_MASK)
382 #define MCAN_CCCR_DAR_GET(x) (((uint32_t)(x) & MCAN_CCCR_DAR_MASK) >> MCAN_CCCR_DAR_SHIFT)
383 
384 /*
385  * MON (RW)
386  *
387  * Bus Monitoring Mode
388  * Bit MON can only be set by the Host when both CCE and INIT are set to ‘1’. The bit can be reset by the Host at any time.
389  * 0= Bus Monitoring Mode is disabled
390  * 1= Bus Monitoring Mode is enabled
391  */
392 #define MCAN_CCCR_MON_MASK (0x20U)
393 #define MCAN_CCCR_MON_SHIFT (5U)
394 #define MCAN_CCCR_MON_SET(x) (((uint32_t)(x) << MCAN_CCCR_MON_SHIFT) & MCAN_CCCR_MON_MASK)
395 #define MCAN_CCCR_MON_GET(x) (((uint32_t)(x) & MCAN_CCCR_MON_MASK) >> MCAN_CCCR_MON_SHIFT)
396 
397 /*
398  * CSR (RW)
399  *
400  * Clock Stop Request
401  * 0= No clock stop is requested
402  * 1= Clock stop requested. When clock stop is requested, first INIT and then CSA will be set after all pending transfer requests have been completed and the CAN bus reached idle.
403  */
404 #define MCAN_CCCR_CSR_MASK (0x10U)
405 #define MCAN_CCCR_CSR_SHIFT (4U)
406 #define MCAN_CCCR_CSR_SET(x) (((uint32_t)(x) << MCAN_CCCR_CSR_SHIFT) & MCAN_CCCR_CSR_MASK)
407 #define MCAN_CCCR_CSR_GET(x) (((uint32_t)(x) & MCAN_CCCR_CSR_MASK) >> MCAN_CCCR_CSR_SHIFT)
408 
409 /*
410  * CSA (R)
411  *
412  * Clock Stop Acknowledge
413  * 0= No clock stop acknowledged
414  * 1= M_CAN may be set in power down by stopping m_can_hclk and m_can_cclk
415  */
416 #define MCAN_CCCR_CSA_MASK (0x8U)
417 #define MCAN_CCCR_CSA_SHIFT (3U)
418 #define MCAN_CCCR_CSA_GET(x) (((uint32_t)(x) & MCAN_CCCR_CSA_MASK) >> MCAN_CCCR_CSA_SHIFT)
419 
420 /*
421  * ASM (RW)
422  *
423  * Restricted Operation Mode
424  * Bit ASM can only be set by the Host when both CCE and INIT are set to ‘1’. The bit can be reset by the Host at any time. For a description of the Restricted Operation Mode see Section 3.1.5.
425  * 0= Normal CAN operation
426  * 1= Restricted Operation Mode active
427  */
428 #define MCAN_CCCR_ASM_MASK (0x4U)
429 #define MCAN_CCCR_ASM_SHIFT (2U)
430 #define MCAN_CCCR_ASM_SET(x) (((uint32_t)(x) << MCAN_CCCR_ASM_SHIFT) & MCAN_CCCR_ASM_MASK)
431 #define MCAN_CCCR_ASM_GET(x) (((uint32_t)(x) & MCAN_CCCR_ASM_MASK) >> MCAN_CCCR_ASM_SHIFT)
432 
433 /*
434  * CCE (RW)
435  *
436  * Configuration Change Enable
437  * 0= The CPU has no write access to the protected configuration registers
438  * 1= The CPU has write access to the protected configuration registers (while CCCR.INIT = ‘1’)
439  */
440 #define MCAN_CCCR_CCE_MASK (0x2U)
441 #define MCAN_CCCR_CCE_SHIFT (1U)
442 #define MCAN_CCCR_CCE_SET(x) (((uint32_t)(x) << MCAN_CCCR_CCE_SHIFT) & MCAN_CCCR_CCE_MASK)
443 #define MCAN_CCCR_CCE_GET(x) (((uint32_t)(x) & MCAN_CCCR_CCE_MASK) >> MCAN_CCCR_CCE_SHIFT)
444 
445 /*
446  * INIT (RW)
447  *
448  * Initialization
449  * 0= Normal Operation
450  * 1= Initialization is started
451  */
452 #define MCAN_CCCR_INIT_MASK (0x1U)
453 #define MCAN_CCCR_INIT_SHIFT (0U)
454 #define MCAN_CCCR_INIT_SET(x) (((uint32_t)(x) << MCAN_CCCR_INIT_SHIFT) & MCAN_CCCR_INIT_MASK)
455 #define MCAN_CCCR_INIT_GET(x) (((uint32_t)(x) & MCAN_CCCR_INIT_MASK) >> MCAN_CCCR_INIT_SHIFT)
456 
457 /* Bitfield definition for register: NBTP */
458 /*
459  * NSJW (RW)
460  *
461  * Nominal (Re)Synchronization Jump Width
462  * Valid values are 0 to 127. The actual interpretation by the hardware of this value is such that one more than the value programmed here is used.
463  */
464 #define MCAN_NBTP_NSJW_MASK (0xFE000000UL)
465 #define MCAN_NBTP_NSJW_SHIFT (25U)
466 #define MCAN_NBTP_NSJW_SET(x) (((uint32_t)(x) << MCAN_NBTP_NSJW_SHIFT) & MCAN_NBTP_NSJW_MASK)
467 #define MCAN_NBTP_NSJW_GET(x) (((uint32_t)(x) & MCAN_NBTP_NSJW_MASK) >> MCAN_NBTP_NSJW_SHIFT)
468 
469 /*
470  * NBRP (RW)
471  *
472  * Nominal Bit Rate Prescaler
473  * The value by which the oscillator frequency is divided for generating the bit time quanta. The bit time is built up from a multiple of this quanta. Valid values for the Bit Rate Prescaler are 0 to 511. The actual interpretation by the hardware of this value is
474  * such that one more than the value programmed here is used.
475  */
476 #define MCAN_NBTP_NBRP_MASK (0x1FF0000UL)
477 #define MCAN_NBTP_NBRP_SHIFT (16U)
478 #define MCAN_NBTP_NBRP_SET(x) (((uint32_t)(x) << MCAN_NBTP_NBRP_SHIFT) & MCAN_NBTP_NBRP_MASK)
479 #define MCAN_NBTP_NBRP_GET(x) (((uint32_t)(x) & MCAN_NBTP_NBRP_MASK) >> MCAN_NBTP_NBRP_SHIFT)
480 
481 /*
482  * NTSEG1 (RW)
483  *
484  * Nominal Time segment before sample point
485  * Valid values are 1 to 255. The actual interpretation by the hardware of this value is such that one more than the programmed value is used.
486  */
487 #define MCAN_NBTP_NTSEG1_MASK (0xFF00U)
488 #define MCAN_NBTP_NTSEG1_SHIFT (8U)
489 #define MCAN_NBTP_NTSEG1_SET(x) (((uint32_t)(x) << MCAN_NBTP_NTSEG1_SHIFT) & MCAN_NBTP_NTSEG1_MASK)
490 #define MCAN_NBTP_NTSEG1_GET(x) (((uint32_t)(x) & MCAN_NBTP_NTSEG1_MASK) >> MCAN_NBTP_NTSEG1_SHIFT)
491 
492 /*
493  * NTSEG2 (RW)
494  *
495  * Nominal Time segment after sample point
496  * Valid values are 1 to 127. The actual interpretation by the hardware of this value is such that one more than the programmed value is used.
497  */
498 #define MCAN_NBTP_NTSEG2_MASK (0x7FU)
499 #define MCAN_NBTP_NTSEG2_SHIFT (0U)
500 #define MCAN_NBTP_NTSEG2_SET(x) (((uint32_t)(x) << MCAN_NBTP_NTSEG2_SHIFT) & MCAN_NBTP_NTSEG2_MASK)
501 #define MCAN_NBTP_NTSEG2_GET(x) (((uint32_t)(x) & MCAN_NBTP_NTSEG2_MASK) >> MCAN_NBTP_NTSEG2_SHIFT)
502 
503 /* Bitfield definition for register: TSCC */
504 /*
505  * TCP (RW)
506  *
507  * Timestamp Counter Prescaler
508  * Configures the timestamp and timeout counters time unit in multiples of CAN bit times [1…16]. The actual interpretation by the hardware of this value is such that one more than the value programmed here is used.
509  */
510 #define MCAN_TSCC_TCP_MASK (0xF0000UL)
511 #define MCAN_TSCC_TCP_SHIFT (16U)
512 #define MCAN_TSCC_TCP_SET(x) (((uint32_t)(x) << MCAN_TSCC_TCP_SHIFT) & MCAN_TSCC_TCP_MASK)
513 #define MCAN_TSCC_TCP_GET(x) (((uint32_t)(x) & MCAN_TSCC_TCP_MASK) >> MCAN_TSCC_TCP_SHIFT)
514 
515 /*
516  * TSS (RW)
517  *
518  * timestamp Select
519  * 00= Timestamp counter value always 0x0000
520  * 01= Timestamp counter value incremented according to TCP
521  * 10= External timestamp counter value used
522  * 11= Same as “00”
523  */
524 #define MCAN_TSCC_TSS_MASK (0x3U)
525 #define MCAN_TSCC_TSS_SHIFT (0U)
526 #define MCAN_TSCC_TSS_SET(x) (((uint32_t)(x) << MCAN_TSCC_TSS_SHIFT) & MCAN_TSCC_TSS_MASK)
527 #define MCAN_TSCC_TSS_GET(x) (((uint32_t)(x) & MCAN_TSCC_TSS_MASK) >> MCAN_TSCC_TSS_SHIFT)
528 
529 /* Bitfield definition for register: TSCV */
530 /*
531  * TSC (RC)
532  *
533  * Timestamp Counter
534  * The internal/external Timestamp Counter value is captured on start of frame (both Rx and Tx).When TSCC.TSS = “01”, the Timestamp Counter is incremented in multiples of CAN bit times [1…16] depending on the configuration of TSCC.TCP.
535  * A wrap around sets interrupt flag IR.TSW. Write access resets the counter to zero. When TSCC.TSS = “10”, TSC reflects the external Timestamp Counter value. A write access has no impact.
536  */
537 #define MCAN_TSCV_TSC_MASK (0xFFFFU)
538 #define MCAN_TSCV_TSC_SHIFT (0U)
539 #define MCAN_TSCV_TSC_GET(x) (((uint32_t)(x) & MCAN_TSCV_TSC_MASK) >> MCAN_TSCV_TSC_SHIFT)
540 
541 /* Bitfield definition for register: TOCC */
542 /*
543  * TOP (RW)
544  *
545  * Timeout Period
546  * Start value of the Timeout Counter (down-counter). Configures the Timeout Period.
547  */
548 #define MCAN_TOCC_TOP_MASK (0xFFFF0000UL)
549 #define MCAN_TOCC_TOP_SHIFT (16U)
550 #define MCAN_TOCC_TOP_SET(x) (((uint32_t)(x) << MCAN_TOCC_TOP_SHIFT) & MCAN_TOCC_TOP_MASK)
551 #define MCAN_TOCC_TOP_GET(x) (((uint32_t)(x) & MCAN_TOCC_TOP_MASK) >> MCAN_TOCC_TOP_SHIFT)
552 
553 /*
554  * TOS (RW)
555  *
556  * Timeout Select
557  * When operating in Continuous mode, a write to TOCV presets the counter to the value configured by TOCC.TOP and continues down-counting.
558  * When the Timeout Counter is controlled by one of the FIFOs, an empty FIFO presets the counter to the value configured by TOCC.TOP. Down-counting is started when the first FIFO element is stored.
559  * 00= Continuous operation
560  * 01= Timeout controlled by Tx Event FIFO
561  * 10= Timeout controlled by Rx FIFO 0
562  * 11= Timeout controlled by Rx FIFO 1
563  */
564 #define MCAN_TOCC_TOS_MASK (0x6U)
565 #define MCAN_TOCC_TOS_SHIFT (1U)
566 #define MCAN_TOCC_TOS_SET(x) (((uint32_t)(x) << MCAN_TOCC_TOS_SHIFT) & MCAN_TOCC_TOS_MASK)
567 #define MCAN_TOCC_TOS_GET(x) (((uint32_t)(x) & MCAN_TOCC_TOS_MASK) >> MCAN_TOCC_TOS_SHIFT)
568 
569 /*
570  * RP (RW)
571  *
572  * Enable Timeout Counter
573  * 0= Timeout Counter disabled
574  * 1= Timeout Counter enabled
575  */
576 #define MCAN_TOCC_RP_MASK (0x1U)
577 #define MCAN_TOCC_RP_SHIFT (0U)
578 #define MCAN_TOCC_RP_SET(x) (((uint32_t)(x) << MCAN_TOCC_RP_SHIFT) & MCAN_TOCC_RP_MASK)
579 #define MCAN_TOCC_RP_GET(x) (((uint32_t)(x) & MCAN_TOCC_RP_MASK) >> MCAN_TOCC_RP_SHIFT)
580 
581 /* Bitfield definition for register: TOCV */
582 /*
583  * TOC (RC)
584  *
585  * Timeout Counter
586  * The Timeout Counter is decremented in multiples of CAN bit times [1…16] depending on the configuration of TSCC.TCP.
587  * When decremented to zero, interrupt flag IR.TOO is set and the Timeout Counter is stopped. Start and reset/restart conditions are configured via TOCC.TOS.
588  * Note: Byte access: when TOCC.TOS = “00,writing one of the register bytes 3/2/1/0 will preset the Timeout Counter.
589  */
590 #define MCAN_TOCV_TOC_MASK (0xFFFFU)
591 #define MCAN_TOCV_TOC_SHIFT (0U)
592 #define MCAN_TOCV_TOC_GET(x) (((uint32_t)(x) & MCAN_TOCV_TOC_MASK) >> MCAN_TOCV_TOC_SHIFT)
593 
594 /* Bitfield definition for register: ECR */
595 /*
596  * CEL (X)
597  *
598  * CAN Error Logging
599  * The counter is incremented each time when a CAN protocol error causes the 8-bit Transmit Error Counter TEC or the 7-bit Receive Error Counter REC to be incremented.
600  * The counter is also incremented when the Bus_Off limit is reached. It is not incremented when only RP is set without changing REC. The increment of CEL follows after the increment of REC or TEC.
601  * The counter is reset by read access to CEL. The counter stops at 0xFF; the next increment of TEC or REC sets interrupt flag IR.ELO.
602  * Note: Byte access: Reading byte 2 will reset CEL to zero, reading bytes 3/1/0 has no impact.
603  */
604 #define MCAN_ECR_CEL_MASK (0xFF0000UL)
605 #define MCAN_ECR_CEL_SHIFT (16U)
606 #define MCAN_ECR_CEL_GET(x) (((uint32_t)(x) & MCAN_ECR_CEL_MASK) >> MCAN_ECR_CEL_SHIFT)
607 
608 /*
609  * RP (R)
610  *
611  * Receive Error Passive
612  * 0= The Receive Error Counter is below the error passive level of 128
613  * 1= The Receive Error Counter has reached the error passive level of 128
614  */
615 #define MCAN_ECR_RP_MASK (0x8000U)
616 #define MCAN_ECR_RP_SHIFT (15U)
617 #define MCAN_ECR_RP_GET(x) (((uint32_t)(x) & MCAN_ECR_RP_MASK) >> MCAN_ECR_RP_SHIFT)
618 
619 /*
620  * REC (R)
621  *
622  * Receive Error Counter
623  * Actual state of the Receive Error Counter, values between 0 and 127
624  */
625 #define MCAN_ECR_REC_MASK (0x7F00U)
626 #define MCAN_ECR_REC_SHIFT (8U)
627 #define MCAN_ECR_REC_GET(x) (((uint32_t)(x) & MCAN_ECR_REC_MASK) >> MCAN_ECR_REC_SHIFT)
628 
629 /*
630  * TEC (R)
631  *
632  * Transmit Error Counter
633  * Actual state of the Transmit Error Counter, values between 0 and 255
634  * Note: When CCCR.ASM is set, the CAN protocol controller does not increment TEC and REC when a CAN protocol error is detected, but CEL is still incremented.
635  */
636 #define MCAN_ECR_TEC_MASK (0xFFU)
637 #define MCAN_ECR_TEC_SHIFT (0U)
638 #define MCAN_ECR_TEC_GET(x) (((uint32_t)(x) & MCAN_ECR_TEC_MASK) >> MCAN_ECR_TEC_SHIFT)
639 
640 /* Bitfield definition for register: PSR */
641 /*
642  * TDCV (R)
643  *
644  * Transmitter Delay Compensation Value
645  * Position of the secondary sample point, defined by the sum of the measured delay from m_can_tx to m_can_rx and TDCR.TDCO.
646  * The SSP position is, in the data phase, the number of mtq between the start of the transmitted bit and the secondary sample point. Valid values are 0 to 127 mtq.
647  */
648 #define MCAN_PSR_TDCV_MASK (0x7F0000UL)
649 #define MCAN_PSR_TDCV_SHIFT (16U)
650 #define MCAN_PSR_TDCV_GET(x) (((uint32_t)(x) & MCAN_PSR_TDCV_MASK) >> MCAN_PSR_TDCV_SHIFT)
651 
652 /*
653  * PXE (X)
654  *
655  * Protocol Exception Event
656  * 0= No protocol exception event occurred since last read access
657  * 1= Protocol exception event occurred
658  * Note: Byte access: Reading byte 0 will reset PXE, reading bytes 3/2/1 has no impact.
659  */
660 #define MCAN_PSR_PXE_MASK (0x4000U)
661 #define MCAN_PSR_PXE_SHIFT (14U)
662 #define MCAN_PSR_PXE_GET(x) (((uint32_t)(x) & MCAN_PSR_PXE_MASK) >> MCAN_PSR_PXE_SHIFT)
663 
664 /*
665  * RFDF (X)
666  *
667  * Received a CAN FD Message
668  * This bit is set independent of acceptance filtering.
669  * 0= Since this bit was reset by the CPU, no CAN FD message has been received
670  * 1= Message in CAN FD format with FDF flag set has been received
671  * Note: Byte access: Reading byte 0 will reset RFDF, reading bytes 3/2/1 has no impact.
672  */
673 #define MCAN_PSR_RFDF_MASK (0x2000U)
674 #define MCAN_PSR_RFDF_SHIFT (13U)
675 #define MCAN_PSR_RFDF_GET(x) (((uint32_t)(x) & MCAN_PSR_RFDF_MASK) >> MCAN_PSR_RFDF_SHIFT)
676 
677 /*
678  * RBRS (X)
679  *
680  * BRS flag of last received CAN FD Message
681  * This bit is set together with RFDF, independent of acceptance filtering.
682  * 0= Last received CAN FD message did not have its BRS flag set
683  * 1= Last received CAN FD message had its BRS flag set
684  * Note: Byte access: Reading byte 0 will reset RBRS, reading bytes 3/2/1 has no impact.
685  */
686 #define MCAN_PSR_RBRS_MASK (0x1000U)
687 #define MCAN_PSR_RBRS_SHIFT (12U)
688 #define MCAN_PSR_RBRS_GET(x) (((uint32_t)(x) & MCAN_PSR_RBRS_MASK) >> MCAN_PSR_RBRS_SHIFT)
689 
690 /*
691  * RESI (X)
692  *
693  * ESI flag of last received CAN FD Message
694  * This bit is set together with RFDF, independent of acceptance filtering.
695  * 0= Last received CAN FD message did not have its ESI flag set
696  * 1= Last received CAN FD message had its ESI flag set
697  * Note: Byte access: Reading byte 0 will reset RESI, reading bytes 3/2/1 has no impact.
698  */
699 #define MCAN_PSR_RESI_MASK (0x800U)
700 #define MCAN_PSR_RESI_SHIFT (11U)
701 #define MCAN_PSR_RESI_GET(x) (((uint32_t)(x) & MCAN_PSR_RESI_MASK) >> MCAN_PSR_RESI_SHIFT)
702 
703 /*
704  * DLEC (S)
705  *
706  * Data Phase Last Error Code
707  * Type of last error that occurred in the data phase of a CAN FD format frame with its BRS flag set.Coding is the same as for LEC. This field will be cleared to zero when a CAN FD format frame with
708  * its BRS flag set has been transferred (reception or transmission) without error.
709  * Note: Byte access: Reading byte 0 will set DLEC to “111”, reading bytes 3/2/1 has no impact.
710  */
711 #define MCAN_PSR_DLEC_MASK (0x700U)
712 #define MCAN_PSR_DLEC_SHIFT (8U)
713 #define MCAN_PSR_DLEC_GET(x) (((uint32_t)(x) & MCAN_PSR_DLEC_MASK) >> MCAN_PSR_DLEC_SHIFT)
714 
715 /*
716  * BO (R)
717  *
718  * Bus_Off Status
719  * 0= The M_CAN is not Bus_Off
720  * 1= The M_CAN is in Bus_Off state
721  */
722 #define MCAN_PSR_BO_MASK (0x80U)
723 #define MCAN_PSR_BO_SHIFT (7U)
724 #define MCAN_PSR_BO_GET(x) (((uint32_t)(x) & MCAN_PSR_BO_MASK) >> MCAN_PSR_BO_SHIFT)
725 
726 /*
727  * EW (R)
728  *
729  * Warning Status
730  * 0= Both error counters are below the Error_Warning limit of 96
731  * 1= At least one of error counter has reached the Error_Warning limit of 96
732  */
733 #define MCAN_PSR_EW_MASK (0x40U)
734 #define MCAN_PSR_EW_SHIFT (6U)
735 #define MCAN_PSR_EW_GET(x) (((uint32_t)(x) & MCAN_PSR_EW_MASK) >> MCAN_PSR_EW_SHIFT)
736 
737 /*
738  * EP (R)
739  *
740  * Error Passive
741  * 0= The M_CAN is in the Error_Active state. It normally takes part in bus communication and sends an active error flag when an error has been detected
742  * 1= The M_CAN is in the Error_Passive state
743  */
744 #define MCAN_PSR_EP_MASK (0x20U)
745 #define MCAN_PSR_EP_SHIFT (5U)
746 #define MCAN_PSR_EP_GET(x) (((uint32_t)(x) & MCAN_PSR_EP_MASK) >> MCAN_PSR_EP_SHIFT)
747 
748 /*
749  * ACT (R)
750  *
751  * Activity
752  * Monitors the module’s CAN communication state.
753  * 00= Synchronizing - node is synchronizing on CAN communication
754  * 01= Idle - node is neither receiver nor transmitter
755  * 10= Receiver - node is operating as receiver
756  * 11= Transmitter - node is operating as transmitter
757  * Note: ACT is set to “00” by a Protocol Exception Event.
758  */
759 #define MCAN_PSR_ACT_MASK (0x18U)
760 #define MCAN_PSR_ACT_SHIFT (3U)
761 #define MCAN_PSR_ACT_GET(x) (((uint32_t)(x) & MCAN_PSR_ACT_MASK) >> MCAN_PSR_ACT_SHIFT)
762 
763 /*
764  * LEC (S)
765  *
766  * Last Error Code
767  * The LEC indicates the type of the last error to occur on the CAN bus. This field will be cleared to ‘0’when a message has been transferred (reception or transmission) without error.
768  * 0= No Error: No error occurred since LEC has been reset by successful reception or transmission.
769  * 1= Stuff Error: More than 5 equal bits in a sequence have occurred in a part of a received message where this is not allowed.
770  * 2= Form Error: A fixed format part of a received frame has the wrong format.
771  * 3= AckError: The message transmitted by the M_CAN was not acknowledged by another node.
772  * 4= Bit1Error: During the transmission of a message (with the exception of the arbitration field),
773  * the device wanted to send a recessive level (bit of logical value ‘1’), but the monitored bus
774  * value was dominant.
775  * 5= Bit0Error: During the transmission of a message (or acknowledge bit, or active error flag, or overload flag), the device wanted to send a dominant level (data or identifier bit logical value‘0’), but the monitored bus value was recessive.
776  * During Bus_Off recovery this status is set each time a sequence of 11 recessive bits has been monitored. This enables the CPU to monitor the proceeding of the Bus_Off recovery sequence (indicating the bus is not stuck at
777  * dominant or continuously disturbed).
778  * 6= CRCError: The CRC check sum of a received message was incorrect. The CRC of an incoming message does not match with the CRC calculated from the received data.
779  * 7= NoChange: Any read access to the Protocol Status Register re-initializes the LEC to ‘7’. When the LEC shows the value ‘7’, no CAN bus event was detected since the last CPU read access to the Protocol Status Register.
780  * Note: When a frame in CAN FD format has reached the data phase with BRS flag set, the next CAN event (error or valid frame) will be shown in DLEC instead of LEC. An error in a fixed stuff bit of a CAN FD CRC sequence will be shown as a Form Error, not Stuff Error.
781  * Note: The Bus_Off recovery sequence (see ISO 11898-1:2015) cannot be shortened by setting or resetting CCCR.INIT. If the device goes Bus_Off, it will set CCCR.INIT of its own accord,stopping all bus activities.
782  * Once CCCR.INIT has been cleared by the CPU, the device will then wait for 129 occurrences of Bus Idle (129 * 11 consecutive recessive bits) before resuming normal operation.
783  * At the end of the Bus_Off recovery sequence, the Error Management Counters will be reset. During the waiting time after the resetting of CCCR.INIT, each time a sequence of 11 recessive bits has been monitored, a Bit0Error code is written to PSR.LEC,
784  * enabling the CPU to readily check up whether the CAN bus is stuck at dominant or continuously disturbed and to monitor the Bus_Off recovery sequence. ECR.REC is used to count these sequences.
785  * Note: Byte access: Reading byte 0 will set LEC to “111”, reading bytes 3/2/1 has no impact.
786  */
787 #define MCAN_PSR_LEC_MASK (0x7U)
788 #define MCAN_PSR_LEC_SHIFT (0U)
789 #define MCAN_PSR_LEC_GET(x) (((uint32_t)(x) & MCAN_PSR_LEC_MASK) >> MCAN_PSR_LEC_SHIFT)
790 
791 /* Bitfield definition for register: TDCR */
792 /*
793  * TDCO (RW)
794  *
795  * Transmitter Delay Compensation SSP Offset
796  * Offset value defining the distance between the measured delay from m_can_tx to m_can_rx and the secondary sample point. Valid values are 0 to 127 mtq.
797  */
798 #define MCAN_TDCR_TDCO_MASK (0x7F00U)
799 #define MCAN_TDCR_TDCO_SHIFT (8U)
800 #define MCAN_TDCR_TDCO_SET(x) (((uint32_t)(x) << MCAN_TDCR_TDCO_SHIFT) & MCAN_TDCR_TDCO_MASK)
801 #define MCAN_TDCR_TDCO_GET(x) (((uint32_t)(x) & MCAN_TDCR_TDCO_MASK) >> MCAN_TDCR_TDCO_SHIFT)
802 
803 /*
804  * TDCF (RW)
805  *
806  * Transmitter Delay Compensation Filter Window Length
807  * Defines the minimum value for the SSP position, dominant edges on m_can_rx that would result in an earlier SSP position are ignored for transmitter delay measurement.
808  * The feature is enabled when TDCF is configured to a value greater than TDCO. Valid values are 0 to 127 mtq.
809  */
810 #define MCAN_TDCR_TDCF_MASK (0x7FU)
811 #define MCAN_TDCR_TDCF_SHIFT (0U)
812 #define MCAN_TDCR_TDCF_SET(x) (((uint32_t)(x) << MCAN_TDCR_TDCF_SHIFT) & MCAN_TDCR_TDCF_MASK)
813 #define MCAN_TDCR_TDCF_GET(x) (((uint32_t)(x) & MCAN_TDCR_TDCF_MASK) >> MCAN_TDCR_TDCF_SHIFT)
814 
815 /* Bitfield definition for register: IR */
816 /*
817  * ARA (RW)
818  *
819  * Access to Reserved Address
820  * 0= No access to reserved address occurred
821  * 1= Access to reserved address occurred
822  */
823 #define MCAN_IR_ARA_MASK (0x20000000UL)
824 #define MCAN_IR_ARA_SHIFT (29U)
825 #define MCAN_IR_ARA_SET(x) (((uint32_t)(x) << MCAN_IR_ARA_SHIFT) & MCAN_IR_ARA_MASK)
826 #define MCAN_IR_ARA_GET(x) (((uint32_t)(x) & MCAN_IR_ARA_MASK) >> MCAN_IR_ARA_SHIFT)
827 
828 /*
829  * PED (RW)
830  *
831  * Protocol Error in Data Phase (Data Bit Time is used)
832  * 0= No protocol error in data phase
833  * 1= Protocol error in data phase detected (PSR.DLEC ≠ 0,7)
834  */
835 #define MCAN_IR_PED_MASK (0x10000000UL)
836 #define MCAN_IR_PED_SHIFT (28U)
837 #define MCAN_IR_PED_SET(x) (((uint32_t)(x) << MCAN_IR_PED_SHIFT) & MCAN_IR_PED_MASK)
838 #define MCAN_IR_PED_GET(x) (((uint32_t)(x) & MCAN_IR_PED_MASK) >> MCAN_IR_PED_SHIFT)
839 
840 /*
841  * PEA (RW)
842  *
843  * Protocol Error in Arbitration Phase (Nominal Bit Time is used)
844  * 0= No protocol error in arbitration phase
845  * 1= Protocol error in arbitration phase detected (PSR.LEC ≠ 0,7)
846  */
847 #define MCAN_IR_PEA_MASK (0x8000000UL)
848 #define MCAN_IR_PEA_SHIFT (27U)
849 #define MCAN_IR_PEA_SET(x) (((uint32_t)(x) << MCAN_IR_PEA_SHIFT) & MCAN_IR_PEA_MASK)
850 #define MCAN_IR_PEA_GET(x) (((uint32_t)(x) & MCAN_IR_PEA_MASK) >> MCAN_IR_PEA_SHIFT)
851 
852 /*
853  * WDI (RW)
854  *
855  * Watchdog Interrupt
856  * 0= No Message RAM Watchdog event occurred
857  * 1= Message RAM Watchdog event due to missing READY
858  */
859 #define MCAN_IR_WDI_MASK (0x4000000UL)
860 #define MCAN_IR_WDI_SHIFT (26U)
861 #define MCAN_IR_WDI_SET(x) (((uint32_t)(x) << MCAN_IR_WDI_SHIFT) & MCAN_IR_WDI_MASK)
862 #define MCAN_IR_WDI_GET(x) (((uint32_t)(x) & MCAN_IR_WDI_MASK) >> MCAN_IR_WDI_SHIFT)
863 
864 /*
865  * BO (RW)
866  *
867  * Bus_Off Status
868  * 0= Bus_Off status unchanged
869  * 1= Bus_Off status changed
870  */
871 #define MCAN_IR_BO_MASK (0x2000000UL)
872 #define MCAN_IR_BO_SHIFT (25U)
873 #define MCAN_IR_BO_SET(x) (((uint32_t)(x) << MCAN_IR_BO_SHIFT) & MCAN_IR_BO_MASK)
874 #define MCAN_IR_BO_GET(x) (((uint32_t)(x) & MCAN_IR_BO_MASK) >> MCAN_IR_BO_SHIFT)
875 
876 /*
877  * EW (RW)
878  *
879  * Warning Status
880  * 0= Error_Warning status unchanged
881  * 1= Error_Warning status changed
882  */
883 #define MCAN_IR_EW_MASK (0x1000000UL)
884 #define MCAN_IR_EW_SHIFT (24U)
885 #define MCAN_IR_EW_SET(x) (((uint32_t)(x) << MCAN_IR_EW_SHIFT) & MCAN_IR_EW_MASK)
886 #define MCAN_IR_EW_GET(x) (((uint32_t)(x) & MCAN_IR_EW_MASK) >> MCAN_IR_EW_SHIFT)
887 
888 /*
889  * EP (RW)
890  *
891  * Error Passive
892  * 0= Error_Passive status unchanged
893  * 1= Error_Passive status changed
894  */
895 #define MCAN_IR_EP_MASK (0x800000UL)
896 #define MCAN_IR_EP_SHIFT (23U)
897 #define MCAN_IR_EP_SET(x) (((uint32_t)(x) << MCAN_IR_EP_SHIFT) & MCAN_IR_EP_MASK)
898 #define MCAN_IR_EP_GET(x) (((uint32_t)(x) & MCAN_IR_EP_MASK) >> MCAN_IR_EP_SHIFT)
899 
900 /*
901  * ELO (RW)
902  *
903  * Error Logging Overflow
904  * 0= CAN Error Logging Counter did not overflow
905  * 1= Overflow of CAN Error Logging Counter occurred
906  */
907 #define MCAN_IR_ELO_MASK (0x400000UL)
908 #define MCAN_IR_ELO_SHIFT (22U)
909 #define MCAN_IR_ELO_SET(x) (((uint32_t)(x) << MCAN_IR_ELO_SHIFT) & MCAN_IR_ELO_MASK)
910 #define MCAN_IR_ELO_GET(x) (((uint32_t)(x) & MCAN_IR_ELO_MASK) >> MCAN_IR_ELO_SHIFT)
911 
912 /*
913  * BEU (RW)
914  *
915  * Bit Error Uncorrected
916  * Message RAM bit error detected, uncorrected. Controlled by input signal m_can_aeim_berr[1] generated by an optional external parity / ECC logic attached to the Message RAM.
917  * An uncorrected Message RAM bit error sets CCCR.INIT to ‘1’. This is done to avoid transmission of corrupted data.
918  * 0= No bit error detected when reading from Message RAM
919  * 1= Bit error detected, uncorrected (e.g. parity logic)
920  */
921 #define MCAN_IR_BEU_MASK (0x200000UL)
922 #define MCAN_IR_BEU_SHIFT (21U)
923 #define MCAN_IR_BEU_SET(x) (((uint32_t)(x) << MCAN_IR_BEU_SHIFT) & MCAN_IR_BEU_MASK)
924 #define MCAN_IR_BEU_GET(x) (((uint32_t)(x) & MCAN_IR_BEU_MASK) >> MCAN_IR_BEU_SHIFT)
925 
926 /*
927  * BEC (RW)
928  *
929  * Bit Error Corrected
930  * Message RAM bit error detected and corrected. Controlled by input signal m_can_aeim_berr[0] generated by an optional external parity / ECC logic attached to the Message RAM.
931  * 0= No bit error detected when reading from Message RAM
932  * 1= Bit error detected and corrected (e.g. ECC)
933  */
934 #define MCAN_IR_BEC_MASK (0x100000UL)
935 #define MCAN_IR_BEC_SHIFT (20U)
936 #define MCAN_IR_BEC_SET(x) (((uint32_t)(x) << MCAN_IR_BEC_SHIFT) & MCAN_IR_BEC_MASK)
937 #define MCAN_IR_BEC_GET(x) (((uint32_t)(x) & MCAN_IR_BEC_MASK) >> MCAN_IR_BEC_SHIFT)
938 
939 /*
940  * DRX (RW)
941  *
942  * Message stored to Dedicated Rx Buffer
943  * The flag is set whenever a received message has been stored into a dedicated Rx Buffer.
944  * 0= No Rx Buffer updated
945  * 1= At least one received message stored into an Rx Buffer
946  */
947 #define MCAN_IR_DRX_MASK (0x80000UL)
948 #define MCAN_IR_DRX_SHIFT (19U)
949 #define MCAN_IR_DRX_SET(x) (((uint32_t)(x) << MCAN_IR_DRX_SHIFT) & MCAN_IR_DRX_MASK)
950 #define MCAN_IR_DRX_GET(x) (((uint32_t)(x) & MCAN_IR_DRX_MASK) >> MCAN_IR_DRX_SHIFT)
951 
952 /*
953  * TOO (RW)
954  *
955  * Timeout Occurred
956  * 0= No timeout
957  * 1= Timeout reached
958  */
959 #define MCAN_IR_TOO_MASK (0x40000UL)
960 #define MCAN_IR_TOO_SHIFT (18U)
961 #define MCAN_IR_TOO_SET(x) (((uint32_t)(x) << MCAN_IR_TOO_SHIFT) & MCAN_IR_TOO_MASK)
962 #define MCAN_IR_TOO_GET(x) (((uint32_t)(x) & MCAN_IR_TOO_MASK) >> MCAN_IR_TOO_SHIFT)
963 
964 /*
965  * MRAF (RW)
966  *
967  * Message RAM Access Failure
968  * The flag is set, when the Rx Handler
969  * .has not completed acceptance filtering or storage of an accepted message until the arbitration field of the following message has been received. In this case acceptance filtering or message
970  * storage is aborted and the Rx Handler starts processing of the following message.
971  * .was not able to write a message to the Message RAM. In this case message storage is aborted.
972  * In both cases the FIFO put index is not updated resp. the New Data flag for a dedicated Rx Buffer is not set, a partly stored message is overwritten when the next message is stored to this location.
973  * The flag is also set when the Tx Handler was not able to read a message from the Message RAM in time. In this case message transmission is aborted. In case of a Tx Handler access failure the
974  * M_CAN is switched into Restricted Operation Mode (see Section 3.1.5). To leave Restricted Operation Mode, the Host CPU has to reset CCCR.ASM.
975  * 0= No Message RAM access failure occurred
976  * 1= Message RAM access failure occurred
977  */
978 #define MCAN_IR_MRAF_MASK (0x20000UL)
979 #define MCAN_IR_MRAF_SHIFT (17U)
980 #define MCAN_IR_MRAF_SET(x) (((uint32_t)(x) << MCAN_IR_MRAF_SHIFT) & MCAN_IR_MRAF_MASK)
981 #define MCAN_IR_MRAF_GET(x) (((uint32_t)(x) & MCAN_IR_MRAF_MASK) >> MCAN_IR_MRAF_SHIFT)
982 
983 /*
984  * TSW (RW)
985  *
986  * Timestamp Wraparound
987  * 0= No timestamp counter wrap-around
988  * 1= Timestamp counter wrapped around
989  */
990 #define MCAN_IR_TSW_MASK (0x10000UL)
991 #define MCAN_IR_TSW_SHIFT (16U)
992 #define MCAN_IR_TSW_SET(x) (((uint32_t)(x) << MCAN_IR_TSW_SHIFT) & MCAN_IR_TSW_MASK)
993 #define MCAN_IR_TSW_GET(x) (((uint32_t)(x) & MCAN_IR_TSW_MASK) >> MCAN_IR_TSW_SHIFT)
994 
995 /*
996  * TEFL (RW)
997  *
998  * Tx Event FIFO Element Lost
999  * 0= No Tx Event FIFO element lost
1000  * 1= Tx Event FIFO element lost, also set after write attempt to Tx Event FIFO of size zero
1001  */
1002 #define MCAN_IR_TEFL_MASK (0x8000U)
1003 #define MCAN_IR_TEFL_SHIFT (15U)
1004 #define MCAN_IR_TEFL_SET(x) (((uint32_t)(x) << MCAN_IR_TEFL_SHIFT) & MCAN_IR_TEFL_MASK)
1005 #define MCAN_IR_TEFL_GET(x) (((uint32_t)(x) & MCAN_IR_TEFL_MASK) >> MCAN_IR_TEFL_SHIFT)
1006 
1007 /*
1008  * TEFF (RW)
1009  *
1010  * Tx Event FIFO Full
1011  * 0= Tx Event FIFO not full
1012  * 1= Tx Event FIFO full
1013  */
1014 #define MCAN_IR_TEFF_MASK (0x4000U)
1015 #define MCAN_IR_TEFF_SHIFT (14U)
1016 #define MCAN_IR_TEFF_SET(x) (((uint32_t)(x) << MCAN_IR_TEFF_SHIFT) & MCAN_IR_TEFF_MASK)
1017 #define MCAN_IR_TEFF_GET(x) (((uint32_t)(x) & MCAN_IR_TEFF_MASK) >> MCAN_IR_TEFF_SHIFT)
1018 
1019 /*
1020  * TEFW (RW)
1021  *
1022  * Tx Event FIFO Watermark Reached
1023  * 0= Tx Event FIFO fill level below watermark
1024  * 1= Tx Event FIFO fill level reached watermark
1025  */
1026 #define MCAN_IR_TEFW_MASK (0x2000U)
1027 #define MCAN_IR_TEFW_SHIFT (13U)
1028 #define MCAN_IR_TEFW_SET(x) (((uint32_t)(x) << MCAN_IR_TEFW_SHIFT) & MCAN_IR_TEFW_MASK)
1029 #define MCAN_IR_TEFW_GET(x) (((uint32_t)(x) & MCAN_IR_TEFW_MASK) >> MCAN_IR_TEFW_SHIFT)
1030 
1031 /*
1032  * TEFN (RW)
1033  *
1034  * Tx Event FIFO New Entry
1035  * 0= Tx Event FIFO unchanged
1036  * 1= Tx Handler wrote Tx Event FIFO element
1037  */
1038 #define MCAN_IR_TEFN_MASK (0x1000U)
1039 #define MCAN_IR_TEFN_SHIFT (12U)
1040 #define MCAN_IR_TEFN_SET(x) (((uint32_t)(x) << MCAN_IR_TEFN_SHIFT) & MCAN_IR_TEFN_MASK)
1041 #define MCAN_IR_TEFN_GET(x) (((uint32_t)(x) & MCAN_IR_TEFN_MASK) >> MCAN_IR_TEFN_SHIFT)
1042 
1043 /*
1044  * TFE (RW)
1045  *
1046  * Tx FIFO Empty
1047  * 0= Tx FIFO non-empty
1048  * 1= Tx FIFO empty
1049  */
1050 #define MCAN_IR_TFE_MASK (0x800U)
1051 #define MCAN_IR_TFE_SHIFT (11U)
1052 #define MCAN_IR_TFE_SET(x) (((uint32_t)(x) << MCAN_IR_TFE_SHIFT) & MCAN_IR_TFE_MASK)
1053 #define MCAN_IR_TFE_GET(x) (((uint32_t)(x) & MCAN_IR_TFE_MASK) >> MCAN_IR_TFE_SHIFT)
1054 
1055 /*
1056  * TCF (RW)
1057  *
1058  * Transmission Cancellation Finished
1059  * 0= No transmission cancellation finished
1060  * 1= Transmission cancellation finished
1061  */
1062 #define MCAN_IR_TCF_MASK (0x400U)
1063 #define MCAN_IR_TCF_SHIFT (10U)
1064 #define MCAN_IR_TCF_SET(x) (((uint32_t)(x) << MCAN_IR_TCF_SHIFT) & MCAN_IR_TCF_MASK)
1065 #define MCAN_IR_TCF_GET(x) (((uint32_t)(x) & MCAN_IR_TCF_MASK) >> MCAN_IR_TCF_SHIFT)
1066 
1067 /*
1068  * TC (RW)
1069  *
1070  * Transmission Completed
1071  * 0= No transmission completed
1072  * 1= Transmission completed
1073  */
1074 #define MCAN_IR_TC_MASK (0x200U)
1075 #define MCAN_IR_TC_SHIFT (9U)
1076 #define MCAN_IR_TC_SET(x) (((uint32_t)(x) << MCAN_IR_TC_SHIFT) & MCAN_IR_TC_MASK)
1077 #define MCAN_IR_TC_GET(x) (((uint32_t)(x) & MCAN_IR_TC_MASK) >> MCAN_IR_TC_SHIFT)
1078 
1079 /*
1080  * HPM (RW)
1081  *
1082  * High Priority Message
1083  * 0= No high priority message received
1084  * 1= High priority message received
1085  */
1086 #define MCAN_IR_HPM_MASK (0x100U)
1087 #define MCAN_IR_HPM_SHIFT (8U)
1088 #define MCAN_IR_HPM_SET(x) (((uint32_t)(x) << MCAN_IR_HPM_SHIFT) & MCAN_IR_HPM_MASK)
1089 #define MCAN_IR_HPM_GET(x) (((uint32_t)(x) & MCAN_IR_HPM_MASK) >> MCAN_IR_HPM_SHIFT)
1090 
1091 /*
1092  * RF1L (RW)
1093  *
1094  * Rx FIFO 1 Message Lost
1095  * 0= No Rx FIFO 1 message lost
1096  * 1= Rx FIFO 1 message lost, also set after write attempt to Rx FIFO 1 of size zero
1097  */
1098 #define MCAN_IR_RF1L_MASK (0x80U)
1099 #define MCAN_IR_RF1L_SHIFT (7U)
1100 #define MCAN_IR_RF1L_SET(x) (((uint32_t)(x) << MCAN_IR_RF1L_SHIFT) & MCAN_IR_RF1L_MASK)
1101 #define MCAN_IR_RF1L_GET(x) (((uint32_t)(x) & MCAN_IR_RF1L_MASK) >> MCAN_IR_RF1L_SHIFT)
1102 
1103 /*
1104  * RF1F (RW)
1105  *
1106  * Rx FIFO 1 Full
1107  * 0= Rx FIFO 1 not full
1108  * 1= Rx FIFO 1 full
1109  */
1110 #define MCAN_IR_RF1F_MASK (0x40U)
1111 #define MCAN_IR_RF1F_SHIFT (6U)
1112 #define MCAN_IR_RF1F_SET(x) (((uint32_t)(x) << MCAN_IR_RF1F_SHIFT) & MCAN_IR_RF1F_MASK)
1113 #define MCAN_IR_RF1F_GET(x) (((uint32_t)(x) & MCAN_IR_RF1F_MASK) >> MCAN_IR_RF1F_SHIFT)
1114 
1115 /*
1116  * RF1W (RW)
1117  *
1118  * Rx FIFO 1 Watermark Reached
1119  * 0= Rx FIFO 1 fill level below watermark
1120  * 1= Rx FIFO 1 fill level reached watermark
1121  */
1122 #define MCAN_IR_RF1W_MASK (0x20U)
1123 #define MCAN_IR_RF1W_SHIFT (5U)
1124 #define MCAN_IR_RF1W_SET(x) (((uint32_t)(x) << MCAN_IR_RF1W_SHIFT) & MCAN_IR_RF1W_MASK)
1125 #define MCAN_IR_RF1W_GET(x) (((uint32_t)(x) & MCAN_IR_RF1W_MASK) >> MCAN_IR_RF1W_SHIFT)
1126 
1127 /*
1128  * RF1N (RW)
1129  *
1130  * Rx FIFO 1 New Message
1131  * 0= No new message written to Rx FIFO 1
1132  * 1= New message written to Rx FIFO 1
1133  */
1134 #define MCAN_IR_RF1N_MASK (0x10U)
1135 #define MCAN_IR_RF1N_SHIFT (4U)
1136 #define MCAN_IR_RF1N_SET(x) (((uint32_t)(x) << MCAN_IR_RF1N_SHIFT) & MCAN_IR_RF1N_MASK)
1137 #define MCAN_IR_RF1N_GET(x) (((uint32_t)(x) & MCAN_IR_RF1N_MASK) >> MCAN_IR_RF1N_SHIFT)
1138 
1139 /*
1140  * RF0L (RW)
1141  *
1142  * Rx FIFO 0 Message Lost
1143  * 0= No Rx FIFO 0 message lost
1144  * 1= Rx FIFO 0 message lost, also set after write attempt to Rx FIFO 0 of size zero
1145  */
1146 #define MCAN_IR_RF0L_MASK (0x8U)
1147 #define MCAN_IR_RF0L_SHIFT (3U)
1148 #define MCAN_IR_RF0L_SET(x) (((uint32_t)(x) << MCAN_IR_RF0L_SHIFT) & MCAN_IR_RF0L_MASK)
1149 #define MCAN_IR_RF0L_GET(x) (((uint32_t)(x) & MCAN_IR_RF0L_MASK) >> MCAN_IR_RF0L_SHIFT)
1150 
1151 /*
1152  * RF0F (RW)
1153  *
1154  * Rx FIFO 0 Full
1155  * 0= Rx FIFO 0 not full
1156  * 1= Rx FIFO 0 full
1157  */
1158 #define MCAN_IR_RF0F_MASK (0x4U)
1159 #define MCAN_IR_RF0F_SHIFT (2U)
1160 #define MCAN_IR_RF0F_SET(x) (((uint32_t)(x) << MCAN_IR_RF0F_SHIFT) & MCAN_IR_RF0F_MASK)
1161 #define MCAN_IR_RF0F_GET(x) (((uint32_t)(x) & MCAN_IR_RF0F_MASK) >> MCAN_IR_RF0F_SHIFT)
1162 
1163 /*
1164  * RF0W (RW)
1165  *
1166  * Rx FIFO 0 Watermark Reached
1167  * 0= Rx FIFO 0 fill level below watermark
1168  * 1= Rx FIFO 0 fill level reached watermark
1169  */
1170 #define MCAN_IR_RF0W_MASK (0x2U)
1171 #define MCAN_IR_RF0W_SHIFT (1U)
1172 #define MCAN_IR_RF0W_SET(x) (((uint32_t)(x) << MCAN_IR_RF0W_SHIFT) & MCAN_IR_RF0W_MASK)
1173 #define MCAN_IR_RF0W_GET(x) (((uint32_t)(x) & MCAN_IR_RF0W_MASK) >> MCAN_IR_RF0W_SHIFT)
1174 
1175 /*
1176  * RF0N (RW)
1177  *
1178  * Rx FIFO 0 New Message
1179  * 0= No new message written to Rx FIFO 0
1180  * 1= New message written to Rx FIFO 0
1181  */
1182 #define MCAN_IR_RF0N_MASK (0x1U)
1183 #define MCAN_IR_RF0N_SHIFT (0U)
1184 #define MCAN_IR_RF0N_SET(x) (((uint32_t)(x) << MCAN_IR_RF0N_SHIFT) & MCAN_IR_RF0N_MASK)
1185 #define MCAN_IR_RF0N_GET(x) (((uint32_t)(x) & MCAN_IR_RF0N_MASK) >> MCAN_IR_RF0N_SHIFT)
1186 
1187 /* Bitfield definition for register: IE */
1188 /*
1189  * ARAE (RW)
1190  *
1191  * Access to Reserved Address Enable
1192  */
1193 #define MCAN_IE_ARAE_MASK (0x20000000UL)
1194 #define MCAN_IE_ARAE_SHIFT (29U)
1195 #define MCAN_IE_ARAE_SET(x) (((uint32_t)(x) << MCAN_IE_ARAE_SHIFT) & MCAN_IE_ARAE_MASK)
1196 #define MCAN_IE_ARAE_GET(x) (((uint32_t)(x) & MCAN_IE_ARAE_MASK) >> MCAN_IE_ARAE_SHIFT)
1197 
1198 /*
1199  * PEDE (RW)
1200  *
1201  * Protocol Error in Data Phase Enable
1202  */
1203 #define MCAN_IE_PEDE_MASK (0x10000000UL)
1204 #define MCAN_IE_PEDE_SHIFT (28U)
1205 #define MCAN_IE_PEDE_SET(x) (((uint32_t)(x) << MCAN_IE_PEDE_SHIFT) & MCAN_IE_PEDE_MASK)
1206 #define MCAN_IE_PEDE_GET(x) (((uint32_t)(x) & MCAN_IE_PEDE_MASK) >> MCAN_IE_PEDE_SHIFT)
1207 
1208 /*
1209  * PEAE (RW)
1210  *
1211  * Protocol Error in Arbitration Phase Enable
1212  */
1213 #define MCAN_IE_PEAE_MASK (0x8000000UL)
1214 #define MCAN_IE_PEAE_SHIFT (27U)
1215 #define MCAN_IE_PEAE_SET(x) (((uint32_t)(x) << MCAN_IE_PEAE_SHIFT) & MCAN_IE_PEAE_MASK)
1216 #define MCAN_IE_PEAE_GET(x) (((uint32_t)(x) & MCAN_IE_PEAE_MASK) >> MCAN_IE_PEAE_SHIFT)
1217 
1218 /*
1219  * WDIE (RW)
1220  *
1221  * Watchdog Interrupt Enable
1222  */
1223 #define MCAN_IE_WDIE_MASK (0x4000000UL)
1224 #define MCAN_IE_WDIE_SHIFT (26U)
1225 #define MCAN_IE_WDIE_SET(x) (((uint32_t)(x) << MCAN_IE_WDIE_SHIFT) & MCAN_IE_WDIE_MASK)
1226 #define MCAN_IE_WDIE_GET(x) (((uint32_t)(x) & MCAN_IE_WDIE_MASK) >> MCAN_IE_WDIE_SHIFT)
1227 
1228 /*
1229  * BOE (RW)
1230  *
1231  * Bus_Off Status Interrupt Enable
1232  */
1233 #define MCAN_IE_BOE_MASK (0x2000000UL)
1234 #define MCAN_IE_BOE_SHIFT (25U)
1235 #define MCAN_IE_BOE_SET(x) (((uint32_t)(x) << MCAN_IE_BOE_SHIFT) & MCAN_IE_BOE_MASK)
1236 #define MCAN_IE_BOE_GET(x) (((uint32_t)(x) & MCAN_IE_BOE_MASK) >> MCAN_IE_BOE_SHIFT)
1237 
1238 /*
1239  * EWE (RW)
1240  *
1241  * Warning Status Interrupt Enable
1242  */
1243 #define MCAN_IE_EWE_MASK (0x1000000UL)
1244 #define MCAN_IE_EWE_SHIFT (24U)
1245 #define MCAN_IE_EWE_SET(x) (((uint32_t)(x) << MCAN_IE_EWE_SHIFT) & MCAN_IE_EWE_MASK)
1246 #define MCAN_IE_EWE_GET(x) (((uint32_t)(x) & MCAN_IE_EWE_MASK) >> MCAN_IE_EWE_SHIFT)
1247 
1248 /*
1249  * EPE (RW)
1250  *
1251  * Error Passive Interrupt Enable
1252  */
1253 #define MCAN_IE_EPE_MASK (0x800000UL)
1254 #define MCAN_IE_EPE_SHIFT (23U)
1255 #define MCAN_IE_EPE_SET(x) (((uint32_t)(x) << MCAN_IE_EPE_SHIFT) & MCAN_IE_EPE_MASK)
1256 #define MCAN_IE_EPE_GET(x) (((uint32_t)(x) & MCAN_IE_EPE_MASK) >> MCAN_IE_EPE_SHIFT)
1257 
1258 /*
1259  * ELOE (RW)
1260  *
1261  * Error Logging Overflow Interrupt Enable
1262  */
1263 #define MCAN_IE_ELOE_MASK (0x400000UL)
1264 #define MCAN_IE_ELOE_SHIFT (22U)
1265 #define MCAN_IE_ELOE_SET(x) (((uint32_t)(x) << MCAN_IE_ELOE_SHIFT) & MCAN_IE_ELOE_MASK)
1266 #define MCAN_IE_ELOE_GET(x) (((uint32_t)(x) & MCAN_IE_ELOE_MASK) >> MCAN_IE_ELOE_SHIFT)
1267 
1268 /*
1269  * BEUE (RW)
1270  *
1271  * Bit Error Uncorrected Interrupt Enable
1272  */
1273 #define MCAN_IE_BEUE_MASK (0x200000UL)
1274 #define MCAN_IE_BEUE_SHIFT (21U)
1275 #define MCAN_IE_BEUE_SET(x) (((uint32_t)(x) << MCAN_IE_BEUE_SHIFT) & MCAN_IE_BEUE_MASK)
1276 #define MCAN_IE_BEUE_GET(x) (((uint32_t)(x) & MCAN_IE_BEUE_MASK) >> MCAN_IE_BEUE_SHIFT)
1277 
1278 /*
1279  * BECE (RW)
1280  *
1281  * Bit Error Corrected Interrupt Enable
1282  */
1283 #define MCAN_IE_BECE_MASK (0x100000UL)
1284 #define MCAN_IE_BECE_SHIFT (20U)
1285 #define MCAN_IE_BECE_SET(x) (((uint32_t)(x) << MCAN_IE_BECE_SHIFT) & MCAN_IE_BECE_MASK)
1286 #define MCAN_IE_BECE_GET(x) (((uint32_t)(x) & MCAN_IE_BECE_MASK) >> MCAN_IE_BECE_SHIFT)
1287 
1288 /*
1289  * DRXE (RW)
1290  *
1291  * Message stored to Dedicated Rx Buffer Interrupt Enable
1292  */
1293 #define MCAN_IE_DRXE_MASK (0x80000UL)
1294 #define MCAN_IE_DRXE_SHIFT (19U)
1295 #define MCAN_IE_DRXE_SET(x) (((uint32_t)(x) << MCAN_IE_DRXE_SHIFT) & MCAN_IE_DRXE_MASK)
1296 #define MCAN_IE_DRXE_GET(x) (((uint32_t)(x) & MCAN_IE_DRXE_MASK) >> MCAN_IE_DRXE_SHIFT)
1297 
1298 /*
1299  * TOOE (RW)
1300  *
1301  * Timeout Occurred Interrupt Enable
1302  */
1303 #define MCAN_IE_TOOE_MASK (0x40000UL)
1304 #define MCAN_IE_TOOE_SHIFT (18U)
1305 #define MCAN_IE_TOOE_SET(x) (((uint32_t)(x) << MCAN_IE_TOOE_SHIFT) & MCAN_IE_TOOE_MASK)
1306 #define MCAN_IE_TOOE_GET(x) (((uint32_t)(x) & MCAN_IE_TOOE_MASK) >> MCAN_IE_TOOE_SHIFT)
1307 
1308 /*
1309  * MRAFE (RW)
1310  *
1311  * Message RAM Access Failure Interrupt Enable
1312  */
1313 #define MCAN_IE_MRAFE_MASK (0x20000UL)
1314 #define MCAN_IE_MRAFE_SHIFT (17U)
1315 #define MCAN_IE_MRAFE_SET(x) (((uint32_t)(x) << MCAN_IE_MRAFE_SHIFT) & MCAN_IE_MRAFE_MASK)
1316 #define MCAN_IE_MRAFE_GET(x) (((uint32_t)(x) & MCAN_IE_MRAFE_MASK) >> MCAN_IE_MRAFE_SHIFT)
1317 
1318 /*
1319  * TSWE (RW)
1320  *
1321  * Timestamp Wraparound Interrupt Enable
1322  */
1323 #define MCAN_IE_TSWE_MASK (0x10000UL)
1324 #define MCAN_IE_TSWE_SHIFT (16U)
1325 #define MCAN_IE_TSWE_SET(x) (((uint32_t)(x) << MCAN_IE_TSWE_SHIFT) & MCAN_IE_TSWE_MASK)
1326 #define MCAN_IE_TSWE_GET(x) (((uint32_t)(x) & MCAN_IE_TSWE_MASK) >> MCAN_IE_TSWE_SHIFT)
1327 
1328 /*
1329  * TEFLE (RW)
1330  *
1331  * Tx Event FIFO Event Lost Interrupt Enable
1332  */
1333 #define MCAN_IE_TEFLE_MASK (0x8000U)
1334 #define MCAN_IE_TEFLE_SHIFT (15U)
1335 #define MCAN_IE_TEFLE_SET(x) (((uint32_t)(x) << MCAN_IE_TEFLE_SHIFT) & MCAN_IE_TEFLE_MASK)
1336 #define MCAN_IE_TEFLE_GET(x) (((uint32_t)(x) & MCAN_IE_TEFLE_MASK) >> MCAN_IE_TEFLE_SHIFT)
1337 
1338 /*
1339  * TEFFE (RW)
1340  *
1341  * Tx Event FIFO Full Interrupt Enable
1342  */
1343 #define MCAN_IE_TEFFE_MASK (0x4000U)
1344 #define MCAN_IE_TEFFE_SHIFT (14U)
1345 #define MCAN_IE_TEFFE_SET(x) (((uint32_t)(x) << MCAN_IE_TEFFE_SHIFT) & MCAN_IE_TEFFE_MASK)
1346 #define MCAN_IE_TEFFE_GET(x) (((uint32_t)(x) & MCAN_IE_TEFFE_MASK) >> MCAN_IE_TEFFE_SHIFT)
1347 
1348 /*
1349  * TEFWE (RW)
1350  *
1351  * Tx Event FIFO Watermark Reached Interrupt Enable
1352  */
1353 #define MCAN_IE_TEFWE_MASK (0x2000U)
1354 #define MCAN_IE_TEFWE_SHIFT (13U)
1355 #define MCAN_IE_TEFWE_SET(x) (((uint32_t)(x) << MCAN_IE_TEFWE_SHIFT) & MCAN_IE_TEFWE_MASK)
1356 #define MCAN_IE_TEFWE_GET(x) (((uint32_t)(x) & MCAN_IE_TEFWE_MASK) >> MCAN_IE_TEFWE_SHIFT)
1357 
1358 /*
1359  * TEFNE (RW)
1360  *
1361  * Tx Event FIFO New Entry Interrupt Enable
1362  */
1363 #define MCAN_IE_TEFNE_MASK (0x1000U)
1364 #define MCAN_IE_TEFNE_SHIFT (12U)
1365 #define MCAN_IE_TEFNE_SET(x) (((uint32_t)(x) << MCAN_IE_TEFNE_SHIFT) & MCAN_IE_TEFNE_MASK)
1366 #define MCAN_IE_TEFNE_GET(x) (((uint32_t)(x) & MCAN_IE_TEFNE_MASK) >> MCAN_IE_TEFNE_SHIFT)
1367 
1368 /*
1369  * TFEE (RW)
1370  *
1371  * Tx FIFO Empty Interrupt Enable
1372  */
1373 #define MCAN_IE_TFEE_MASK (0x800U)
1374 #define MCAN_IE_TFEE_SHIFT (11U)
1375 #define MCAN_IE_TFEE_SET(x) (((uint32_t)(x) << MCAN_IE_TFEE_SHIFT) & MCAN_IE_TFEE_MASK)
1376 #define MCAN_IE_TFEE_GET(x) (((uint32_t)(x) & MCAN_IE_TFEE_MASK) >> MCAN_IE_TFEE_SHIFT)
1377 
1378 /*
1379  * TCFE (RW)
1380  *
1381  * Transmission Cancellation Finished Interrupt Enable
1382  */
1383 #define MCAN_IE_TCFE_MASK (0x400U)
1384 #define MCAN_IE_TCFE_SHIFT (10U)
1385 #define MCAN_IE_TCFE_SET(x) (((uint32_t)(x) << MCAN_IE_TCFE_SHIFT) & MCAN_IE_TCFE_MASK)
1386 #define MCAN_IE_TCFE_GET(x) (((uint32_t)(x) & MCAN_IE_TCFE_MASK) >> MCAN_IE_TCFE_SHIFT)
1387 
1388 /*
1389  * TCE (RW)
1390  *
1391  * Transmission Completed Interrupt Enable
1392  */
1393 #define MCAN_IE_TCE_MASK (0x200U)
1394 #define MCAN_IE_TCE_SHIFT (9U)
1395 #define MCAN_IE_TCE_SET(x) (((uint32_t)(x) << MCAN_IE_TCE_SHIFT) & MCAN_IE_TCE_MASK)
1396 #define MCAN_IE_TCE_GET(x) (((uint32_t)(x) & MCAN_IE_TCE_MASK) >> MCAN_IE_TCE_SHIFT)
1397 
1398 /*
1399  * HPME (RW)
1400  *
1401  * High Priority Message Interrupt Enable
1402  */
1403 #define MCAN_IE_HPME_MASK (0x100U)
1404 #define MCAN_IE_HPME_SHIFT (8U)
1405 #define MCAN_IE_HPME_SET(x) (((uint32_t)(x) << MCAN_IE_HPME_SHIFT) & MCAN_IE_HPME_MASK)
1406 #define MCAN_IE_HPME_GET(x) (((uint32_t)(x) & MCAN_IE_HPME_MASK) >> MCAN_IE_HPME_SHIFT)
1407 
1408 /*
1409  * RF1LE (RW)
1410  *
1411  * Rx FIFO 1 Message Lost Interrupt Enable
1412  */
1413 #define MCAN_IE_RF1LE_MASK (0x80U)
1414 #define MCAN_IE_RF1LE_SHIFT (7U)
1415 #define MCAN_IE_RF1LE_SET(x) (((uint32_t)(x) << MCAN_IE_RF1LE_SHIFT) & MCAN_IE_RF1LE_MASK)
1416 #define MCAN_IE_RF1LE_GET(x) (((uint32_t)(x) & MCAN_IE_RF1LE_MASK) >> MCAN_IE_RF1LE_SHIFT)
1417 
1418 /*
1419  * RF1FE (RW)
1420  *
1421  * Rx FIFO 1 Full Interrupt Enable
1422  */
1423 #define MCAN_IE_RF1FE_MASK (0x40U)
1424 #define MCAN_IE_RF1FE_SHIFT (6U)
1425 #define MCAN_IE_RF1FE_SET(x) (((uint32_t)(x) << MCAN_IE_RF1FE_SHIFT) & MCAN_IE_RF1FE_MASK)
1426 #define MCAN_IE_RF1FE_GET(x) (((uint32_t)(x) & MCAN_IE_RF1FE_MASK) >> MCAN_IE_RF1FE_SHIFT)
1427 
1428 /*
1429  * RF1WE (RW)
1430  *
1431  * Rx FIFO 1 Watermark Reached Interrupt Enable
1432  */
1433 #define MCAN_IE_RF1WE_MASK (0x20U)
1434 #define MCAN_IE_RF1WE_SHIFT (5U)
1435 #define MCAN_IE_RF1WE_SET(x) (((uint32_t)(x) << MCAN_IE_RF1WE_SHIFT) & MCAN_IE_RF1WE_MASK)
1436 #define MCAN_IE_RF1WE_GET(x) (((uint32_t)(x) & MCAN_IE_RF1WE_MASK) >> MCAN_IE_RF1WE_SHIFT)
1437 
1438 /*
1439  * RF1NE (RW)
1440  *
1441  * Rx FIFO 1 New Message Interrupt Enable
1442  */
1443 #define MCAN_IE_RF1NE_MASK (0x10U)
1444 #define MCAN_IE_RF1NE_SHIFT (4U)
1445 #define MCAN_IE_RF1NE_SET(x) (((uint32_t)(x) << MCAN_IE_RF1NE_SHIFT) & MCAN_IE_RF1NE_MASK)
1446 #define MCAN_IE_RF1NE_GET(x) (((uint32_t)(x) & MCAN_IE_RF1NE_MASK) >> MCAN_IE_RF1NE_SHIFT)
1447 
1448 /*
1449  * RF0LE (RW)
1450  *
1451  * Rx FIFO 0 Message Lost Interrupt Enable
1452  */
1453 #define MCAN_IE_RF0LE_MASK (0x8U)
1454 #define MCAN_IE_RF0LE_SHIFT (3U)
1455 #define MCAN_IE_RF0LE_SET(x) (((uint32_t)(x) << MCAN_IE_RF0LE_SHIFT) & MCAN_IE_RF0LE_MASK)
1456 #define MCAN_IE_RF0LE_GET(x) (((uint32_t)(x) & MCAN_IE_RF0LE_MASK) >> MCAN_IE_RF0LE_SHIFT)
1457 
1458 /*
1459  * RF0FE (RW)
1460  *
1461  * Rx FIFO 0 Full Interrupt Enable
1462  */
1463 #define MCAN_IE_RF0FE_MASK (0x4U)
1464 #define MCAN_IE_RF0FE_SHIFT (2U)
1465 #define MCAN_IE_RF0FE_SET(x) (((uint32_t)(x) << MCAN_IE_RF0FE_SHIFT) & MCAN_IE_RF0FE_MASK)
1466 #define MCAN_IE_RF0FE_GET(x) (((uint32_t)(x) & MCAN_IE_RF0FE_MASK) >> MCAN_IE_RF0FE_SHIFT)
1467 
1468 /*
1469  * RF0WE (RW)
1470  *
1471  * Rx FIFO 0 Watermark Reached Interrupt Enable
1472  */
1473 #define MCAN_IE_RF0WE_MASK (0x2U)
1474 #define MCAN_IE_RF0WE_SHIFT (1U)
1475 #define MCAN_IE_RF0WE_SET(x) (((uint32_t)(x) << MCAN_IE_RF0WE_SHIFT) & MCAN_IE_RF0WE_MASK)
1476 #define MCAN_IE_RF0WE_GET(x) (((uint32_t)(x) & MCAN_IE_RF0WE_MASK) >> MCAN_IE_RF0WE_SHIFT)
1477 
1478 /*
1479  * RF0NE (RW)
1480  *
1481  * Rx FIFO 0 New Message Interrupt Enable
1482  */
1483 #define MCAN_IE_RF0NE_MASK (0x1U)
1484 #define MCAN_IE_RF0NE_SHIFT (0U)
1485 #define MCAN_IE_RF0NE_SET(x) (((uint32_t)(x) << MCAN_IE_RF0NE_SHIFT) & MCAN_IE_RF0NE_MASK)
1486 #define MCAN_IE_RF0NE_GET(x) (((uint32_t)(x) & MCAN_IE_RF0NE_MASK) >> MCAN_IE_RF0NE_SHIFT)
1487 
1488 /* Bitfield definition for register: ILS */
1489 /*
1490  * ARAL (RW)
1491  *
1492  * Access to Reserved Address Line
1493  */
1494 #define MCAN_ILS_ARAL_MASK (0x20000000UL)
1495 #define MCAN_ILS_ARAL_SHIFT (29U)
1496 #define MCAN_ILS_ARAL_SET(x) (((uint32_t)(x) << MCAN_ILS_ARAL_SHIFT) & MCAN_ILS_ARAL_MASK)
1497 #define MCAN_ILS_ARAL_GET(x) (((uint32_t)(x) & MCAN_ILS_ARAL_MASK) >> MCAN_ILS_ARAL_SHIFT)
1498 
1499 /*
1500  * PEDL (RW)
1501  *
1502  * Protocol Error in Data Phase Line
1503  */
1504 #define MCAN_ILS_PEDL_MASK (0x10000000UL)
1505 #define MCAN_ILS_PEDL_SHIFT (28U)
1506 #define MCAN_ILS_PEDL_SET(x) (((uint32_t)(x) << MCAN_ILS_PEDL_SHIFT) & MCAN_ILS_PEDL_MASK)
1507 #define MCAN_ILS_PEDL_GET(x) (((uint32_t)(x) & MCAN_ILS_PEDL_MASK) >> MCAN_ILS_PEDL_SHIFT)
1508 
1509 /*
1510  * PEAL (RW)
1511  *
1512  * Protocol Error in Arbitration Phase Line
1513  */
1514 #define MCAN_ILS_PEAL_MASK (0x8000000UL)
1515 #define MCAN_ILS_PEAL_SHIFT (27U)
1516 #define MCAN_ILS_PEAL_SET(x) (((uint32_t)(x) << MCAN_ILS_PEAL_SHIFT) & MCAN_ILS_PEAL_MASK)
1517 #define MCAN_ILS_PEAL_GET(x) (((uint32_t)(x) & MCAN_ILS_PEAL_MASK) >> MCAN_ILS_PEAL_SHIFT)
1518 
1519 /*
1520  * WDIL (RW)
1521  *
1522  * Watchdog Interrupt Line
1523  */
1524 #define MCAN_ILS_WDIL_MASK (0x4000000UL)
1525 #define MCAN_ILS_WDIL_SHIFT (26U)
1526 #define MCAN_ILS_WDIL_SET(x) (((uint32_t)(x) << MCAN_ILS_WDIL_SHIFT) & MCAN_ILS_WDIL_MASK)
1527 #define MCAN_ILS_WDIL_GET(x) (((uint32_t)(x) & MCAN_ILS_WDIL_MASK) >> MCAN_ILS_WDIL_SHIFT)
1528 
1529 /*
1530  * BOL (RW)
1531  *
1532  * Bus_Off Status Interrupt Line
1533  */
1534 #define MCAN_ILS_BOL_MASK (0x2000000UL)
1535 #define MCAN_ILS_BOL_SHIFT (25U)
1536 #define MCAN_ILS_BOL_SET(x) (((uint32_t)(x) << MCAN_ILS_BOL_SHIFT) & MCAN_ILS_BOL_MASK)
1537 #define MCAN_ILS_BOL_GET(x) (((uint32_t)(x) & MCAN_ILS_BOL_MASK) >> MCAN_ILS_BOL_SHIFT)
1538 
1539 /*
1540  * EWL (RW)
1541  *
1542  * Warning Status Interrupt Line
1543  */
1544 #define MCAN_ILS_EWL_MASK (0x1000000UL)
1545 #define MCAN_ILS_EWL_SHIFT (24U)
1546 #define MCAN_ILS_EWL_SET(x) (((uint32_t)(x) << MCAN_ILS_EWL_SHIFT) & MCAN_ILS_EWL_MASK)
1547 #define MCAN_ILS_EWL_GET(x) (((uint32_t)(x) & MCAN_ILS_EWL_MASK) >> MCAN_ILS_EWL_SHIFT)
1548 
1549 /*
1550  * EPL (RW)
1551  *
1552  * Error Passive Interrupt Line
1553  */
1554 #define MCAN_ILS_EPL_MASK (0x800000UL)
1555 #define MCAN_ILS_EPL_SHIFT (23U)
1556 #define MCAN_ILS_EPL_SET(x) (((uint32_t)(x) << MCAN_ILS_EPL_SHIFT) & MCAN_ILS_EPL_MASK)
1557 #define MCAN_ILS_EPL_GET(x) (((uint32_t)(x) & MCAN_ILS_EPL_MASK) >> MCAN_ILS_EPL_SHIFT)
1558 
1559 /*
1560  * ELOL (RW)
1561  *
1562  * Error Logging Overflow Interrupt Line
1563  */
1564 #define MCAN_ILS_ELOL_MASK (0x400000UL)
1565 #define MCAN_ILS_ELOL_SHIFT (22U)
1566 #define MCAN_ILS_ELOL_SET(x) (((uint32_t)(x) << MCAN_ILS_ELOL_SHIFT) & MCAN_ILS_ELOL_MASK)
1567 #define MCAN_ILS_ELOL_GET(x) (((uint32_t)(x) & MCAN_ILS_ELOL_MASK) >> MCAN_ILS_ELOL_SHIFT)
1568 
1569 /*
1570  * BEUL (RW)
1571  *
1572  * Bit Error Uncorrected Interrupt Line
1573  */
1574 #define MCAN_ILS_BEUL_MASK (0x200000UL)
1575 #define MCAN_ILS_BEUL_SHIFT (21U)
1576 #define MCAN_ILS_BEUL_SET(x) (((uint32_t)(x) << MCAN_ILS_BEUL_SHIFT) & MCAN_ILS_BEUL_MASK)
1577 #define MCAN_ILS_BEUL_GET(x) (((uint32_t)(x) & MCAN_ILS_BEUL_MASK) >> MCAN_ILS_BEUL_SHIFT)
1578 
1579 /*
1580  * BECL (RW)
1581  *
1582  * Bit Error Corrected Interrupt Line
1583  */
1584 #define MCAN_ILS_BECL_MASK (0x100000UL)
1585 #define MCAN_ILS_BECL_SHIFT (20U)
1586 #define MCAN_ILS_BECL_SET(x) (((uint32_t)(x) << MCAN_ILS_BECL_SHIFT) & MCAN_ILS_BECL_MASK)
1587 #define MCAN_ILS_BECL_GET(x) (((uint32_t)(x) & MCAN_ILS_BECL_MASK) >> MCAN_ILS_BECL_SHIFT)
1588 
1589 /*
1590  * DRXL (RW)
1591  *
1592  * Message stored to Dedicated Rx Buffer Interrupt Line
1593  */
1594 #define MCAN_ILS_DRXL_MASK (0x80000UL)
1595 #define MCAN_ILS_DRXL_SHIFT (19U)
1596 #define MCAN_ILS_DRXL_SET(x) (((uint32_t)(x) << MCAN_ILS_DRXL_SHIFT) & MCAN_ILS_DRXL_MASK)
1597 #define MCAN_ILS_DRXL_GET(x) (((uint32_t)(x) & MCAN_ILS_DRXL_MASK) >> MCAN_ILS_DRXL_SHIFT)
1598 
1599 /*
1600  * TOOL (RW)
1601  *
1602  * Timeout Occurred Interrupt Line
1603  */
1604 #define MCAN_ILS_TOOL_MASK (0x40000UL)
1605 #define MCAN_ILS_TOOL_SHIFT (18U)
1606 #define MCAN_ILS_TOOL_SET(x) (((uint32_t)(x) << MCAN_ILS_TOOL_SHIFT) & MCAN_ILS_TOOL_MASK)
1607 #define MCAN_ILS_TOOL_GET(x) (((uint32_t)(x) & MCAN_ILS_TOOL_MASK) >> MCAN_ILS_TOOL_SHIFT)
1608 
1609 /*
1610  * MRAFL (RW)
1611  *
1612  * Message RAM Access Failure Interrupt Line
1613  */
1614 #define MCAN_ILS_MRAFL_MASK (0x20000UL)
1615 #define MCAN_ILS_MRAFL_SHIFT (17U)
1616 #define MCAN_ILS_MRAFL_SET(x) (((uint32_t)(x) << MCAN_ILS_MRAFL_SHIFT) & MCAN_ILS_MRAFL_MASK)
1617 #define MCAN_ILS_MRAFL_GET(x) (((uint32_t)(x) & MCAN_ILS_MRAFL_MASK) >> MCAN_ILS_MRAFL_SHIFT)
1618 
1619 /*
1620  * TSWL (RW)
1621  *
1622  * Timestamp Wraparound Interrupt Line
1623  */
1624 #define MCAN_ILS_TSWL_MASK (0x10000UL)
1625 #define MCAN_ILS_TSWL_SHIFT (16U)
1626 #define MCAN_ILS_TSWL_SET(x) (((uint32_t)(x) << MCAN_ILS_TSWL_SHIFT) & MCAN_ILS_TSWL_MASK)
1627 #define MCAN_ILS_TSWL_GET(x) (((uint32_t)(x) & MCAN_ILS_TSWL_MASK) >> MCAN_ILS_TSWL_SHIFT)
1628 
1629 /*
1630  * TEFLL (RW)
1631  *
1632  * Tx Event FIFO Event Lost Interrupt Line
1633  */
1634 #define MCAN_ILS_TEFLL_MASK (0x8000U)
1635 #define MCAN_ILS_TEFLL_SHIFT (15U)
1636 #define MCAN_ILS_TEFLL_SET(x) (((uint32_t)(x) << MCAN_ILS_TEFLL_SHIFT) & MCAN_ILS_TEFLL_MASK)
1637 #define MCAN_ILS_TEFLL_GET(x) (((uint32_t)(x) & MCAN_ILS_TEFLL_MASK) >> MCAN_ILS_TEFLL_SHIFT)
1638 
1639 /*
1640  * TEFFL (RW)
1641  *
1642  * Tx Event FIFO Full Interrupt Line
1643  */
1644 #define MCAN_ILS_TEFFL_MASK (0x4000U)
1645 #define MCAN_ILS_TEFFL_SHIFT (14U)
1646 #define MCAN_ILS_TEFFL_SET(x) (((uint32_t)(x) << MCAN_ILS_TEFFL_SHIFT) & MCAN_ILS_TEFFL_MASK)
1647 #define MCAN_ILS_TEFFL_GET(x) (((uint32_t)(x) & MCAN_ILS_TEFFL_MASK) >> MCAN_ILS_TEFFL_SHIFT)
1648 
1649 /*
1650  * TEFWL (RW)
1651  *
1652  * Tx Event FIFO Watermark Reached Interrupt Line
1653  */
1654 #define MCAN_ILS_TEFWL_MASK (0x2000U)
1655 #define MCAN_ILS_TEFWL_SHIFT (13U)
1656 #define MCAN_ILS_TEFWL_SET(x) (((uint32_t)(x) << MCAN_ILS_TEFWL_SHIFT) & MCAN_ILS_TEFWL_MASK)
1657 #define MCAN_ILS_TEFWL_GET(x) (((uint32_t)(x) & MCAN_ILS_TEFWL_MASK) >> MCAN_ILS_TEFWL_SHIFT)
1658 
1659 /*
1660  * TEFNL (RW)
1661  *
1662  * Tx Event FIFO New Entry Interrupt Line
1663  */
1664 #define MCAN_ILS_TEFNL_MASK (0x1000U)
1665 #define MCAN_ILS_TEFNL_SHIFT (12U)
1666 #define MCAN_ILS_TEFNL_SET(x) (((uint32_t)(x) << MCAN_ILS_TEFNL_SHIFT) & MCAN_ILS_TEFNL_MASK)
1667 #define MCAN_ILS_TEFNL_GET(x) (((uint32_t)(x) & MCAN_ILS_TEFNL_MASK) >> MCAN_ILS_TEFNL_SHIFT)
1668 
1669 /*
1670  * TFEL (RW)
1671  *
1672  * Tx FIFO Empty Interrupt Line
1673  */
1674 #define MCAN_ILS_TFEL_MASK (0x800U)
1675 #define MCAN_ILS_TFEL_SHIFT (11U)
1676 #define MCAN_ILS_TFEL_SET(x) (((uint32_t)(x) << MCAN_ILS_TFEL_SHIFT) & MCAN_ILS_TFEL_MASK)
1677 #define MCAN_ILS_TFEL_GET(x) (((uint32_t)(x) & MCAN_ILS_TFEL_MASK) >> MCAN_ILS_TFEL_SHIFT)
1678 
1679 /*
1680  * TCFL (RW)
1681  *
1682  * Transmission Cancellation Finished Interrupt Line
1683  */
1684 #define MCAN_ILS_TCFL_MASK (0x400U)
1685 #define MCAN_ILS_TCFL_SHIFT (10U)
1686 #define MCAN_ILS_TCFL_SET(x) (((uint32_t)(x) << MCAN_ILS_TCFL_SHIFT) & MCAN_ILS_TCFL_MASK)
1687 #define MCAN_ILS_TCFL_GET(x) (((uint32_t)(x) & MCAN_ILS_TCFL_MASK) >> MCAN_ILS_TCFL_SHIFT)
1688 
1689 /*
1690  * TCL (RW)
1691  *
1692  * Transmission Completed Interrupt Line
1693  */
1694 #define MCAN_ILS_TCL_MASK (0x200U)
1695 #define MCAN_ILS_TCL_SHIFT (9U)
1696 #define MCAN_ILS_TCL_SET(x) (((uint32_t)(x) << MCAN_ILS_TCL_SHIFT) & MCAN_ILS_TCL_MASK)
1697 #define MCAN_ILS_TCL_GET(x) (((uint32_t)(x) & MCAN_ILS_TCL_MASK) >> MCAN_ILS_TCL_SHIFT)
1698 
1699 /*
1700  * HPML (RW)
1701  *
1702  * High Priority Message Interrupt Line
1703  */
1704 #define MCAN_ILS_HPML_MASK (0x100U)
1705 #define MCAN_ILS_HPML_SHIFT (8U)
1706 #define MCAN_ILS_HPML_SET(x) (((uint32_t)(x) << MCAN_ILS_HPML_SHIFT) & MCAN_ILS_HPML_MASK)
1707 #define MCAN_ILS_HPML_GET(x) (((uint32_t)(x) & MCAN_ILS_HPML_MASK) >> MCAN_ILS_HPML_SHIFT)
1708 
1709 /*
1710  * RF1LL (RW)
1711  *
1712  * Rx FIFO 1 Message Lost Interrupt Line
1713  */
1714 #define MCAN_ILS_RF1LL_MASK (0x80U)
1715 #define MCAN_ILS_RF1LL_SHIFT (7U)
1716 #define MCAN_ILS_RF1LL_SET(x) (((uint32_t)(x) << MCAN_ILS_RF1LL_SHIFT) & MCAN_ILS_RF1LL_MASK)
1717 #define MCAN_ILS_RF1LL_GET(x) (((uint32_t)(x) & MCAN_ILS_RF1LL_MASK) >> MCAN_ILS_RF1LL_SHIFT)
1718 
1719 /*
1720  * RF1FL (RW)
1721  *
1722  * Rx FIFO 1 Full Interrupt Line
1723  */
1724 #define MCAN_ILS_RF1FL_MASK (0x40U)
1725 #define MCAN_ILS_RF1FL_SHIFT (6U)
1726 #define MCAN_ILS_RF1FL_SET(x) (((uint32_t)(x) << MCAN_ILS_RF1FL_SHIFT) & MCAN_ILS_RF1FL_MASK)
1727 #define MCAN_ILS_RF1FL_GET(x) (((uint32_t)(x) & MCAN_ILS_RF1FL_MASK) >> MCAN_ILS_RF1FL_SHIFT)
1728 
1729 /*
1730  * RF1WL (RW)
1731  *
1732  * Rx FIFO 1 Watermark Reached Interrupt Line
1733  */
1734 #define MCAN_ILS_RF1WL_MASK (0x20U)
1735 #define MCAN_ILS_RF1WL_SHIFT (5U)
1736 #define MCAN_ILS_RF1WL_SET(x) (((uint32_t)(x) << MCAN_ILS_RF1WL_SHIFT) & MCAN_ILS_RF1WL_MASK)
1737 #define MCAN_ILS_RF1WL_GET(x) (((uint32_t)(x) & MCAN_ILS_RF1WL_MASK) >> MCAN_ILS_RF1WL_SHIFT)
1738 
1739 /*
1740  * RF1NL (RW)
1741  *
1742  * Rx FIFO 1 New Message Interrupt Line
1743  */
1744 #define MCAN_ILS_RF1NL_MASK (0x10U)
1745 #define MCAN_ILS_RF1NL_SHIFT (4U)
1746 #define MCAN_ILS_RF1NL_SET(x) (((uint32_t)(x) << MCAN_ILS_RF1NL_SHIFT) & MCAN_ILS_RF1NL_MASK)
1747 #define MCAN_ILS_RF1NL_GET(x) (((uint32_t)(x) & MCAN_ILS_RF1NL_MASK) >> MCAN_ILS_RF1NL_SHIFT)
1748 
1749 /*
1750  * RF0LL (RW)
1751  *
1752  * Rx FIFO 0 Message Lost Interrupt Line
1753  */
1754 #define MCAN_ILS_RF0LL_MASK (0x8U)
1755 #define MCAN_ILS_RF0LL_SHIFT (3U)
1756 #define MCAN_ILS_RF0LL_SET(x) (((uint32_t)(x) << MCAN_ILS_RF0LL_SHIFT) & MCAN_ILS_RF0LL_MASK)
1757 #define MCAN_ILS_RF0LL_GET(x) (((uint32_t)(x) & MCAN_ILS_RF0LL_MASK) >> MCAN_ILS_RF0LL_SHIFT)
1758 
1759 /*
1760  * RF0FL (RW)
1761  *
1762  * Rx FIFO 0 Full Interrupt Line
1763  */
1764 #define MCAN_ILS_RF0FL_MASK (0x4U)
1765 #define MCAN_ILS_RF0FL_SHIFT (2U)
1766 #define MCAN_ILS_RF0FL_SET(x) (((uint32_t)(x) << MCAN_ILS_RF0FL_SHIFT) & MCAN_ILS_RF0FL_MASK)
1767 #define MCAN_ILS_RF0FL_GET(x) (((uint32_t)(x) & MCAN_ILS_RF0FL_MASK) >> MCAN_ILS_RF0FL_SHIFT)
1768 
1769 /*
1770  * RF0WL (RW)
1771  *
1772  * Rx FIFO 0 Watermark Reached Interrupt Line
1773  */
1774 #define MCAN_ILS_RF0WL_MASK (0x2U)
1775 #define MCAN_ILS_RF0WL_SHIFT (1U)
1776 #define MCAN_ILS_RF0WL_SET(x) (((uint32_t)(x) << MCAN_ILS_RF0WL_SHIFT) & MCAN_ILS_RF0WL_MASK)
1777 #define MCAN_ILS_RF0WL_GET(x) (((uint32_t)(x) & MCAN_ILS_RF0WL_MASK) >> MCAN_ILS_RF0WL_SHIFT)
1778 
1779 /*
1780  * RF0NL (RW)
1781  *
1782  * Rx FIFO 0 New Message Interrupt Line
1783  */
1784 #define MCAN_ILS_RF0NL_MASK (0x1U)
1785 #define MCAN_ILS_RF0NL_SHIFT (0U)
1786 #define MCAN_ILS_RF0NL_SET(x) (((uint32_t)(x) << MCAN_ILS_RF0NL_SHIFT) & MCAN_ILS_RF0NL_MASK)
1787 #define MCAN_ILS_RF0NL_GET(x) (((uint32_t)(x) & MCAN_ILS_RF0NL_MASK) >> MCAN_ILS_RF0NL_SHIFT)
1788 
1789 /* Bitfield definition for register: ILE */
1790 /*
1791  * EINT1 (RW)
1792  *
1793  * Enable Interrupt Line 1
1794  * 0= Interrupt line m_can_int1 disabled
1795  * 1= Interrupt line m_can_int1 enabled
1796  */
1797 #define MCAN_ILE_EINT1_MASK (0x2U)
1798 #define MCAN_ILE_EINT1_SHIFT (1U)
1799 #define MCAN_ILE_EINT1_SET(x) (((uint32_t)(x) << MCAN_ILE_EINT1_SHIFT) & MCAN_ILE_EINT1_MASK)
1800 #define MCAN_ILE_EINT1_GET(x) (((uint32_t)(x) & MCAN_ILE_EINT1_MASK) >> MCAN_ILE_EINT1_SHIFT)
1801 
1802 /*
1803  * EINT0 (RW)
1804  *
1805  * Enable Interrupt Line 0
1806  * 0= Interrupt line m_can_int0 disabled
1807  * 1= Interrupt line m_can_int0 enabled
1808  */
1809 #define MCAN_ILE_EINT0_MASK (0x1U)
1810 #define MCAN_ILE_EINT0_SHIFT (0U)
1811 #define MCAN_ILE_EINT0_SET(x) (((uint32_t)(x) << MCAN_ILE_EINT0_SHIFT) & MCAN_ILE_EINT0_MASK)
1812 #define MCAN_ILE_EINT0_GET(x) (((uint32_t)(x) & MCAN_ILE_EINT0_MASK) >> MCAN_ILE_EINT0_SHIFT)
1813 
1814 /* Bitfield definition for register: GFC */
1815 /*
1816  * ANFS (RW)
1817  *
1818  * Accept Non-matching Frames Standard
1819  * Defines how received messages with 11-bit IDs that do not match any element of the filter list are treated.
1820  * 00= Accept in Rx FIFO 0
1821  * 01= Accept in Rx FIFO 1
1822  * 10= Reject
1823  * 11= Reject
1824  */
1825 #define MCAN_GFC_ANFS_MASK (0x30U)
1826 #define MCAN_GFC_ANFS_SHIFT (4U)
1827 #define MCAN_GFC_ANFS_SET(x) (((uint32_t)(x) << MCAN_GFC_ANFS_SHIFT) & MCAN_GFC_ANFS_MASK)
1828 #define MCAN_GFC_ANFS_GET(x) (((uint32_t)(x) & MCAN_GFC_ANFS_MASK) >> MCAN_GFC_ANFS_SHIFT)
1829 
1830 /*
1831  * ANFE (RW)
1832  *
1833  * Accept Non-matching Frames Extended
1834  * Defines how received messages with 29-bit IDs that do not match any element of the filter list are treated.
1835  * 00= Accept in Rx FIFO 0
1836  * 01= Accept in Rx FIFO 1
1837  * 10= Reject
1838  * 11= Reject
1839  */
1840 #define MCAN_GFC_ANFE_MASK (0xCU)
1841 #define MCAN_GFC_ANFE_SHIFT (2U)
1842 #define MCAN_GFC_ANFE_SET(x) (((uint32_t)(x) << MCAN_GFC_ANFE_SHIFT) & MCAN_GFC_ANFE_MASK)
1843 #define MCAN_GFC_ANFE_GET(x) (((uint32_t)(x) & MCAN_GFC_ANFE_MASK) >> MCAN_GFC_ANFE_SHIFT)
1844 
1845 /*
1846  * RRFS (RW)
1847  *
1848  * Reject Remote Frames Standard
1849  * 0= Filter remote frames with 11-bit standard IDs
1850  * 1= Reject all remote frames with 11-bit standard IDs
1851  */
1852 #define MCAN_GFC_RRFS_MASK (0x2U)
1853 #define MCAN_GFC_RRFS_SHIFT (1U)
1854 #define MCAN_GFC_RRFS_SET(x) (((uint32_t)(x) << MCAN_GFC_RRFS_SHIFT) & MCAN_GFC_RRFS_MASK)
1855 #define MCAN_GFC_RRFS_GET(x) (((uint32_t)(x) & MCAN_GFC_RRFS_MASK) >> MCAN_GFC_RRFS_SHIFT)
1856 
1857 /*
1858  * RRFE (RW)
1859  *
1860  * Reject Remote Frames Extended
1861  * 0= Filter remote frames with 29-bit extended IDs
1862  * 1= Reject all remote frames with 29-bit extended IDs
1863  */
1864 #define MCAN_GFC_RRFE_MASK (0x1U)
1865 #define MCAN_GFC_RRFE_SHIFT (0U)
1866 #define MCAN_GFC_RRFE_SET(x) (((uint32_t)(x) << MCAN_GFC_RRFE_SHIFT) & MCAN_GFC_RRFE_MASK)
1867 #define MCAN_GFC_RRFE_GET(x) (((uint32_t)(x) & MCAN_GFC_RRFE_MASK) >> MCAN_GFC_RRFE_SHIFT)
1868 
1869 /* Bitfield definition for register: SIDFC */
1870 /*
1871  * LSS (RW)
1872  *
1873  * List Size Standard
1874  * 0= No standard Message ID filter
1875  * 1-128= Number of standard Message ID filter elements
1876  * >128= Values greater than 128 are interpreted as 128
1877  */
1878 #define MCAN_SIDFC_LSS_MASK (0xFF0000UL)
1879 #define MCAN_SIDFC_LSS_SHIFT (16U)
1880 #define MCAN_SIDFC_LSS_SET(x) (((uint32_t)(x) << MCAN_SIDFC_LSS_SHIFT) & MCAN_SIDFC_LSS_MASK)
1881 #define MCAN_SIDFC_LSS_GET(x) (((uint32_t)(x) & MCAN_SIDFC_LSS_MASK) >> MCAN_SIDFC_LSS_SHIFT)
1882 
1883 /*
1884  * FLSSA (RW)
1885  *
1886  * Filter List Standard Start Address
1887  * Start address of standard Message ID filter list (32-bit word address)
1888  */
1889 #define MCAN_SIDFC_FLSSA_MASK (0xFFFCU)
1890 #define MCAN_SIDFC_FLSSA_SHIFT (2U)
1891 #define MCAN_SIDFC_FLSSA_SET(x) (((uint32_t)(x) << MCAN_SIDFC_FLSSA_SHIFT) & MCAN_SIDFC_FLSSA_MASK)
1892 #define MCAN_SIDFC_FLSSA_GET(x) (((uint32_t)(x) & MCAN_SIDFC_FLSSA_MASK) >> MCAN_SIDFC_FLSSA_SHIFT)
1893 
1894 /* Bitfield definition for register: XIDFC */
1895 /*
1896  * LSE (RW)
1897  *
1898  * List Size Extended
1899  * 0= No extended Message ID filter
1900  * 1-64= Number of extended Message ID filter elements
1901  * >64= Values greater than 64 are interpreted as 64
1902  */
1903 #define MCAN_XIDFC_LSE_MASK (0x7F0000UL)
1904 #define MCAN_XIDFC_LSE_SHIFT (16U)
1905 #define MCAN_XIDFC_LSE_SET(x) (((uint32_t)(x) << MCAN_XIDFC_LSE_SHIFT) & MCAN_XIDFC_LSE_MASK)
1906 #define MCAN_XIDFC_LSE_GET(x) (((uint32_t)(x) & MCAN_XIDFC_LSE_MASK) >> MCAN_XIDFC_LSE_SHIFT)
1907 
1908 /*
1909  * FLESA (RW)
1910  *
1911  * Filter List Extended Start Address
1912  * Start address of extended Message ID filter list (32-bit word address).
1913  */
1914 #define MCAN_XIDFC_FLESA_MASK (0xFFFCU)
1915 #define MCAN_XIDFC_FLESA_SHIFT (2U)
1916 #define MCAN_XIDFC_FLESA_SET(x) (((uint32_t)(x) << MCAN_XIDFC_FLESA_SHIFT) & MCAN_XIDFC_FLESA_MASK)
1917 #define MCAN_XIDFC_FLESA_GET(x) (((uint32_t)(x) & MCAN_XIDFC_FLESA_MASK) >> MCAN_XIDFC_FLESA_SHIFT)
1918 
1919 /* Bitfield definition for register: XIDAM */
1920 /*
1921  * EIDM (RW)
1922  *
1923  * Extended ID Mask
1924  * For acceptance filtering of extended frames the Extended ID AND Mask is ANDed with the Message ID of a received frame.
1925  * Intended for masking of 29-bit IDs in SAE J1939. With the reset value of all bits set to one the mask is not active.
1926  */
1927 #define MCAN_XIDAM_EIDM_MASK (0x1FFFFFFFUL)
1928 #define MCAN_XIDAM_EIDM_SHIFT (0U)
1929 #define MCAN_XIDAM_EIDM_SET(x) (((uint32_t)(x) << MCAN_XIDAM_EIDM_SHIFT) & MCAN_XIDAM_EIDM_MASK)
1930 #define MCAN_XIDAM_EIDM_GET(x) (((uint32_t)(x) & MCAN_XIDAM_EIDM_MASK) >> MCAN_XIDAM_EIDM_SHIFT)
1931 
1932 /* Bitfield definition for register: HPMS */
1933 /*
1934  * FLST (R)
1935  *
1936  * Filter List
1937  * Indicates the filter list of the matching filter element.
1938  * 0= Standard Filter List
1939  * 1= Extended Filter List
1940  */
1941 #define MCAN_HPMS_FLST_MASK (0x8000U)
1942 #define MCAN_HPMS_FLST_SHIFT (15U)
1943 #define MCAN_HPMS_FLST_GET(x) (((uint32_t)(x) & MCAN_HPMS_FLST_MASK) >> MCAN_HPMS_FLST_SHIFT)
1944 
1945 /*
1946  * FIDX (R)
1947  *
1948  * Filter Index
1949  * Index of matching filter element. Range is 0 to SIDFC.LSS - 1 resp. XIDFC.LSE - 1.
1950  */
1951 #define MCAN_HPMS_FIDX_MASK (0x7F00U)
1952 #define MCAN_HPMS_FIDX_SHIFT (8U)
1953 #define MCAN_HPMS_FIDX_GET(x) (((uint32_t)(x) & MCAN_HPMS_FIDX_MASK) >> MCAN_HPMS_FIDX_SHIFT)
1954 
1955 /*
1956  * MSI (R)
1957  *
1958  * Message Storage Indicator
1959  * 00= No FIFO selected
1960  * 01= FIFO message lost
1961  * 10= Message stored in FIFO 0
1962  * 11= Message stored in FIFO 1
1963  */
1964 #define MCAN_HPMS_MSI_MASK (0xC0U)
1965 #define MCAN_HPMS_MSI_SHIFT (6U)
1966 #define MCAN_HPMS_MSI_GET(x) (((uint32_t)(x) & MCAN_HPMS_MSI_MASK) >> MCAN_HPMS_MSI_SHIFT)
1967 
1968 /*
1969  * BIDX (R)
1970  *
1971  * Buffer Index
1972  * Index of Rx FIFO element to which the message was stored. Only valid when MSI[1] = ‘1’.
1973  */
1974 #define MCAN_HPMS_BIDX_MASK (0x3FU)
1975 #define MCAN_HPMS_BIDX_SHIFT (0U)
1976 #define MCAN_HPMS_BIDX_GET(x) (((uint32_t)(x) & MCAN_HPMS_BIDX_MASK) >> MCAN_HPMS_BIDX_SHIFT)
1977 
1978 /* Bitfield definition for register: NDAT1 */
1979 /*
1980  * ND1 (RW)
1981  *
1982  * New Data[31:0]
1983  * The register holds the New Data flags of Rx Buffers 0 to 31. The flags are set when the respective Rx Buffer has been updated from a received frame.
1984  * The flags remain set until the Host clears them.A flag is cleared by writing a ’1’ to the corresponding bit position. Writing a ’0’ has no effect. A hard reset will clear the register.
1985  * 0= Rx Buffer not updated
1986  * 1= Rx Buffer updated from new message
1987  */
1988 #define MCAN_NDAT1_ND1_MASK (0xFFFFFFFFUL)
1989 #define MCAN_NDAT1_ND1_SHIFT (0U)
1990 #define MCAN_NDAT1_ND1_SET(x) (((uint32_t)(x) << MCAN_NDAT1_ND1_SHIFT) & MCAN_NDAT1_ND1_MASK)
1991 #define MCAN_NDAT1_ND1_GET(x) (((uint32_t)(x) & MCAN_NDAT1_ND1_MASK) >> MCAN_NDAT1_ND1_SHIFT)
1992 
1993 /* Bitfield definition for register: NDAT2 */
1994 /*
1995  * ND2 (RW)
1996  *
1997  * New Data[63:32]
1998  * The register holds the New Data flags of Rx Buffers 32 to 63. The flags are set when the respective Rx Buffer has been updated from a received frame.
1999  * The flags remain set until the Host clears them. A flag is cleared by writing a ’1’ to the corresponding bit position. Writing a ’0’ has no effect. A hard reset will clear the register.
2000  * 0= Rx Buffer not updated
2001  * 1= Rx Buffer updated from new message
2002  */
2003 #define MCAN_NDAT2_ND2_MASK (0xFFFFFFFFUL)
2004 #define MCAN_NDAT2_ND2_SHIFT (0U)
2005 #define MCAN_NDAT2_ND2_SET(x) (((uint32_t)(x) << MCAN_NDAT2_ND2_SHIFT) & MCAN_NDAT2_ND2_MASK)
2006 #define MCAN_NDAT2_ND2_GET(x) (((uint32_t)(x) & MCAN_NDAT2_ND2_MASK) >> MCAN_NDAT2_ND2_SHIFT)
2007 
2008 /* Bitfield definition for register: RXF0C */
2009 /*
2010  * F0OM (RW)
2011  *
2012  * FIFO 0 Operation Mode
2013  * FIFO 0 can be operated in blocking or in overwrite mode (see Section 3.4.2).
2014  * 0= FIFO 0 blocking mode
2015  * 1= FIFO 0 overwrite mode
2016  */
2017 #define MCAN_RXF0C_F0OM_MASK (0x80000000UL)
2018 #define MCAN_RXF0C_F0OM_SHIFT (31U)
2019 #define MCAN_RXF0C_F0OM_SET(x) (((uint32_t)(x) << MCAN_RXF0C_F0OM_SHIFT) & MCAN_RXF0C_F0OM_MASK)
2020 #define MCAN_RXF0C_F0OM_GET(x) (((uint32_t)(x) & MCAN_RXF0C_F0OM_MASK) >> MCAN_RXF0C_F0OM_SHIFT)
2021 
2022 /*
2023  * F0WM (RW)
2024  *
2025  * Rx FIFO 0 Watermark
2026  * 0= Watermark interrupt disabled
2027  * 1-64= Level for Rx FIFO 0 watermark interrupt (IR.RF0W)
2028  * >64= Watermark interrupt disabled
2029  */
2030 #define MCAN_RXF0C_F0WM_MASK (0x7F000000UL)
2031 #define MCAN_RXF0C_F0WM_SHIFT (24U)
2032 #define MCAN_RXF0C_F0WM_SET(x) (((uint32_t)(x) << MCAN_RXF0C_F0WM_SHIFT) & MCAN_RXF0C_F0WM_MASK)
2033 #define MCAN_RXF0C_F0WM_GET(x) (((uint32_t)(x) & MCAN_RXF0C_F0WM_MASK) >> MCAN_RXF0C_F0WM_SHIFT)
2034 
2035 /*
2036  * F0S (RW)
2037  *
2038  * Rx FIFO 0 Size
2039  * 0= No Rx FIFO 0
2040  * 1-64= Number of Rx FIFO 0 elements
2041  * >64= Values greater than 64 are interpreted as 64
2042  * The Rx FIFO 0 elements are indexed from 0 to F0S-1
2043  */
2044 #define MCAN_RXF0C_F0S_MASK (0x7F0000UL)
2045 #define MCAN_RXF0C_F0S_SHIFT (16U)
2046 #define MCAN_RXF0C_F0S_SET(x) (((uint32_t)(x) << MCAN_RXF0C_F0S_SHIFT) & MCAN_RXF0C_F0S_MASK)
2047 #define MCAN_RXF0C_F0S_GET(x) (((uint32_t)(x) & MCAN_RXF0C_F0S_MASK) >> MCAN_RXF0C_F0S_SHIFT)
2048 
2049 /*
2050  * F0SA (RW)
2051  *
2052  * Rx FIFO 0 Start Address
2053  * Start address of Rx FIFO 0 in Message RAM (32-bit word address)
2054  */
2055 #define MCAN_RXF0C_F0SA_MASK (0xFFFCU)
2056 #define MCAN_RXF0C_F0SA_SHIFT (2U)
2057 #define MCAN_RXF0C_F0SA_SET(x) (((uint32_t)(x) << MCAN_RXF0C_F0SA_SHIFT) & MCAN_RXF0C_F0SA_MASK)
2058 #define MCAN_RXF0C_F0SA_GET(x) (((uint32_t)(x) & MCAN_RXF0C_F0SA_MASK) >> MCAN_RXF0C_F0SA_SHIFT)
2059 
2060 /* Bitfield definition for register: RXF0S */
2061 /*
2062  * RF0L (R)
2063  *
2064  * Rx FIFO 0 Message Lost
2065  * This bit is a copy of interrupt flag IR.RF0L. When IR.RF0L is reset, this bit is also reset.
2066  * 0= No Rx FIFO 0 message lost
2067  * 1= Rx FIFO 0 message lost, also set after write attempt to Rx FIFO 0 of size zero
2068  * Note: Overwriting the oldest message when RXF0C.F0OM = ‘1’ will not set this flag.
2069  */
2070 #define MCAN_RXF0S_RF0L_MASK (0x2000000UL)
2071 #define MCAN_RXF0S_RF0L_SHIFT (25U)
2072 #define MCAN_RXF0S_RF0L_GET(x) (((uint32_t)(x) & MCAN_RXF0S_RF0L_MASK) >> MCAN_RXF0S_RF0L_SHIFT)
2073 
2074 /*
2075  * F0F (R)
2076  *
2077  * Rx FIFO 0 Full
2078  * 0= Rx FIFO 0 not full
2079  * 1= Rx FIFO 0 full
2080  */
2081 #define MCAN_RXF0S_F0F_MASK (0x1000000UL)
2082 #define MCAN_RXF0S_F0F_SHIFT (24U)
2083 #define MCAN_RXF0S_F0F_GET(x) (((uint32_t)(x) & MCAN_RXF0S_F0F_MASK) >> MCAN_RXF0S_F0F_SHIFT)
2084 
2085 /*
2086  * F0PI (R)
2087  *
2088  * Rx FIFO 0 Put Index
2089  * Rx FIFO 0 write index pointer, range 0 to 63.
2090  */
2091 #define MCAN_RXF0S_F0PI_MASK (0x3F0000UL)
2092 #define MCAN_RXF0S_F0PI_SHIFT (16U)
2093 #define MCAN_RXF0S_F0PI_GET(x) (((uint32_t)(x) & MCAN_RXF0S_F0PI_MASK) >> MCAN_RXF0S_F0PI_SHIFT)
2094 
2095 /*
2096  * F0GI (R)
2097  *
2098  * Rx FIFO 0 Get Index
2099  * Rx FIFO 0 read index pointer, range 0 to 63.
2100  */
2101 #define MCAN_RXF0S_F0GI_MASK (0x3F00U)
2102 #define MCAN_RXF0S_F0GI_SHIFT (8U)
2103 #define MCAN_RXF0S_F0GI_GET(x) (((uint32_t)(x) & MCAN_RXF0S_F0GI_MASK) >> MCAN_RXF0S_F0GI_SHIFT)
2104 
2105 /*
2106  * F0FL (R)
2107  *
2108  * Rx FIFO 0 Fill Level
2109  * Number of elements stored in Rx FIFO 0, range 0 to 64.
2110  */
2111 #define MCAN_RXF0S_F0FL_MASK (0x7FU)
2112 #define MCAN_RXF0S_F0FL_SHIFT (0U)
2113 #define MCAN_RXF0S_F0FL_GET(x) (((uint32_t)(x) & MCAN_RXF0S_F0FL_MASK) >> MCAN_RXF0S_F0FL_SHIFT)
2114 
2115 /* Bitfield definition for register: RXF0A */
2116 /*
2117  * F0AI (RW)
2118  *
2119  * Rx FIFO 0 Acknowledge Index
2120  * After the Host has read a message or a sequence of messages from Rx FIFO 0 it has to write the buffer index of the last element read from Rx FIFO 0 to F0AI.
2121  * This will set the Rx FIFO 0 Get Index RXF0S.F0GI to F0AI + 1 and update the FIFO 0 Fill Level RXF0S.F0FL.
2122  */
2123 #define MCAN_RXF0A_F0AI_MASK (0x3FU)
2124 #define MCAN_RXF0A_F0AI_SHIFT (0U)
2125 #define MCAN_RXF0A_F0AI_SET(x) (((uint32_t)(x) << MCAN_RXF0A_F0AI_SHIFT) & MCAN_RXF0A_F0AI_MASK)
2126 #define MCAN_RXF0A_F0AI_GET(x) (((uint32_t)(x) & MCAN_RXF0A_F0AI_MASK) >> MCAN_RXF0A_F0AI_SHIFT)
2127 
2128 /* Bitfield definition for register: RXBC */
2129 /*
2130  * RBSA (RW)
2131  *
2132  * Rx Buffer Start Address
2133  * Configures the start address of the Rx Buffers section in the Message RAM (32-bit word address).Also used to reference debug messages A,B,C.
2134  */
2135 #define MCAN_RXBC_RBSA_MASK (0xFFFCU)
2136 #define MCAN_RXBC_RBSA_SHIFT (2U)
2137 #define MCAN_RXBC_RBSA_SET(x) (((uint32_t)(x) << MCAN_RXBC_RBSA_SHIFT) & MCAN_RXBC_RBSA_MASK)
2138 #define MCAN_RXBC_RBSA_GET(x) (((uint32_t)(x) & MCAN_RXBC_RBSA_MASK) >> MCAN_RXBC_RBSA_SHIFT)
2139 
2140 /* Bitfield definition for register: RXF1C */
2141 /*
2142  * F1OM (RW)
2143  *
2144  * FIFO 1 Operation Mode
2145  * FIFO 1 can be operated in blocking or in overwrite mode (see Section 3.4.2).
2146  * 0= FIFO 1 blocking mode
2147  * 1= FIFO 1 overwrite mode
2148  */
2149 #define MCAN_RXF1C_F1OM_MASK (0x80000000UL)
2150 #define MCAN_RXF1C_F1OM_SHIFT (31U)
2151 #define MCAN_RXF1C_F1OM_SET(x) (((uint32_t)(x) << MCAN_RXF1C_F1OM_SHIFT) & MCAN_RXF1C_F1OM_MASK)
2152 #define MCAN_RXF1C_F1OM_GET(x) (((uint32_t)(x) & MCAN_RXF1C_F1OM_MASK) >> MCAN_RXF1C_F1OM_SHIFT)
2153 
2154 /*
2155  * F1WM (RW)
2156  *
2157  * Rx FIFO 1 Watermark
2158  * 0= Watermark interrupt disabled
2159  * 1-64= Level for Rx FIFO 1 watermark interrupt (IR.RF1W)
2160  * >64= Watermark interrupt disabled
2161  */
2162 #define MCAN_RXF1C_F1WM_MASK (0x7F000000UL)
2163 #define MCAN_RXF1C_F1WM_SHIFT (24U)
2164 #define MCAN_RXF1C_F1WM_SET(x) (((uint32_t)(x) << MCAN_RXF1C_F1WM_SHIFT) & MCAN_RXF1C_F1WM_MASK)
2165 #define MCAN_RXF1C_F1WM_GET(x) (((uint32_t)(x) & MCAN_RXF1C_F1WM_MASK) >> MCAN_RXF1C_F1WM_SHIFT)
2166 
2167 /*
2168  * F1S (RW)
2169  *
2170  * Rx FIFO 1 Size
2171  * 0= No Rx FIFO 1
2172  * 1-64= Number of Rx FIFO 1 elements
2173  * >64= Values greater than 64 are interpreted as 64
2174  * The Rx FIFO 1 elements are indexed from 0 to F1S - 1
2175  */
2176 #define MCAN_RXF1C_F1S_MASK (0x7F0000UL)
2177 #define MCAN_RXF1C_F1S_SHIFT (16U)
2178 #define MCAN_RXF1C_F1S_SET(x) (((uint32_t)(x) << MCAN_RXF1C_F1S_SHIFT) & MCAN_RXF1C_F1S_MASK)
2179 #define MCAN_RXF1C_F1S_GET(x) (((uint32_t)(x) & MCAN_RXF1C_F1S_MASK) >> MCAN_RXF1C_F1S_SHIFT)
2180 
2181 /*
2182  * F1SA (RW)
2183  *
2184  * Rx FIFO 1 Start Address
2185  * Start address of Rx FIFO 1 in Message RAM (32-bit word address)
2186  */
2187 #define MCAN_RXF1C_F1SA_MASK (0xFFFCU)
2188 #define MCAN_RXF1C_F1SA_SHIFT (2U)
2189 #define MCAN_RXF1C_F1SA_SET(x) (((uint32_t)(x) << MCAN_RXF1C_F1SA_SHIFT) & MCAN_RXF1C_F1SA_MASK)
2190 #define MCAN_RXF1C_F1SA_GET(x) (((uint32_t)(x) & MCAN_RXF1C_F1SA_MASK) >> MCAN_RXF1C_F1SA_SHIFT)
2191 
2192 /* Bitfield definition for register: RXF1S */
2193 /*
2194  * DMS (R)
2195  *
2196  * Debug Message Status
2197  * 00= Idle state, wait for reception of debug messages, DMA request is cleared
2198  * 01= Debug message A received
2199  * 10= Debug messages A, B received
2200  * 11= Debug messages A, B, C received, DMA request is set
2201  */
2202 #define MCAN_RXF1S_DMS_MASK (0xC0000000UL)
2203 #define MCAN_RXF1S_DMS_SHIFT (30U)
2204 #define MCAN_RXF1S_DMS_GET(x) (((uint32_t)(x) & MCAN_RXF1S_DMS_MASK) >> MCAN_RXF1S_DMS_SHIFT)
2205 
2206 /*
2207  * RF1L (R)
2208  *
2209  * Rx FIFO 1 Message Lost
2210  * This bit is a copy of interrupt flag IR.RF1L. When IR.RF1L is reset, this bit is also reset.
2211  * 0= No Rx FIFO 1 message lost
2212  * 1= Rx FIFO 1 message lost, also set after write attempt to Rx FIFO 1 of size zero
2213  * Note: Overwriting the oldest message when RXF1C.F1OM = ‘1’ will not set this flag.
2214  */
2215 #define MCAN_RXF1S_RF1L_MASK (0x2000000UL)
2216 #define MCAN_RXF1S_RF1L_SHIFT (25U)
2217 #define MCAN_RXF1S_RF1L_GET(x) (((uint32_t)(x) & MCAN_RXF1S_RF1L_MASK) >> MCAN_RXF1S_RF1L_SHIFT)
2218 
2219 /*
2220  * F1F (R)
2221  *
2222  * Rx FIFO 1 Full
2223  * 0= Rx FIFO 1 not full
2224  * 1= Rx FIFO 1 full
2225  */
2226 #define MCAN_RXF1S_F1F_MASK (0x1000000UL)
2227 #define MCAN_RXF1S_F1F_SHIFT (24U)
2228 #define MCAN_RXF1S_F1F_GET(x) (((uint32_t)(x) & MCAN_RXF1S_F1F_MASK) >> MCAN_RXF1S_F1F_SHIFT)
2229 
2230 /*
2231  * F1PI (R)
2232  *
2233  * Rx FIFO 1 Put Index
2234  * Rx FIFO 1 write index pointer, range 0 to 63.
2235  */
2236 #define MCAN_RXF1S_F1PI_MASK (0x3F0000UL)
2237 #define MCAN_RXF1S_F1PI_SHIFT (16U)
2238 #define MCAN_RXF1S_F1PI_GET(x) (((uint32_t)(x) & MCAN_RXF1S_F1PI_MASK) >> MCAN_RXF1S_F1PI_SHIFT)
2239 
2240 /*
2241  * F1GI (R)
2242  *
2243  * Rx FIFO 1 Get Index
2244  * Rx FIFO 1 read index pointer, range 0 to 63.
2245  */
2246 #define MCAN_RXF1S_F1GI_MASK (0x3F00U)
2247 #define MCAN_RXF1S_F1GI_SHIFT (8U)
2248 #define MCAN_RXF1S_F1GI_GET(x) (((uint32_t)(x) & MCAN_RXF1S_F1GI_MASK) >> MCAN_RXF1S_F1GI_SHIFT)
2249 
2250 /*
2251  * F1FL (R)
2252  *
2253  * Rx FIFO 1 Fill Level
2254  * Number of elements stored in Rx FIFO 1, range 0 to 64.
2255  */
2256 #define MCAN_RXF1S_F1FL_MASK (0x7FU)
2257 #define MCAN_RXF1S_F1FL_SHIFT (0U)
2258 #define MCAN_RXF1S_F1FL_GET(x) (((uint32_t)(x) & MCAN_RXF1S_F1FL_MASK) >> MCAN_RXF1S_F1FL_SHIFT)
2259 
2260 /* Bitfield definition for register: RXF1A */
2261 /*
2262  * F1AI (RW)
2263  *
2264  * Rx FIFO 1 Acknowledge Index
2265  * After the Host has read a message or a sequence of messages from Rx FIFO 1 it has to write the buffer index of the last element read from Rx FIFO 1 to F1AI.
2266  * This will set the Rx FIFO 1 Get Index RXF1S.F1GI to F1AI + 1 and update the FIFO 1 Fill Level RXF1S.F1FL.
2267  */
2268 #define MCAN_RXF1A_F1AI_MASK (0x3FU)
2269 #define MCAN_RXF1A_F1AI_SHIFT (0U)
2270 #define MCAN_RXF1A_F1AI_SET(x) (((uint32_t)(x) << MCAN_RXF1A_F1AI_SHIFT) & MCAN_RXF1A_F1AI_MASK)
2271 #define MCAN_RXF1A_F1AI_GET(x) (((uint32_t)(x) & MCAN_RXF1A_F1AI_MASK) >> MCAN_RXF1A_F1AI_SHIFT)
2272 
2273 /* Bitfield definition for register: RXESC */
2274 /*
2275  * RBDS (RW)
2276  *
2277  * Rx Buffer Data Field Size
2278  * 000= 8 byte data field
2279  * 001= 12 byte data field
2280  * 010= 16 byte data field
2281  * 011= 20 byte data field
2282  * 100= 24 byte data field
2283  * 101= 32 byte data field
2284  * 110= 48 byte data field
2285  * 111= 64 byte data field
2286  */
2287 #define MCAN_RXESC_RBDS_MASK (0x700U)
2288 #define MCAN_RXESC_RBDS_SHIFT (8U)
2289 #define MCAN_RXESC_RBDS_SET(x) (((uint32_t)(x) << MCAN_RXESC_RBDS_SHIFT) & MCAN_RXESC_RBDS_MASK)
2290 #define MCAN_RXESC_RBDS_GET(x) (((uint32_t)(x) & MCAN_RXESC_RBDS_MASK) >> MCAN_RXESC_RBDS_SHIFT)
2291 
2292 /*
2293  * F1DS (RW)
2294  *
2295  * Rx FIFO 1 Data Field Size
2296  * 000= 8 byte data field
2297  * 001= 12 byte data field
2298  * 010= 16 byte data field
2299  * 011= 20 byte data field
2300  * 100= 24 byte data field
2301  * 101= 32 byte data field
2302  * 110= 48 byte data field
2303  * 111= 64 byte data field
2304  */
2305 #define MCAN_RXESC_F1DS_MASK (0x70U)
2306 #define MCAN_RXESC_F1DS_SHIFT (4U)
2307 #define MCAN_RXESC_F1DS_SET(x) (((uint32_t)(x) << MCAN_RXESC_F1DS_SHIFT) & MCAN_RXESC_F1DS_MASK)
2308 #define MCAN_RXESC_F1DS_GET(x) (((uint32_t)(x) & MCAN_RXESC_F1DS_MASK) >> MCAN_RXESC_F1DS_SHIFT)
2309 
2310 /*
2311  * F0DS (RW)
2312  *
2313  * Rx FIFO 0 Data Field Size
2314  * 000= 8 byte data field
2315  * 001= 12 byte data field
2316  * 010= 16 byte data field
2317  * 011= 20 byte data field
2318  * 100= 24 byte data field
2319  * 101= 32 byte data field
2320  * 110= 48 byte data field
2321  * 111= 64 byte data field
2322  * Note: In case the data field size of an accepted CAN frame exceeds the data field size configured for the matching Rx Buffer or Rx FIFO,
2323  * only the number of bytes as configured by RXESC are stored to the Rx Buffer resp. Rx FIFO element. The rest of the frame’s data field is ignored.
2324  */
2325 #define MCAN_RXESC_F0DS_MASK (0x7U)
2326 #define MCAN_RXESC_F0DS_SHIFT (0U)
2327 #define MCAN_RXESC_F0DS_SET(x) (((uint32_t)(x) << MCAN_RXESC_F0DS_SHIFT) & MCAN_RXESC_F0DS_MASK)
2328 #define MCAN_RXESC_F0DS_GET(x) (((uint32_t)(x) & MCAN_RXESC_F0DS_MASK) >> MCAN_RXESC_F0DS_SHIFT)
2329 
2330 /* Bitfield definition for register: TXBC */
2331 /*
2332  * TFQM (RW)
2333  *
2334  * Tx FIFO/Queue Mode
2335  * 0= Tx FIFO operation
2336  * 1= Tx Queue operation
2337  */
2338 #define MCAN_TXBC_TFQM_MASK (0x40000000UL)
2339 #define MCAN_TXBC_TFQM_SHIFT (30U)
2340 #define MCAN_TXBC_TFQM_SET(x) (((uint32_t)(x) << MCAN_TXBC_TFQM_SHIFT) & MCAN_TXBC_TFQM_MASK)
2341 #define MCAN_TXBC_TFQM_GET(x) (((uint32_t)(x) & MCAN_TXBC_TFQM_MASK) >> MCAN_TXBC_TFQM_SHIFT)
2342 
2343 /*
2344  * TFQS (RW)
2345  *
2346  * Transmit FIFO/Queue Size
2347  * 0= No Tx FIFO/Queue
2348  * 1-32= Number of Tx Buffers used for Tx FIFO/Queue
2349  * >32= Values greater than 32 are interpreted as 32
2350  */
2351 #define MCAN_TXBC_TFQS_MASK (0x3F000000UL)
2352 #define MCAN_TXBC_TFQS_SHIFT (24U)
2353 #define MCAN_TXBC_TFQS_SET(x) (((uint32_t)(x) << MCAN_TXBC_TFQS_SHIFT) & MCAN_TXBC_TFQS_MASK)
2354 #define MCAN_TXBC_TFQS_GET(x) (((uint32_t)(x) & MCAN_TXBC_TFQS_MASK) >> MCAN_TXBC_TFQS_SHIFT)
2355 
2356 /*
2357  * NDTB (RW)
2358  *
2359  * Number of Dedicated Transmit Buffers
2360  * 0= No Dedicated Tx Buffers
2361  * 1-32= Number of Dedicated Tx Buffers
2362  * >32= Values greater than 32 are interpreted as 32
2363  */
2364 #define MCAN_TXBC_NDTB_MASK (0x3F0000UL)
2365 #define MCAN_TXBC_NDTB_SHIFT (16U)
2366 #define MCAN_TXBC_NDTB_SET(x) (((uint32_t)(x) << MCAN_TXBC_NDTB_SHIFT) & MCAN_TXBC_NDTB_MASK)
2367 #define MCAN_TXBC_NDTB_GET(x) (((uint32_t)(x) & MCAN_TXBC_NDTB_MASK) >> MCAN_TXBC_NDTB_SHIFT)
2368 
2369 /*
2370  * TBSA (RW)
2371  *
2372  * Tx Buffers Start Address
2373  * Start address of Tx Buffers section in Message RAM (32-bit word address, see Figure 2).
2374  * Note: Be aware that the sum of TFQS and NDTB may be not greater than 32. There is no check for erroneous configurations. The Tx Buffers section in the Message RAM starts with the dedicated Tx Buffers.
2375  */
2376 #define MCAN_TXBC_TBSA_MASK (0xFFFCU)
2377 #define MCAN_TXBC_TBSA_SHIFT (2U)
2378 #define MCAN_TXBC_TBSA_SET(x) (((uint32_t)(x) << MCAN_TXBC_TBSA_SHIFT) & MCAN_TXBC_TBSA_MASK)
2379 #define MCAN_TXBC_TBSA_GET(x) (((uint32_t)(x) & MCAN_TXBC_TBSA_MASK) >> MCAN_TXBC_TBSA_SHIFT)
2380 
2381 /* Bitfield definition for register: TXFQS */
2382 /*
2383  * TFQF (R)
2384  *
2385  * Tx FIFO/Queue Full
2386  * 0= Tx FIFO/Queue not full
2387  * 1= Tx FIFO/Queue full
2388  */
2389 #define MCAN_TXFQS_TFQF_MASK (0x200000UL)
2390 #define MCAN_TXFQS_TFQF_SHIFT (21U)
2391 #define MCAN_TXFQS_TFQF_GET(x) (((uint32_t)(x) & MCAN_TXFQS_TFQF_MASK) >> MCAN_TXFQS_TFQF_SHIFT)
2392 
2393 /*
2394  * TFQPI (R)
2395  *
2396  * Tx FIFO/Queue Put Index
2397  * Tx FIFO/Queue write index pointer, range 0 to 31.
2398  */
2399 #define MCAN_TXFQS_TFQPI_MASK (0x1F0000UL)
2400 #define MCAN_TXFQS_TFQPI_SHIFT (16U)
2401 #define MCAN_TXFQS_TFQPI_GET(x) (((uint32_t)(x) & MCAN_TXFQS_TFQPI_MASK) >> MCAN_TXFQS_TFQPI_SHIFT)
2402 
2403 /*
2404  * TFGI (R)
2405  *
2406  * Tx FIFO Get Index
2407  * Tx FIFO read index pointer, range 0 to 31. Read as zero when Tx Queue operation is configured
2408  * (TXBC.TFQM = ‘1’).
2409  */
2410 #define MCAN_TXFQS_TFGI_MASK (0x1F00U)
2411 #define MCAN_TXFQS_TFGI_SHIFT (8U)
2412 #define MCAN_TXFQS_TFGI_GET(x) (((uint32_t)(x) & MCAN_TXFQS_TFGI_MASK) >> MCAN_TXFQS_TFGI_SHIFT)
2413 
2414 /*
2415  * TFFL (R)
2416  *
2417  * Tx FIFO Free Level
2418  * Number of consecutive free Tx FIFO elements starting from TFGI, range 0 to 32. Read as zero when Tx Queue operation is configured (TXBC.TFQM = ‘1’)
2419  * Note: In case of mixed configurations where dedicated Tx Buffers are combined with a Tx FIFO or a Tx Queue, the Put and Get Indices indicate the number of the Tx Buffer starting with
2420  * the first dedicated Tx Buffers.
2421  * Example: For a configuration of 12 dedicated Tx Buffers and a Tx FIFO of 20 Buffers a Put Index of 15 points to the fourth buffer of the Tx FIFO.
2422  */
2423 #define MCAN_TXFQS_TFFL_MASK (0x3FU)
2424 #define MCAN_TXFQS_TFFL_SHIFT (0U)
2425 #define MCAN_TXFQS_TFFL_GET(x) (((uint32_t)(x) & MCAN_TXFQS_TFFL_MASK) >> MCAN_TXFQS_TFFL_SHIFT)
2426 
2427 /* Bitfield definition for register: TXESC */
2428 /*
2429  * TBDS (RW)
2430  *
2431  * Tx Buffer Data Field Size
2432  * 000= 8 byte data field
2433  * 001= 12 byte data field
2434  * 010= 16 byte data field
2435  * 011= 20 byte data field
2436  * 100= 24 byte data field
2437  * 101= 32 byte data field
2438  * 110= 48 byte data field
2439  * 111= 64 byte data field
2440  * Note: In case the data length code DLC of a Tx Buffer element is configured to a value higher than the Tx Buffer data field size TXESC.TBDS, the bytes not defined by the Tx Buffer are transmitted as “0xCC” (padding bytes).
2441  */
2442 #define MCAN_TXESC_TBDS_MASK (0x7U)
2443 #define MCAN_TXESC_TBDS_SHIFT (0U)
2444 #define MCAN_TXESC_TBDS_SET(x) (((uint32_t)(x) << MCAN_TXESC_TBDS_SHIFT) & MCAN_TXESC_TBDS_MASK)
2445 #define MCAN_TXESC_TBDS_GET(x) (((uint32_t)(x) & MCAN_TXESC_TBDS_MASK) >> MCAN_TXESC_TBDS_SHIFT)
2446 
2447 /* Bitfield definition for register: TXBRP */
2448 /*
2449  * TRP (R)
2450  *
2451  * Transmission Request Pending
2452  * Each Tx Buffer has its own Transmission Request Pending bit. The bits are set via register TXBAR.The bits are reset after a requested transmission has completed or has been cancelled via register
2453  * TXBCR.
2454  * TXBRP bits are set only for those Tx Buffers configured via TXBC. After a TXBRP bit has been set, a Tx scan (see Section 3.5, Tx Handling) is started to check for the pending Tx request with the
2455  * highest priority (Tx Buffer with lowest Message ID).
2456  * A cancellation request resets the corresponding transmission request pending bit of register TXBRP. In case a transmission has already been started when a cancellation is requested,
2457  * this is done at the end of the transmission, regardless whether the transmission was successful or not. The cancellation request bits are reset directly after the corresponding TXBRP bit has been reset.
2458  * After a cancellation has been requested, a finished cancellation is signalled via TXBCF
2459  * ? after successful transmission together with the corresponding TXBTO bit
2460  * ? when the transmission has not yet been started at the point of cancellation
2461  * ? when the transmission has been aborted due to lost arbitration
2462  * ? when an error occurred during frame transmission
2463  * In DAR mode all transmissions are automatically cancelled if they are not successful. The corresponding TXBCF bit is set for all unsuccessful transmissions.
2464  * 0= No transmission request pending
2465  * 1= Transmission request pending
2466  * Note: TXBRP bits which are set while a Tx scan is in progress are not considered during this particular Tx scan. In case a cancellation is requested for such a Tx Buffer, this Add Request is cancelled immediately, the corresponding TXBRP bit is reset.
2467  */
2468 #define MCAN_TXBRP_TRP_MASK (0xFFFFFFFFUL)
2469 #define MCAN_TXBRP_TRP_SHIFT (0U)
2470 #define MCAN_TXBRP_TRP_GET(x) (((uint32_t)(x) & MCAN_TXBRP_TRP_MASK) >> MCAN_TXBRP_TRP_SHIFT)
2471 
2472 /* Bitfield definition for register: TXBAR */
2473 /*
2474  * AR (RW)
2475  *
2476  * Add Request
2477  * Each Tx Buffer has its own Add Request bit. Writing a ‘1’ will set the corresponding Add Request bit; writing a ‘0’ has no impact. This enables the Host to set transmission requests for multiple Tx
2478  * Buffers with one write to TXBAR. TXBAR bits are set only for those Tx Buffers configured via TXBC.
2479  * When no Tx scan is running, the bits are reset immediately, else the bits remain set until the Tx scan process has completed.
2480  * 0= No transmission request added
2481  * 1= Transmission requested added
2482  * Note: If an add request is applied for a Tx Buffer with pending transmission request (corresponding TXBRP bit already set), this add request is ignored.
2483  */
2484 #define MCAN_TXBAR_AR_MASK (0xFFFFFFFFUL)
2485 #define MCAN_TXBAR_AR_SHIFT (0U)
2486 #define MCAN_TXBAR_AR_SET(x) (((uint32_t)(x) << MCAN_TXBAR_AR_SHIFT) & MCAN_TXBAR_AR_MASK)
2487 #define MCAN_TXBAR_AR_GET(x) (((uint32_t)(x) & MCAN_TXBAR_AR_MASK) >> MCAN_TXBAR_AR_SHIFT)
2488 
2489 /* Bitfield definition for register: TXBCR */
2490 /*
2491  * CR (RW)
2492  *
2493  * Cancellation Request
2494  * Each Tx Buffer has its own Cancellation Request bit. Writing a ‘1’ will set the corresponding Cancellation Request bit; writing a ‘0’ has no impact.
2495  * This enables the Host to set cancellation requests for multiple Tx Buffers with one write to TXBCR. TXBCR bits are set only for those Tx Buffers configured via TXBC. The bits remain set until the corresponding bit of TXBRP is reset.
2496  * 0= No cancellation pending
2497  * 1= Cancellation pending
2498  */
2499 #define MCAN_TXBCR_CR_MASK (0xFFFFFFFFUL)
2500 #define MCAN_TXBCR_CR_SHIFT (0U)
2501 #define MCAN_TXBCR_CR_SET(x) (((uint32_t)(x) << MCAN_TXBCR_CR_SHIFT) & MCAN_TXBCR_CR_MASK)
2502 #define MCAN_TXBCR_CR_GET(x) (((uint32_t)(x) & MCAN_TXBCR_CR_MASK) >> MCAN_TXBCR_CR_SHIFT)
2503 
2504 /* Bitfield definition for register: TXBTO */
2505 /*
2506  * TO (R)
2507  *
2508  * Transmission Occurred
2509  * Each Tx Buffer has its own Transmission Occurred bit. The bits are set when the corresponding TXBRP bit is cleared after a successful transmission. The bits are reset when a new transmission is requested by writing a ‘1’ to the corresponding bit of register TXBAR.
2510  * 0= No transmission occurred
2511  * 1= Transmission occurred
2512  */
2513 #define MCAN_TXBTO_TO_MASK (0xFFFFFFFFUL)
2514 #define MCAN_TXBTO_TO_SHIFT (0U)
2515 #define MCAN_TXBTO_TO_GET(x) (((uint32_t)(x) & MCAN_TXBTO_TO_MASK) >> MCAN_TXBTO_TO_SHIFT)
2516 
2517 /* Bitfield definition for register: TXBCF */
2518 /*
2519  * CF (R)
2520  *
2521  * Cancellation Finished
2522  * Each Tx Buffer has its own Cancellation Finished bit. The bits are set when the corresponding TXBRP bit is cleared after a cancellation was requested via TXBCR.
2523  * In case the corresponding TXBRP bit was not set at the point of cancellation, CF is set immediately. The bits are reset when a new transmission is requested by writing a ‘1’ to the corresponding bit of register TXBAR.
2524  * 0= No transmit buffer cancellation
2525  * 1= Transmit buffer cancellation finished
2526  */
2527 #define MCAN_TXBCF_CF_MASK (0xFFFFFFFFUL)
2528 #define MCAN_TXBCF_CF_SHIFT (0U)
2529 #define MCAN_TXBCF_CF_GET(x) (((uint32_t)(x) & MCAN_TXBCF_CF_MASK) >> MCAN_TXBCF_CF_SHIFT)
2530 
2531 /* Bitfield definition for register: TXBTIE */
2532 /*
2533  * TIE (RW)
2534  *
2535  * Transmission Interrupt Enable
2536  * Each Tx Buffer has its own Transmission Interrupt Enable bit.
2537  * 0= Transmission interrupt disabled
2538  * 1= Transmission interrupt enable
2539  */
2540 #define MCAN_TXBTIE_TIE_MASK (0xFFFFFFFFUL)
2541 #define MCAN_TXBTIE_TIE_SHIFT (0U)
2542 #define MCAN_TXBTIE_TIE_SET(x) (((uint32_t)(x) << MCAN_TXBTIE_TIE_SHIFT) & MCAN_TXBTIE_TIE_MASK)
2543 #define MCAN_TXBTIE_TIE_GET(x) (((uint32_t)(x) & MCAN_TXBTIE_TIE_MASK) >> MCAN_TXBTIE_TIE_SHIFT)
2544 
2545 /* Bitfield definition for register: TXBCIE */
2546 /*
2547  * CFIE (RW)
2548  *
2549  * Cancellation Finished Interrupt Enable
2550  * Each Tx Buffer has its own Cancellation Finished Interrupt Enable bit.
2551  * 0= Cancellation finished interrupt disabled
2552  * 1= Cancellation finished interrupt enabled
2553  */
2554 #define MCAN_TXBCIE_CFIE_MASK (0xFFFFFFFFUL)
2555 #define MCAN_TXBCIE_CFIE_SHIFT (0U)
2556 #define MCAN_TXBCIE_CFIE_SET(x) (((uint32_t)(x) << MCAN_TXBCIE_CFIE_SHIFT) & MCAN_TXBCIE_CFIE_MASK)
2557 #define MCAN_TXBCIE_CFIE_GET(x) (((uint32_t)(x) & MCAN_TXBCIE_CFIE_MASK) >> MCAN_TXBCIE_CFIE_SHIFT)
2558 
2559 /* Bitfield definition for register: TXEFC */
2560 /*
2561  * EFWM (RW)
2562  *
2563  * Event FIFO Watermark
2564  * 0= Watermark interrupt disabled
2565  * 1-32= Level for Tx Event FIFO watermark interrupt (IR.TEFW)
2566  * >32= Watermark interrupt disabled
2567  */
2568 #define MCAN_TXEFC_EFWM_MASK (0x3F000000UL)
2569 #define MCAN_TXEFC_EFWM_SHIFT (24U)
2570 #define MCAN_TXEFC_EFWM_SET(x) (((uint32_t)(x) << MCAN_TXEFC_EFWM_SHIFT) & MCAN_TXEFC_EFWM_MASK)
2571 #define MCAN_TXEFC_EFWM_GET(x) (((uint32_t)(x) & MCAN_TXEFC_EFWM_MASK) >> MCAN_TXEFC_EFWM_SHIFT)
2572 
2573 /*
2574  * EFS (RW)
2575  *
2576  * Event FIFO Size
2577  * 0= Tx Event FIFO disabled
2578  * 1-32= Number of Tx Event FIFO elements
2579  * >32= Values greater than 32 are interpreted as 32
2580  * The Tx Event FIFO elements are indexed from 0 to EFS - 1
2581  */
2582 #define MCAN_TXEFC_EFS_MASK (0x3F0000UL)
2583 #define MCAN_TXEFC_EFS_SHIFT (16U)
2584 #define MCAN_TXEFC_EFS_SET(x) (((uint32_t)(x) << MCAN_TXEFC_EFS_SHIFT) & MCAN_TXEFC_EFS_MASK)
2585 #define MCAN_TXEFC_EFS_GET(x) (((uint32_t)(x) & MCAN_TXEFC_EFS_MASK) >> MCAN_TXEFC_EFS_SHIFT)
2586 
2587 /*
2588  * EFSA (RW)
2589  *
2590  * Event FIFO Start Address
2591  * Start address of Tx Event FIFO in Message RAM (32-bit word address)
2592  */
2593 #define MCAN_TXEFC_EFSA_MASK (0xFFFCU)
2594 #define MCAN_TXEFC_EFSA_SHIFT (2U)
2595 #define MCAN_TXEFC_EFSA_SET(x) (((uint32_t)(x) << MCAN_TXEFC_EFSA_SHIFT) & MCAN_TXEFC_EFSA_MASK)
2596 #define MCAN_TXEFC_EFSA_GET(x) (((uint32_t)(x) & MCAN_TXEFC_EFSA_MASK) >> MCAN_TXEFC_EFSA_SHIFT)
2597 
2598 /* Bitfield definition for register: TXEFS */
2599 /*
2600  * TEFL (R)
2601  *
2602  * Tx Event FIFO Element Lost
2603  * This bit is a copy of interrupt flag IR.TEFL. When IR.TEFL is reset, this bit is also reset.
2604  * 0= No Tx Event FIFO element lost
2605  * 1= Tx Event FIFO element lost, also set after write attempt to Tx Event FIFO of size zero.
2606  */
2607 #define MCAN_TXEFS_TEFL_MASK (0x2000000UL)
2608 #define MCAN_TXEFS_TEFL_SHIFT (25U)
2609 #define MCAN_TXEFS_TEFL_GET(x) (((uint32_t)(x) & MCAN_TXEFS_TEFL_MASK) >> MCAN_TXEFS_TEFL_SHIFT)
2610 
2611 /*
2612  * EFF (R)
2613  *
2614  * Event FIFO Full
2615  * 0= Tx Event FIFO not full
2616  * 1= Tx Event FIFO full
2617  */
2618 #define MCAN_TXEFS_EFF_MASK (0x1000000UL)
2619 #define MCAN_TXEFS_EFF_SHIFT (24U)
2620 #define MCAN_TXEFS_EFF_GET(x) (((uint32_t)(x) & MCAN_TXEFS_EFF_MASK) >> MCAN_TXEFS_EFF_SHIFT)
2621 
2622 /*
2623  * EFPI (R)
2624  *
2625  * Event FIFO Put Index
2626  * Tx Event FIFO write index pointer, range 0 to 31.
2627  */
2628 #define MCAN_TXEFS_EFPI_MASK (0x1F0000UL)
2629 #define MCAN_TXEFS_EFPI_SHIFT (16U)
2630 #define MCAN_TXEFS_EFPI_GET(x) (((uint32_t)(x) & MCAN_TXEFS_EFPI_MASK) >> MCAN_TXEFS_EFPI_SHIFT)
2631 
2632 /*
2633  * EFGI (R)
2634  *
2635  * Event FIFO Get Index
2636  * Tx Event FIFO read index pointer, range 0 to 31.
2637  */
2638 #define MCAN_TXEFS_EFGI_MASK (0x1F00U)
2639 #define MCAN_TXEFS_EFGI_SHIFT (8U)
2640 #define MCAN_TXEFS_EFGI_GET(x) (((uint32_t)(x) & MCAN_TXEFS_EFGI_MASK) >> MCAN_TXEFS_EFGI_SHIFT)
2641 
2642 /*
2643  * EFFL (R)
2644  *
2645  * Event FIFO Fill Level
2646  * Number of elements stored in Tx Event FIFO, range 0 to 32.
2647  */
2648 #define MCAN_TXEFS_EFFL_MASK (0x3FU)
2649 #define MCAN_TXEFS_EFFL_SHIFT (0U)
2650 #define MCAN_TXEFS_EFFL_GET(x) (((uint32_t)(x) & MCAN_TXEFS_EFFL_MASK) >> MCAN_TXEFS_EFFL_SHIFT)
2651 
2652 /* Bitfield definition for register: TXEFA */
2653 /*
2654  * EFAI (RW)
2655  *
2656  * Event FIFO Acknowledge Index
2657  * After the Host has read an element or a sequence of elements from the Tx Event FIFO it has to write the index of the last element read from Tx Event FIFO to EFAI. This will set the Tx Event FIFO Get
2658  * Index TXEFS.EFGI to EFAI + 1 and update the Event FIFO Fill Level TXEFS.EFFL.
2659  */
2660 #define MCAN_TXEFA_EFAI_MASK (0x1FU)
2661 #define MCAN_TXEFA_EFAI_SHIFT (0U)
2662 #define MCAN_TXEFA_EFAI_SET(x) (((uint32_t)(x) << MCAN_TXEFA_EFAI_SHIFT) & MCAN_TXEFA_EFAI_MASK)
2663 #define MCAN_TXEFA_EFAI_GET(x) (((uint32_t)(x) & MCAN_TXEFA_EFAI_MASK) >> MCAN_TXEFA_EFAI_SHIFT)
2664 
2665 /* Bitfield definition for register array: TS_SEL */
2666 /*
2667  * TS (R)
2668  *
2669  * Timestamp Word TS
2670  * default can save 16 timestamps with 32bit;
2671  * if ts64_en is set, then work at 64bit mode, can save 8 timestamps with 01/23/45….
2672  */
2673 #define MCAN_TS_SEL_TS_MASK (0xFFFFFFFFUL)
2674 #define MCAN_TS_SEL_TS_SHIFT (0U)
2675 #define MCAN_TS_SEL_TS_GET(x) (((uint32_t)(x) & MCAN_TS_SEL_TS_MASK) >> MCAN_TS_SEL_TS_SHIFT)
2676 
2677 /* Bitfield definition for register: CREL */
2678 /*
2679  * REL (R)
2680  *
2681  * Core Release
2682  * One digit, BCD-coded
2683  */
2684 #define MCAN_CREL_REL_MASK (0xF0000000UL)
2685 #define MCAN_CREL_REL_SHIFT (28U)
2686 #define MCAN_CREL_REL_GET(x) (((uint32_t)(x) & MCAN_CREL_REL_MASK) >> MCAN_CREL_REL_SHIFT)
2687 
2688 /*
2689  * STEP (R)
2690  *
2691  * Step of Core Release
2692  * One digit, BCD-coded.
2693  */
2694 #define MCAN_CREL_STEP_MASK (0xF000000UL)
2695 #define MCAN_CREL_STEP_SHIFT (24U)
2696 #define MCAN_CREL_STEP_GET(x) (((uint32_t)(x) & MCAN_CREL_STEP_MASK) >> MCAN_CREL_STEP_SHIFT)
2697 
2698 /*
2699  * SUBSTEP (R)
2700  *
2701  * Sub-step of Core Release
2702  * One digit, BCD-coded
2703  */
2704 #define MCAN_CREL_SUBSTEP_MASK (0xF00000UL)
2705 #define MCAN_CREL_SUBSTEP_SHIFT (20U)
2706 #define MCAN_CREL_SUBSTEP_GET(x) (((uint32_t)(x) & MCAN_CREL_SUBSTEP_MASK) >> MCAN_CREL_SUBSTEP_SHIFT)
2707 
2708 /*
2709  * YEAR (R)
2710  *
2711  * Timestamp Year
2712  * One digit, BCD-coded. This field is set by generic parameter on
2713  * synthesis.
2714  */
2715 #define MCAN_CREL_YEAR_MASK (0xF0000UL)
2716 #define MCAN_CREL_YEAR_SHIFT (16U)
2717 #define MCAN_CREL_YEAR_GET(x) (((uint32_t)(x) & MCAN_CREL_YEAR_MASK) >> MCAN_CREL_YEAR_SHIFT)
2718 
2719 /*
2720  * MON (R)
2721  *
2722  * Timestamp Month
2723  * Two digits, BCD-coded. This field is set by generic parameter
2724  * on synthesis.
2725  */
2726 #define MCAN_CREL_MON_MASK (0xFF00U)
2727 #define MCAN_CREL_MON_SHIFT (8U)
2728 #define MCAN_CREL_MON_GET(x) (((uint32_t)(x) & MCAN_CREL_MON_MASK) >> MCAN_CREL_MON_SHIFT)
2729 
2730 /*
2731  * DAY (R)
2732  *
2733  * Timestamp Day
2734  * Two digits, BCD-coded. This field is set by generic parameter
2735  * on synthesis.
2736  */
2737 #define MCAN_CREL_DAY_MASK (0xFFU)
2738 #define MCAN_CREL_DAY_SHIFT (0U)
2739 #define MCAN_CREL_DAY_GET(x) (((uint32_t)(x) & MCAN_CREL_DAY_MASK) >> MCAN_CREL_DAY_SHIFT)
2740 
2741 /* Bitfield definition for register: TSCFG */
2742 /*
2743  * TBPRE (RW)
2744  *
2745  * Timebase Prescaler
2746  * 0x00 to 0xFF
2747  * The value by which the oscillator frequency is divided for
2748  * generating the timebase counter clock. Valid values for the
2749  * Timebase Prescaler are 0 to 255. The actual interpretation by
2750  * the hardware of this value is such that one more than the value
2751  * programmed here is used. Affects only the TSU internal
2752  * timebase. When the internal timebase is excluded by synthesis,
2753  * TBPRE[7:0] is fixed to 0x00, the Timestamp Prescaler is not
2754  * used.
2755  */
2756 #define MCAN_TSCFG_TBPRE_MASK (0xFF00U)
2757 #define MCAN_TSCFG_TBPRE_SHIFT (8U)
2758 #define MCAN_TSCFG_TBPRE_SET(x) (((uint32_t)(x) << MCAN_TSCFG_TBPRE_SHIFT) & MCAN_TSCFG_TBPRE_MASK)
2759 #define MCAN_TSCFG_TBPRE_GET(x) (((uint32_t)(x) & MCAN_TSCFG_TBPRE_MASK) >> MCAN_TSCFG_TBPRE_SHIFT)
2760 
2761 /*
2762  * EN64 (RW)
2763  *
2764  * set to use 64bit timestamp.
2765  * when enabled, tsu can save up to 8 different timestamps, TS(k) and TS(k+1) are used for one 64bit timestamp, k is 0~7.
2766  * TSP can be used to select different one
2767  */
2768 #define MCAN_TSCFG_EN64_MASK (0x8U)
2769 #define MCAN_TSCFG_EN64_SHIFT (3U)
2770 #define MCAN_TSCFG_EN64_SET(x) (((uint32_t)(x) << MCAN_TSCFG_EN64_SHIFT) & MCAN_TSCFG_EN64_MASK)
2771 #define MCAN_TSCFG_EN64_GET(x) (((uint32_t)(x) & MCAN_TSCFG_EN64_MASK) >> MCAN_TSCFG_EN64_SHIFT)
2772 
2773 /*
2774  * SCP (RW)
2775  *
2776  * Select Capturing Position
2777  * 0: Capture Timestamp at EOF
2778  * 1: Capture Timestamp at SOF
2779  */
2780 #define MCAN_TSCFG_SCP_MASK (0x4U)
2781 #define MCAN_TSCFG_SCP_SHIFT (2U)
2782 #define MCAN_TSCFG_SCP_SET(x) (((uint32_t)(x) << MCAN_TSCFG_SCP_SHIFT) & MCAN_TSCFG_SCP_MASK)
2783 #define MCAN_TSCFG_SCP_GET(x) (((uint32_t)(x) & MCAN_TSCFG_SCP_MASK) >> MCAN_TSCFG_SCP_SHIFT)
2784 
2785 /*
2786  * TBCS (RW)
2787  *
2788  * Timebase Counter Select
2789  * When the internal timebase is excluded by synthesis, TBCS is
2790  * fixed to ‘1’.
2791  * 0: Timestamp value captured from internal timebase counter,
2792  * ATB.TB[31:0] is the internal timbase counter
2793  * 1: Timestamp value captured from input tsu_tbin[31:0],ATB.TB[31:0] is tsu_tbin[31:0]
2794  */
2795 #define MCAN_TSCFG_TBCS_MASK (0x2U)
2796 #define MCAN_TSCFG_TBCS_SHIFT (1U)
2797 #define MCAN_TSCFG_TBCS_SET(x) (((uint32_t)(x) << MCAN_TSCFG_TBCS_SHIFT) & MCAN_TSCFG_TBCS_MASK)
2798 #define MCAN_TSCFG_TBCS_GET(x) (((uint32_t)(x) & MCAN_TSCFG_TBCS_MASK) >> MCAN_TSCFG_TBCS_SHIFT)
2799 
2800 /*
2801  * TSUE (RW)
2802  *
2803  * Timestamp Unit Enable
2804  * 0: TSU disabled
2805  * 1: TSU enabled
2806  */
2807 #define MCAN_TSCFG_TSUE_MASK (0x1U)
2808 #define MCAN_TSCFG_TSUE_SHIFT (0U)
2809 #define MCAN_TSCFG_TSUE_SET(x) (((uint32_t)(x) << MCAN_TSCFG_TSUE_SHIFT) & MCAN_TSCFG_TSUE_MASK)
2810 #define MCAN_TSCFG_TSUE_GET(x) (((uint32_t)(x) & MCAN_TSCFG_TSUE_MASK) >> MCAN_TSCFG_TSUE_SHIFT)
2811 
2812 /* Bitfield definition for register: TSS1 */
2813 /*
2814  * TSL (R)
2815  *
2816  * Timestamp Lost
2817  * Each Timestamp register (TS0-TS15) is assigned one bit. The bits are set when the timestamp stored in the related Timestamp register was overwritten before it was read.
2818  * Reading a Timestamp register resets the related bit.
2819  */
2820 #define MCAN_TSS1_TSL_MASK (0xFFFF0000UL)
2821 #define MCAN_TSS1_TSL_SHIFT (16U)
2822 #define MCAN_TSS1_TSL_GET(x) (((uint32_t)(x) & MCAN_TSS1_TSL_MASK) >> MCAN_TSS1_TSL_SHIFT)
2823 
2824 /*
2825  * TSN (R)
2826  *
2827  * Timestamp New
2828  * Each Timestamp register (TS0-TS15) is assigned one bit. The bits are set when a timestamp was stored in the related
2829  * Timestamp register. Reading a Timestamp register resets the related bit.
2830  */
2831 #define MCAN_TSS1_TSN_MASK (0xFFFFU)
2832 #define MCAN_TSS1_TSN_SHIFT (0U)
2833 #define MCAN_TSS1_TSN_GET(x) (((uint32_t)(x) & MCAN_TSS1_TSN_MASK) >> MCAN_TSS1_TSN_SHIFT)
2834 
2835 /* Bitfield definition for register: TSS2 */
2836 /*
2837  * TSP (R)
2838  *
2839  * Timestamp Pointer
2840  * The Timestamp Pointer is incremented by one each time a timestamp is captured. From its maximum value (3, 7, or 15
2841  * depending on number_ts_g), it is incremented to 0.
2842  * Value also signalled on output m_can_tsp[3:0].
2843  */
2844 #define MCAN_TSS2_TSP_MASK (0xFU)
2845 #define MCAN_TSS2_TSP_SHIFT (0U)
2846 #define MCAN_TSS2_TSP_GET(x) (((uint32_t)(x) & MCAN_TSS2_TSP_MASK) >> MCAN_TSS2_TSP_SHIFT)
2847 
2848 /* Bitfield definition for register: ATB */
2849 /*
2850  * TB (RC)
2851  *
2852  * timebase for timestamp generation 31-0
2853  */
2854 #define MCAN_ATB_TB_MASK (0xFFFFFFFFUL)
2855 #define MCAN_ATB_TB_SHIFT (0U)
2856 #define MCAN_ATB_TB_GET(x) (((uint32_t)(x) & MCAN_ATB_TB_MASK) >> MCAN_ATB_TB_SHIFT)
2857 
2858 /* Bitfield definition for register: ATBH */
2859 /*
2860  * TBH (RC)
2861  *
2862  * timebase for timestamp generation 63-32
2863  */
2864 #define MCAN_ATBH_TBH_MASK (0xFFFFFFFFUL)
2865 #define MCAN_ATBH_TBH_SHIFT (0U)
2866 #define MCAN_ATBH_TBH_GET(x) (((uint32_t)(x) & MCAN_ATBH_TBH_MASK) >> MCAN_ATBH_TBH_SHIFT)
2867 
2868 /* Bitfield definition for register: GLB_CTL */
2869 /*
2870  * M_CAN_STBY (RW)
2871  *
2872  * m_can standby control
2873  */
2874 #define MCAN_GLB_CTL_M_CAN_STBY_MASK (0x80000000UL)
2875 #define MCAN_GLB_CTL_M_CAN_STBY_SHIFT (31U)
2876 #define MCAN_GLB_CTL_M_CAN_STBY_SET(x) (((uint32_t)(x) << MCAN_GLB_CTL_M_CAN_STBY_SHIFT) & MCAN_GLB_CTL_M_CAN_STBY_MASK)
2877 #define MCAN_GLB_CTL_M_CAN_STBY_GET(x) (((uint32_t)(x) & MCAN_GLB_CTL_M_CAN_STBY_MASK) >> MCAN_GLB_CTL_M_CAN_STBY_SHIFT)
2878 
2879 /*
2880  * STBY_CLR_EN (RW)
2881  *
2882  * m_can standby clear control
2883  * 0:controlled by software by standby bit[bit31]
2884  * 1:auto clear standby by hardware when rx data is 0
2885  */
2886 #define MCAN_GLB_CTL_STBY_CLR_EN_MASK (0x40000000UL)
2887 #define MCAN_GLB_CTL_STBY_CLR_EN_SHIFT (30U)
2888 #define MCAN_GLB_CTL_STBY_CLR_EN_SET(x) (((uint32_t)(x) << MCAN_GLB_CTL_STBY_CLR_EN_SHIFT) & MCAN_GLB_CTL_STBY_CLR_EN_MASK)
2889 #define MCAN_GLB_CTL_STBY_CLR_EN_GET(x) (((uint32_t)(x) & MCAN_GLB_CTL_STBY_CLR_EN_MASK) >> MCAN_GLB_CTL_STBY_CLR_EN_SHIFT)
2890 
2891 /*
2892  * STBY_POL (RW)
2893  *
2894  * standby polarity selection
2895  */
2896 #define MCAN_GLB_CTL_STBY_POL_MASK (0x20000000UL)
2897 #define MCAN_GLB_CTL_STBY_POL_SHIFT (29U)
2898 #define MCAN_GLB_CTL_STBY_POL_SET(x) (((uint32_t)(x) << MCAN_GLB_CTL_STBY_POL_SHIFT) & MCAN_GLB_CTL_STBY_POL_MASK)
2899 #define MCAN_GLB_CTL_STBY_POL_GET(x) (((uint32_t)(x) & MCAN_GLB_CTL_STBY_POL_MASK) >> MCAN_GLB_CTL_STBY_POL_SHIFT)
2900 
2901 /*
2902  * TSU_TBIN_SEL (RW)
2903  *
2904  * external timestamp select. each CAN block has 4 timestamp input, this register is used to select one of them as timestame if TSCFG.TBCS is set to 1
2905  */
2906 #define MCAN_GLB_CTL_TSU_TBIN_SEL_MASK (0x3U)
2907 #define MCAN_GLB_CTL_TSU_TBIN_SEL_SHIFT (0U)
2908 #define MCAN_GLB_CTL_TSU_TBIN_SEL_SET(x) (((uint32_t)(x) << MCAN_GLB_CTL_TSU_TBIN_SEL_SHIFT) & MCAN_GLB_CTL_TSU_TBIN_SEL_MASK)
2909 #define MCAN_GLB_CTL_TSU_TBIN_SEL_GET(x) (((uint32_t)(x) & MCAN_GLB_CTL_TSU_TBIN_SEL_MASK) >> MCAN_GLB_CTL_TSU_TBIN_SEL_SHIFT)
2910 
2911 /* Bitfield definition for register: GLB_STATUS */
2912 /*
2913  * M_CAN_INT1 (R)
2914  *
2915  * m_can interrupt status1
2916  */
2917 #define MCAN_GLB_STATUS_M_CAN_INT1_MASK (0x8U)
2918 #define MCAN_GLB_STATUS_M_CAN_INT1_SHIFT (3U)
2919 #define MCAN_GLB_STATUS_M_CAN_INT1_GET(x) (((uint32_t)(x) & MCAN_GLB_STATUS_M_CAN_INT1_MASK) >> MCAN_GLB_STATUS_M_CAN_INT1_SHIFT)
2920 
2921 /*
2922  * M_CAN_INT0 (R)
2923  *
2924  * m_can interrupt status0
2925  */
2926 #define MCAN_GLB_STATUS_M_CAN_INT0_MASK (0x4U)
2927 #define MCAN_GLB_STATUS_M_CAN_INT0_SHIFT (2U)
2928 #define MCAN_GLB_STATUS_M_CAN_INT0_GET(x) (((uint32_t)(x) & MCAN_GLB_STATUS_M_CAN_INT0_MASK) >> MCAN_GLB_STATUS_M_CAN_INT0_SHIFT)
2929 
2930 
2931 
2932 /* TS_SEL register group index macro definition */
2933 #define MCAN_TS_SEL_TS_SEL0 (0UL)
2934 #define MCAN_TS_SEL_TS_SEL1 (1UL)
2935 #define MCAN_TS_SEL_TS_SEL2 (2UL)
2936 #define MCAN_TS_SEL_TS_SEL3 (3UL)
2937 #define MCAN_TS_SEL_TS_SEL4 (4UL)
2938 #define MCAN_TS_SEL_TS_SEL5 (5UL)
2939 #define MCAN_TS_SEL_TS_SEL6 (6UL)
2940 #define MCAN_TS_SEL_TS_SEL7 (7UL)
2941 #define MCAN_TS_SEL_TS_SEL8 (8UL)
2942 #define MCAN_TS_SEL_TS_SEL9 (9UL)
2943 #define MCAN_TS_SEL_TS_SEL10 (10UL)
2944 #define MCAN_TS_SEL_TS_SEL11 (11UL)
2945 #define MCAN_TS_SEL_TS_SEL12 (12UL)
2946 #define MCAN_TS_SEL_TS_SEL13 (13UL)
2947 #define MCAN_TS_SEL_TS_SEL14 (14UL)
2948 #define MCAN_TS_SEL_TS_SEL15 (15UL)
2949 
2950 
2951 #endif /* HPM_MCAN_H */
Definition: hpm_mcan_regs.h:12