MSPM0G1X0X_G3X0X Driver Library  2.08.00.03
dl_i2c.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 /*!****************************************************************************
33  * @file dl_i2c.h
34  * @brief Inter-Integrated Circuit (I2C) Driver Library
35  * @defgroup I2C Inter-Integrated Circuit (I2C)
36  *
37  * @anchor ti_dl_dl_i2c_Overview
38  * # Overview
39  *
40  * The I2C Library allows full configuration of the MSPM0 I2C module.
41  * The I2C module provides a standardized serial interface to transfer data
42  * between MSP devices and other external I2C devices (such as a sensors,
43  * memory, or DACs).
44  *
45  * <hr>
46  ******************************************************************************
47  */
51 #ifndef ti_dl_dl_i2c__include
52 #define ti_dl_dl_i2c__include
53 
54 #include <stdbool.h>
55 #include <stdint.h>
56 
57 #include <ti/devices/msp/msp.h>
58 #include <ti/driverlib/dl_common.h>
59 
60 #ifdef __MSPM0_HAS_I2C__
61 
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65 
66 /* clang-format off */
67 
74 #define DL_I2C_TX_FIFO_COUNT_MAXIMUM ((uint32_t)I2C_SYS_FENTRIES << 8)
75 
82 #define DL_I2C_RX_FIFO_COUNT_MAXIMUM ((uint32_t)I2C_SYS_FENTRIES)
83 
94 #define DL_I2C_CONTROLLER_STATUS_BUSY (I2C_MSR_BUSY_MASK)
95 
102 #define DL_I2C_CONTROLLER_STATUS_ERROR (I2C_MSR_ERR_MASK)
103 
107 #define DL_I2C_CONTROLLER_STATUS_ADDR_ACK (I2C_MSR_ADRACK_MASK)
108 
112 #define DL_I2C_CONTROLLER_STATUS_DATA_ACK (I2C_MSR_DATACK_MASK)
113 
117 #define DL_I2C_CONTROLLER_STATUS_ARBITRATION_LOST (I2C_MSR_ARBLST_MASK)
118 
122 #define DL_I2C_CONTROLLER_STATUS_IDLE (I2C_MSR_IDLE_MASK)
123 
129 #define DL_I2C_CONTROLLER_STATUS_BUSY_BUS (I2C_MSR_BUSBSY_MASK)
130 
141 #define DL_I2C_TARGET_STATUS_ADDRESS_MATCH (I2C_SSR_ADDRMATCH_MASK)
142 
150 #define DL_I2C_TARGET_STATUS_STALE_TX_FIFO (I2C_SSR_STALE_TXFIFO_MASK)
151 
160 #define DL_I2C_TARGET_STATUS_TX_MODE (I2C_SSR_TXMODE_MASK)
161 
169 #define DL_I2C_TARGET_STATUS_BUS_BUSY (I2C_SSR_BUSBSY_MASK)
170 
179 #define DL_I2C_TARGET_STATUS_RX_MODE (I2C_SSR_RXMODE_MASK)
180 
181 
188 #define DL_I2C_TARGET_STATUS_QUICK_COMMAND_READ_WRITE (I2C_SSR_QCMDRW_MASK)
189 
196 #define DL_I2C_TARGET_STATUS_QUICK_COMMAND_STATUS (I2C_SSR_QCMDST_MASK)
197 
201 #define DL_I2C_TARGET_STATUS_OWN_ADDR_ALTERNATE_MATCHED (I2C_SSR_OAR2SEL_MASK)
202 
206 #define DL_I2C_TARGET_STATUS_TRANSMIT_REQUEST (I2C_SSR_TREQ_MASK)
207 
211 #define DL_I2C_TARGET_STATUS_RECEIVE_REQUEST (I2C_SSR_RREQ_MASK)
212 
221 #define DL_I2C_INTERRUPT_CONTROLLER_RX_DONE (I2C_CPU_INT_IMASK_MRXDONE_SET)
222 
226 #define DL_I2C_INTERRUPT_CONTROLLER_TX_DONE (I2C_CPU_INT_IMASK_MTXDONE_SET)
227 
231 #define DL_I2C_INTERRUPT_CONTROLLER_RXFIFO_TRIGGER \
232  (I2C_CPU_INT_IMASK_MRXFIFOTRG_SET)
233 
237 #define DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER \
238  (I2C_CPU_INT_IMASK_MTXFIFOTRG_SET)
239 
243 #define DL_I2C_INTERRUPT_CONTROLLER_RXFIFO_FULL \
244  (I2C_CPU_INT_IMASK_MRXFIFOFULL_SET)
245 
249 #define DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_EMPTY \
250  (I2C_CPU_INT_IMASK_MTXEMPTY_SET)
251 
255 #define DL_I2C_INTERRUPT_CONTROLLER_NACK (I2C_CPU_INT_IMASK_MNACK_SET)
256 
260 #define DL_I2C_INTERRUPT_CONTROLLER_START (I2C_CPU_INT_IMASK_MSTART_SET)
261 
265 #define DL_I2C_INTERRUPT_CONTROLLER_STOP (I2C_CPU_INT_IMASK_MSTOP_SET)
266 
270 #define DL_I2C_INTERRUPT_CONTROLLER_ARBITRATION_LOST \
271  (I2C_CPU_INT_IMASK_MARBLOST_SET)
272 
276 #define DL_I2C_INTERRUPT_CONTROLLER_EVENT1_DMA_DONE \
277  (I2C_CPU_INT_IMASK_MDMA_DONE_TX_SET)
278 
282 #define DL_I2C_INTERRUPT_CONTROLLER_EVENT2_DMA_DONE \
283  (I2C_CPU_INT_IMASK_MDMA_DONE_RX_SET)
284 
285 
289 #define DL_I2C_INTERRUPT_CONTROLLER_PEC_RX_ERROR \
290  (I2C_CPU_INT_IMASK_MPEC_RX_ERR_SET)
291 
292 
296 #define DL_I2C_INTERRUPT_TARGET_RX_DONE (I2C_CPU_INT_IMASK_SRXDONE_SET)
297 
301 #define DL_I2C_INTERRUPT_TARGET_TX_DONE (I2C_CPU_INT_IMASK_STXDONE_SET)
302 
306 #define DL_I2C_INTERRUPT_TARGET_RXFIFO_TRIGGER \
307  (I2C_CPU_INT_IMASK_SRXFIFOTRG_SET)
308 
312 #define DL_I2C_INTERRUPT_TARGET_TXFIFO_TRIGGER \
313  (I2C_CPU_INT_IMASK_STXFIFOTRG_SET)
314 
318 #define DL_I2C_INTERRUPT_TARGET_RXFIFO_FULL \
319  (I2C_CPU_INT_IMASK_SRXFIFOFULL_SET)
320 
325 #define DL_I2C_INTERRUPT_TARGET_TXFIFO_EMPTY \
326  (I2C_CPU_INT_IMASK_STXEMPTY_SET)
327 
331 #define DL_I2C_INTERRUPT_TARGET_START \
332  (I2C_CPU_INT_IMASK_SSTART_SET)
333 
337 #define DL_I2C_INTERRUPT_TARGET_STOP (I2C_CPU_INT_IMASK_SSTOP_SET)
338 
342 #define DL_I2C_INTERRUPT_TARGET_GENERAL_CALL \
343  (I2C_CPU_INT_IMASK_SGENCALL_SET)
344 
348 #define DL_I2C_INTERRUPT_TARGET_EVENT1_DMA_DONE \
349  (I2C_CPU_INT_IMASK_SDMA_DONE_TX_SET)
350 
354 #define DL_I2C_INTERRUPT_TARGET_EVENT2_DMA_DONE \
355  (I2C_CPU_INT_IMASK_SDMA_DONE_RX_SET)
356 
357 
361 #define DL_I2C_INTERRUPT_TARGET_PEC_RX_ERROR \
362  (I2C_CPU_INT_IMASK_SPEC_RX_ERR_SET)
363 
367 #define DL_I2C_INTERRUPT_TARGET_TXFIFO_UNDERFLOW \
368  (I2C_CPU_INT_IMASK_STX_UNFL_SET)
369 
373 #define DL_I2C_INTERRUPT_TARGET_RXFIFO_OVERFLOW \
374  (I2C_CPU_INT_IMASK_SRX_OVFL_SET)
375 
379 #define DL_I2C_INTERRUPT_TARGET_ARBITRATION_LOST \
380  (I2C_CPU_INT_IMASK_SARBLOST_SET)
381 
386 #define DL_I2C_TARGET_INTERRUPT_OVERFLOW (I2C_CPU_INT_IMASK_INTR_OVFL_SET)
387 
391 #define DL_I2C_INTERRUPT_TIMEOUT_A (I2C_CPU_INT_IMASK_TIMEOUTA_SET)
392 
396 #define DL_I2C_INTERRUPT_TIMEOUT_B (I2C_CPU_INT_IMASK_TIMEOUTB_SET)
397 
398 
407 #define DL_I2C_DMA_INTERRUPT_TARGET_TXFIFO_TRIGGER \
408  (I2C_DMA_TRIG1_IMASK_STXFIFOTRG_SET)
409 
413 #define DL_I2C_DMA_INTERRUPT_TARGET_RXFIFO_TRIGGER \
414  (I2C_DMA_TRIG1_IMASK_SRXFIFOTRG_SET)
415 
419 #define DL_I2C_DMA_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER \
420  (I2C_DMA_TRIG1_IMASK_MTXFIFOTRG_SET)
421 
425 #define DL_I2C_DMA_INTERRUPT_CONTROLLER_RXFIFO_TRIGGER \
426  (I2C_DMA_TRIG1_IMASK_MRXFIFOTRG_SET)
427 
433 #define I2C_getTargetOwnAddressAlternateMask DL_I2C_getTargetOwnAddressAlternateMask
434 
435 /* clang-format on */
436 
438 typedef enum {
440  DL_I2C_DMA_IIDX_TARGET_TXFIFO_TRIGGER = I2C_DMA_TRIG1_IIDX_STAT_MTXFIFOTRG,
442  DL_I2C_DMA_IIDX_TARGET_RXFIFO_TRIGGER = I2C_DMA_TRIG1_IIDX_STAT_MRXFIFOTRG,
445  I2C_DMA_TRIG1_IIDX_STAT_STXFIFOTRG,
448  I2C_DMA_TRIG1_IIDX_STAT_SRXFIFOTRG
450 
452 typedef enum {
458 
460 typedef enum {
462  DL_I2C_CLOCK_BUSCLK = I2C_CLKSEL_BUSCLK_SEL_ENABLE,
464  DL_I2C_CLOCK_MFCLK = I2C_CLKSEL_MFCLK_SEL_ENABLE,
465 } DL_I2C_CLOCK;
466 
468 typedef enum {
470  DL_I2C_CLOCK_DIVIDE_1 = I2C_CLKDIV_RATIO_DIV_BY_1,
472  DL_I2C_CLOCK_DIVIDE_2 = I2C_CLKDIV_RATIO_DIV_BY_2,
474  DL_I2C_CLOCK_DIVIDE_3 = I2C_CLKDIV_RATIO_DIV_BY_3,
476  DL_I2C_CLOCK_DIVIDE_4 = I2C_CLKDIV_RATIO_DIV_BY_4,
478  DL_I2C_CLOCK_DIVIDE_5 = I2C_CLKDIV_RATIO_DIV_BY_5,
480  DL_I2C_CLOCK_DIVIDE_6 = I2C_CLKDIV_RATIO_DIV_BY_6,
482  DL_I2C_CLOCK_DIVIDE_7 = I2C_CLKDIV_RATIO_DIV_BY_7,
484  DL_I2C_CLOCK_DIVIDE_8 = I2C_CLKDIV_RATIO_DIV_BY_8,
486 
488 typedef enum {
490  DL_I2C_TARGET_ADDRESSING_MODE_7_BIT = I2C_SOAR_SMODE_MODE7,
492  DL_I2C_TARGET_ADDRESSING_MODE_10_BIT = I2C_SOAR_SMODE_MODE10,
494 
496 typedef enum {
499  DL_I2C_TARGET_PEC_STATUS_CHECKED = I2C_TARGET_PECSR_PECSTS_CHECK_SET,
503  I2C_TARGET_PECSR_PECSTS_CHECK_CLEARED,
505 
507 typedef enum {
511  I2C_TARGET_PECSR_PECSTS_ERROR_CLEARED,
514  DL_I2C_TARGET_PEC_CHECK_ERROR_SET = I2C_TARGET_PECSR_PECSTS_ERROR_SET,
516 
518 typedef enum {
520  DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_5NS = I2C_GFCTL_AGFSEL_AGLIT_5,
522  DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_10NS = I2C_GFCTL_AGFSEL_AGLIT_10,
524  DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_25NS = I2C_GFCTL_AGFSEL_AGLIT_25,
526  DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_50NS = I2C_GFCTL_AGFSEL_AGLIT_50,
528 
530 typedef enum {
532  DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_DISABLED = I2C_GFCTL_DGFSEL_DISABLED,
548 
550 typedef enum {
552  DL_I2C_CONTROLLER_DIRECTION_TX = I2C_MSA_DIR_TRANSMIT,
554  DL_I2C_CONTROLLER_DIRECTION_RX = I2C_MSA_DIR_RECEIVE,
556 
558 typedef enum {
564 
566 typedef enum {
570  I2C_CONTROLLER_PECSR_PECSTS_CHECK_SET,
574  I2C_CONTROLLER_PECSR_PECSTS_CHECK_CLEARED,
576 
578 typedef enum {
582  I2C_CONTROLLER_PECSR_PECSTS_ERROR_SET,
586  I2C_CONTROLLER_PECSR_PECSTS_ERROR_CLEARED,
588 
590 typedef enum {
592  DL_I2C_CONTROLLER_SCL_HIGH = I2C_MBMON_SCL_SET,
594  DL_I2C_CONTROLLER_SCL_LOW = I2C_MBMON_SCL_CLEARED,
596 
598 typedef enum {
600  DL_I2C_CONTROLLER_SDA_HIGH = I2C_MBMON_SDA_SET,
602  DL_I2C_CONTROLLER_SDA_LOW = I2C_MBMON_SDA_CLEARED,
604 
606 typedef enum {
608  DL_I2C_CONTROLLER_START_ENABLE = I2C_MCTR_START_ENABLE,
610  DL_I2C_CONTROLLER_START_DISABLE = I2C_MCTR_START_DISABLE,
612 
614 typedef enum {
616  DL_I2C_CONTROLLER_STOP_ENABLE = I2C_MCTR_STOP_ENABLE,
618  DL_I2C_CONTROLLER_STOP_DISABLE = I2C_MCTR_STOP_DISABLE,
620 
622 typedef enum {
624  DL_I2C_CONTROLLER_ACK_ENABLE = I2C_MCTR_ACK_ENABLE,
626  DL_I2C_CONTROLLER_ACK_DISABLE = I2C_MCTR_ACK_DISABLE,
628 
630 typedef enum {
632  DL_I2C_TX_FIFO_LEVEL_EMPTY = I2C_MFIFOCTL_TXTRIG_EMPTY,
634  DL_I2C_TX_FIFO_LEVEL_BYTES_1 = I2C_MFIFOCTL_TXTRIG_LEVEL_1,
636  DL_I2C_TX_FIFO_LEVEL_BYTES_2 = I2C_MFIFOCTL_TXTRIG_LEVEL_2,
638  DL_I2C_TX_FIFO_LEVEL_BYTES_3 = I2C_MFIFOCTL_TXTRIG_LEVEL_3,
640  DL_I2C_TX_FIFO_LEVEL_BYTES_4 = I2C_MFIFOCTL_TXTRIG_LEVEL_4,
642  DL_I2C_TX_FIFO_LEVEL_BYTES_5 = I2C_MFIFOCTL_TXTRIG_LEVEL_5,
644  DL_I2C_TX_FIFO_LEVEL_BYTES_6 = I2C_MFIFOCTL_TXTRIG_LEVEL_6,
646  DL_I2C_TX_FIFO_LEVEL_BYTES_7 = I2C_MFIFOCTL_TXTRIG_LEVEL_7,
648 
650 typedef enum {
652  DL_I2C_RX_FIFO_LEVEL_BYTES_1 = I2C_MFIFOCTL_RXTRIG_LEVEL_1,
654  DL_I2C_RX_FIFO_LEVEL_BYTES_2 = I2C_MFIFOCTL_RXTRIG_LEVEL_2,
656  DL_I2C_RX_FIFO_LEVEL_BYTES_3 = I2C_MFIFOCTL_RXTRIG_LEVEL_3,
658  DL_I2C_RX_FIFO_LEVEL_BYTES_4 = I2C_MFIFOCTL_RXTRIG_LEVEL_4,
660  DL_I2C_RX_FIFO_LEVEL_BYTES_5 = I2C_MFIFOCTL_RXTRIG_LEVEL_5,
662  DL_I2C_RX_FIFO_LEVEL_BYTES_6 = I2C_MFIFOCTL_RXTRIG_LEVEL_6,
664  DL_I2C_RX_FIFO_LEVEL_BYTES_7 = I2C_MFIFOCTL_RXTRIG_LEVEL_7,
666  DL_I2C_RX_FIFO_LEVEL_BYTES_8 = I2C_MFIFOCTL_RXTRIG_LEVEL_8,
668 
670 typedef enum {
672  DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE_ACK = I2C_SACKCTL_ACKOVAL_DISABLE,
674  DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE_NACK = I2C_SACKCTL_ACKOVAL_ENABLE,
676 
678 typedef enum {
680  DL_I2C_IIDX_NO_INT = I2C_CPU_INT_IIDX_STAT_NO_INTR,
682  DL_I2C_IIDX_CONTROLLER_RX_DONE = I2C_CPU_INT_IIDX_STAT_MRXDONEFG,
684  DL_I2C_IIDX_CONTROLLER_TX_DONE = I2C_CPU_INT_IIDX_STAT_MTXDONEFG,
686  DL_I2C_IIDX_CONTROLLER_RXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_MRXFIFOTRG,
688  DL_I2C_IIDX_CONTROLLER_TXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_MTXFIFOTRG,
690  DL_I2C_IIDX_CONTROLLER_RXFIFO_FULL = I2C_CPU_INT_IIDX_STAT_MRXFIFOFULL,
692  DL_I2C_IIDX_CONTROLLER_TXFIFO_EMPTY = I2C_CPU_INT_IIDX_STAT_MTX_EMPTY,
694  DL_I2C_IIDX_CONTROLLER_NACK = I2C_CPU_INT_IIDX_STAT_MNACKFG,
696  DL_I2C_IIDX_CONTROLLER_START = I2C_CPU_INT_IIDX_STAT_MSTARTFG,
698  DL_I2C_IIDX_CONTROLLER_STOP = I2C_CPU_INT_IIDX_STAT_MSTOPFG,
700  DL_I2C_IIDX_CONTROLLER_ARBITRATION_LOST = I2C_CPU_INT_IIDX_STAT_MARBLOSTFG,
703  I2C_CPU_INT_IIDX_STAT_MDMA_DONE_TX,
706  I2C_CPU_INT_IIDX_STAT_MDMA_DONE_RX,
707 
709  DL_I2C_IIDX_CONTROLLER_PEC_RX_ERROR = I2C_CPU_INT_IIDX_STAT_MPEC_RX_ERR,
711  DL_I2C_IIDX_TIMEOUT_A = I2C_CPU_INT_IIDX_STAT_TIMEOUTA,
713  DL_I2C_IIDX_TIMEOUT_B = I2C_CPU_INT_IIDX_STAT_TIMEOUTB,
714 
716  DL_I2C_IIDX_TARGET_RX_DONE = I2C_CPU_INT_IIDX_STAT_SRXDONEFG,
718  DL_I2C_IIDX_TARGET_TX_DONE = I2C_CPU_INT_IIDX_STAT_STXDONEFG,
720  DL_I2C_IIDX_TARGET_RXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_SRXFIFOTRG,
722  DL_I2C_IIDX_TARGET_TXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_STXFIFOTRG,
724  DL_I2C_IIDX_TARGET_RXFIFO_FULL = I2C_CPU_INT_IIDX_STAT_SRXFIFOFULL,
727  DL_I2C_IIDX_TARGET_TXFIFO_EMPTY = I2C_CPU_INT_IIDX_STAT_STXEMPTY,
729  DL_I2C_IIDX_TARGET_START = I2C_CPU_INT_IIDX_STAT_SSTARTFG,
731  DL_I2C_IIDX_TARGET_STOP = I2C_CPU_INT_IIDX_STAT_SSTOPFG,
733  DL_I2C_IIDX_TARGET_GENERAL_CALL = I2C_CPU_INT_IIDX_STAT_SGENCALL,
735  DL_I2C_IIDX_TARGET_EVENT1_DMA_DONE = I2C_CPU_INT_IIDX_STAT_SDMA_DONE_TX,
737  DL_I2C_IIDX_TARGET_EVENT2_DMA_DONE = I2C_CPU_INT_IIDX_STAT_SDMA_DONE_RX,
738 
740  DL_I2C_IIDX_TARGET_PEC_RX_ERROR = I2C_CPU_INT_IIDX_STAT_SPEC_RX_ERR,
742  DL_I2C_IIDX_TARGET_TXFIFO_UNDERFLOW = I2C_CPU_INT_IIDX_STAT_STX_UNFL,
744  DL_I2C_IIDX_TARGET_RXFIFO_OVERFLOW = I2C_CPU_INT_IIDX_STAT_SRX_OVFL,
746  DL_I2C_IIDX_TARGET_ARBITRATION_LOST = I2C_CPU_INT_IIDX_STAT_SARBLOST,
748  DL_I2C_IIDX_INTERRUPT_OVERFLOW = I2C_CPU_INT_IIDX_STAT_INTR_OVFL,
749 
750 } DL_I2C_IIDX;
751 
755 typedef struct {
757  DL_I2C_CLOCK clockSel;
759  DL_I2C_CLOCK_DIVIDE divideRatio;
761 
770 void DL_I2C_setClockConfig(I2C_Regs *i2c, const DL_I2C_ClockConfig *config);
771 
780 void DL_I2C_getClockConfig(const I2C_Regs *i2c, DL_I2C_ClockConfig *config);
781 
793  I2C_Regs *i2c, const uint8_t *buffer, uint16_t count);
794 
800 void DL_I2C_flushControllerTXFIFO(I2C_Regs *i2c);
801 
807 void DL_I2C_flushControllerRXFIFO(I2C_Regs *i2c);
808 
819 __STATIC_INLINE bool DL_I2C_isControllerTXFIFOFull(const I2C_Regs *i2c)
820 {
821  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) ==
822  I2C_MFIFOSR_TXFIFOCNT_MINIMUM);
823 }
824 
835 __STATIC_INLINE bool DL_I2C_isControllerTXFIFOEmpty(const I2C_Regs *i2c)
836 {
837  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) ==
839 }
840 
851 __STATIC_INLINE bool DL_I2C_isControllerRXFIFOEmpty(const I2C_Regs *i2c)
852 {
853  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFIFOCNT_MASK) ==
854  I2C_MFIFOSR_RXFIFOCNT_MINIMUM);
855 }
856 
864 __STATIC_INLINE void DL_I2C_resetControllerTransfer(I2C_Regs *i2c)
865 {
866  // Resets all Controller functionality
867  i2c->MASTER.MCTR = 0x00;
868 }
869 
882 __STATIC_INLINE void DL_I2C_startControllerTransfer(I2C_Regs *i2c,
883  uint32_t targetAddr, DL_I2C_CONTROLLER_DIRECTION direction,
884  uint16_t length)
885 {
886  // Specify target address and read/write mode
887  DL_Common_updateReg(&i2c->MASTER.MSA,
888  ((targetAddr << I2C_MSA_SADDR_OFS) | (uint32_t) direction),
889  (I2C_MSA_SADDR_MASK | I2C_MSA_DIR_MASK));
890 
891  // STOP bit is generated after burst length number of bytes transferred
892  DL_Common_updateReg(&i2c->MASTER.MCTR,
893  (((uint32_t) length << I2C_MCTR_MBLEN_OFS) | I2C_MCTR_BURSTRUN_ENABLE |
894  I2C_MCTR_START_ENABLE | I2C_MCTR_STOP_ENABLE),
895  (I2C_MCTR_MBLEN_MASK | I2C_MCTR_BURSTRUN_MASK | I2C_MCTR_START_MASK |
896  I2C_MCTR_STOP_MASK));
897 }
898 
913 __STATIC_INLINE void DL_I2C_startControllerTransferAdvanced(I2C_Regs *i2c,
914  uint32_t targetAddr, DL_I2C_CONTROLLER_DIRECTION direction,
915  uint16_t length, DL_I2C_CONTROLLER_START start,
916  DL_I2C_CONTROLLER_STOP stop, DL_I2C_CONTROLLER_ACK ack)
917 {
918  // Specify target address and read/write mode
919  DL_Common_updateReg(&i2c->MASTER.MSA,
920  ((targetAddr << I2C_MSA_SADDR_OFS) | (uint32_t) direction),
921  (I2C_MSA_SADDR_MASK | I2C_MSA_DIR_MASK));
922 
923  DL_Common_updateReg(&i2c->MASTER.MCTR,
924  (((uint32_t) length << I2C_MCTR_MBLEN_OFS) | I2C_MCTR_BURSTRUN_ENABLE |
925  (uint32_t) start | (uint32_t) stop | (uint32_t) ack),
926  (I2C_MCTR_MBLEN_MASK | I2C_MCTR_BURSTRUN_MASK | I2C_MCTR_START_MASK |
927  I2C_MCTR_STOP_MASK | I2C_MCTR_ACK_MASK));
928 }
929 
940 __STATIC_INLINE bool DL_I2C_isTargetTXFIFOFull(const I2C_Regs *i2c)
941 {
942  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) ==
943  I2C_SFIFOSR_TXFIFOCNT_MINIMUM);
944 }
945 
956 __STATIC_INLINE bool DL_I2C_isTargetTXFIFOEmpty(const I2C_Regs *i2c)
957 {
958  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) ==
960 }
961 
972 __STATIC_INLINE bool DL_I2C_isTargetRXFIFOEmpty(const I2C_Regs *i2c)
973 {
974  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFIFOCNT_MASK) ==
975  I2C_SFIFOSR_RXFIFOCNT_MINIMUM);
976 }
977 
988  I2C_Regs *i2c, const uint8_t *buffer, uint8_t count);
989 
995 void DL_I2C_flushTargetTXFIFO(I2C_Regs *i2c);
996 
1002 void DL_I2C_flushTargetRXFIFO(I2C_Regs *i2c);
1003 
1016 void DL_I2C_transmitTargetDataBlocking(I2C_Regs *i2c, uint8_t data);
1017 
1031 bool DL_I2C_transmitTargetDataCheck(I2C_Regs *i2c, uint8_t data);
1032 
1043 uint8_t DL_I2C_receiveTargetDataBlocking(const I2C_Regs *i2c);
1044 
1058 bool DL_I2C_receiveTargetDataCheck(const I2C_Regs *i2c, uint8_t *buffer);
1059 
1069 __STATIC_INLINE void DL_I2C_enablePower(I2C_Regs *i2c)
1070 {
1071  i2c->GPRCM.PWREN = (I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_ENABLE);
1072 }
1073 
1084 __STATIC_INLINE void DL_I2C_disablePower(I2C_Regs *i2c)
1085 {
1086  i2c->GPRCM.PWREN = (I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_DISABLE);
1087 }
1088 
1105 __STATIC_INLINE bool DL_I2C_isPowerEnabled(const I2C_Regs *i2c)
1106 {
1107  return (
1108  (i2c->GPRCM.PWREN & I2C_PWREN_ENABLE_MASK) == I2C_PWREN_ENABLE_ENABLE);
1109 }
1110 
1116 __STATIC_INLINE void DL_I2C_reset(I2C_Regs *i2c)
1117 {
1118  i2c->GPRCM.RSTCTL =
1119  (I2C_RSTCTL_KEY_UNLOCK_W | I2C_RSTCTL_RESETSTKYCLR_CLR |
1120  I2C_RSTCTL_RESETASSERT_ASSERT);
1121 }
1122 
1132 __STATIC_INLINE bool DL_I2C_isReset(const I2C_Regs *i2c)
1133 {
1134  return ((i2c->GPRCM.STAT & I2C_STAT_RESETSTKY_MASK) ==
1135  I2C_STAT_RESETSTKY_RESET);
1136 }
1137 
1148 __STATIC_INLINE void DL_I2C_selectClockSource(
1149  I2C_Regs *i2c, DL_I2C_CLOCK clockSource)
1150 {
1151  DL_Common_updateReg(&i2c->CLKSEL, (uint32_t) clockSource,
1152  I2C_CLKSEL_BUSCLK_SEL_MASK | I2C_CLKSEL_MFCLK_SEL_MASK);
1153 }
1154 
1163 __STATIC_INLINE void DL_I2C_selectClockDivider(
1164  I2C_Regs *i2c, DL_I2C_CLOCK_DIVIDE clockDivider)
1165 {
1167  &i2c->CLKDIV, (uint32_t) clockDivider, I2C_CLKDIV_RATIO_MASK);
1168 }
1169 
1181 __STATIC_INLINE DL_I2C_ANALOG_GLITCH_FILTER_WIDTH
1183 {
1184  uint32_t filterWidth = i2c->GFCTL & I2C_GFCTL_AGFSEL_MASK;
1185 
1186  return (DL_I2C_ANALOG_GLITCH_FILTER_WIDTH)(filterWidth);
1187 }
1188 
1199  I2C_Regs *i2c, DL_I2C_ANALOG_GLITCH_FILTER_WIDTH filterWidth)
1200 {
1202  &i2c->GFCTL, (uint32_t) filterWidth, I2C_GFCTL_AGFSEL_MASK);
1203 }
1204 
1217 __STATIC_INLINE DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH
1219 {
1220  uint32_t filterWidth = i2c->GFCTL & I2C_GFCTL_DGFSEL_MASK;
1221 
1222  return (DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH)(filterWidth);
1223 }
1224 
1236  I2C_Regs *i2c, DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH filterWidth)
1237 {
1239  &i2c->GFCTL, (uint32_t) filterWidth, I2C_GFCTL_DGFSEL_MASK);
1240 }
1241 
1247 __STATIC_INLINE void DL_I2C_disableAnalogGlitchFilter(I2C_Regs *i2c)
1248 {
1249  i2c->GFCTL &= ~(I2C_GFCTL_AGFEN_MASK);
1250 }
1251 
1262 __STATIC_INLINE bool DL_I2C_isAnalogGlitchFilterEnabled(const I2C_Regs *i2c)
1263 {
1264  return ((i2c->GFCTL & I2C_GFCTL_AGFEN_MASK) == I2C_GFCTL_AGFEN_ENABLE);
1265 }
1266 
1272 __STATIC_INLINE void DL_I2C_enableAnalogGlitchFilter(I2C_Regs *i2c)
1273 {
1274  i2c->GFCTL |= I2C_GFCTL_AGFEN_ENABLE;
1275 }
1276 
1286 __STATIC_INLINE DL_I2C_CONTROLLER_DIRECTION DL_I2C_getControllerDirection(
1287  const I2C_Regs *i2c)
1288 {
1289  uint32_t direction = i2c->MASTER.MSA & I2C_MSA_DIR_MASK;
1290 
1291  return (DL_I2C_CONTROLLER_DIRECTION)(direction);
1292 }
1293 
1302 __STATIC_INLINE void DL_I2C_setControllerDirection(
1303  I2C_Regs *i2c, DL_I2C_CONTROLLER_DIRECTION direction)
1304 {
1306  &i2c->MASTER.MSA, (uint32_t) direction, I2C_MSA_DIR_MASK);
1307 }
1308 
1325 __STATIC_INLINE uint32_t DL_I2C_getTargetAddress(const I2C_Regs *i2c)
1326 {
1327  return ((i2c->MASTER.MSA & I2C_MSA_SADDR_MASK) >> I2C_MSA_SADDR_OFS);
1328 }
1329 
1343 __STATIC_INLINE void DL_I2C_setTargetAddress(
1344  I2C_Regs *i2c, uint32_t targetAddress)
1345 {
1346  DL_Common_updateReg(&i2c->MASTER.MSA, (targetAddress << I2C_MSA_SADDR_OFS),
1347  I2C_MSA_SADDR_MASK);
1348 }
1349 
1360 __STATIC_INLINE DL_I2C_CONTROLLER_ADDRESSING_MODE
1362 {
1363  uint32_t mode = i2c->MASTER.MSA & I2C_MSA_MMODE_MASK;
1364 
1365  return (DL_I2C_CONTROLLER_ADDRESSING_MODE)(mode);
1366 }
1367 
1379  I2C_Regs *i2c, DL_I2C_CONTROLLER_ADDRESSING_MODE mode)
1380 {
1381  DL_Common_updateReg(&i2c->MASTER.MSA, (uint32_t) mode, I2C_MSA_MMODE_MASK);
1382 }
1383 
1389 __STATIC_INLINE void DL_I2C_disableControllerACKOverride(I2C_Regs *i2c)
1390 {
1391  i2c->MASTER.MCTR &= ~(I2C_MCTR_MACKOEN_MASK);
1392 }
1393 
1404 __STATIC_INLINE bool DL_I2C_isControllerACKOverrideEnabled(const I2C_Regs *i2c)
1405 {
1406  return (
1407  (i2c->MASTER.MCTR & I2C_MCTR_MACKOEN_MASK) == I2C_MCTR_MACKOEN_ENABLE);
1408 }
1409 
1425 __STATIC_INLINE void DL_I2C_enableControllerACKOverride(I2C_Regs *i2c)
1426 {
1427  i2c->MASTER.MCTR |= I2C_MCTR_MACKOEN_ENABLE;
1428 }
1429 
1435 __STATIC_INLINE void DL_I2C_disableControllerReadOnTXEmpty(I2C_Regs *i2c)
1436 {
1437  i2c->MASTER.MCTR &= ~(I2C_MCTR_RD_ON_TXEMPTY_MASK);
1438 }
1439 
1451  const I2C_Regs *i2c)
1452 {
1453  return ((i2c->MASTER.MCTR & I2C_MCTR_RD_ON_TXEMPTY_MASK) ==
1454  I2C_MCTR_RD_ON_TXEMPTY_ENABLE);
1455 }
1456 
1474 __STATIC_INLINE void DL_I2C_enableControllerReadOnTXEmpty(I2C_Regs *i2c)
1475 {
1476  i2c->MASTER.MCTR |= I2C_MCTR_RD_ON_TXEMPTY_ENABLE;
1477 }
1478 
1488 __STATIC_INLINE uint32_t DL_I2C_getControllerPECCountValue(const I2C_Regs *i2c)
1489 {
1490  return (i2c->MASTER.CONTROLLER_I2CPECCTL &
1491  I2C_CONTROLLER_I2CPECCTL_PECCNT_MASK);
1492 }
1493 
1505  I2C_Regs *i2c, uint32_t count)
1506 {
1507  DL_Common_updateReg(&i2c->MASTER.CONTROLLER_I2CPECCTL, count,
1508  I2C_CONTROLLER_I2CPECCTL_PECCNT_MASK);
1509 }
1510 
1516 __STATIC_INLINE void DL_I2C_disableControllerPEC(I2C_Regs *i2c)
1517 {
1518  i2c->MASTER.CONTROLLER_I2CPECCTL &= ~(I2C_CONTROLLER_I2CPECCTL_PECEN_MASK);
1519 }
1520 
1532 __STATIC_INLINE bool DL_I2C_isControllerPECEnabled(const I2C_Regs *i2c)
1533 {
1534  return ((i2c->MASTER.CONTROLLER_I2CPECCTL &
1535  I2C_CONTROLLER_I2CPECCTL_PECEN_MASK) ==
1536  I2C_CONTROLLER_I2CPECCTL_PECEN_ENABLE);
1537 }
1538 
1553 __STATIC_INLINE void DL_I2C_enableControllerPEC(I2C_Regs *i2c)
1554 {
1555  i2c->MASTER.CONTROLLER_I2CPECCTL |= I2C_CONTROLLER_I2CPECCTL_PECEN_ENABLE;
1556 }
1557 
1568 __STATIC_INLINE uint32_t DL_I2C_getControllerCurrentPECCount(
1569  const I2C_Regs *i2c)
1570 {
1571  return (
1572  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_CHECK_MASK);
1573 }
1574 
1587 __STATIC_INLINE DL_I2C_CONTROLLER_PEC_STATUS
1589 {
1590  uint32_t status =
1591  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_CHECK_MASK;
1592 
1593  return (DL_I2C_CONTROLLER_PEC_STATUS)(status);
1594 }
1595 
1608 __STATIC_INLINE DL_I2C_CONTROLLER_PEC_CHECK_ERROR
1610 {
1611  uint32_t error =
1612  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_ERROR_MASK;
1613 
1614  return (DL_I2C_CONTROLLER_PEC_CHECK_ERROR)(error);
1615 }
1616 
1622 __STATIC_INLINE void DL_I2C_disableControllerBurst(I2C_Regs *i2c)
1623 {
1624  i2c->MASTER.MCTR &= ~(I2C_MCTR_BURSTRUN_MASK);
1625 }
1626 
1637 __STATIC_INLINE bool DL_I2C_isControllerBurstEnabled(const I2C_Regs *i2c)
1638 {
1639  return ((i2c->GFCTL & I2C_MCTR_BURSTRUN_MASK) == I2C_MCTR_BURSTRUN_ENABLE);
1640 }
1641 
1647 __STATIC_INLINE void DL_I2C_enableControllerBurst(I2C_Regs *i2c)
1648 {
1649  i2c->MASTER.MCTR |= I2C_MCTR_BURSTRUN_ENABLE;
1650 }
1651 
1657 __STATIC_INLINE void DL_I2C_disableStartCondition(I2C_Regs *i2c)
1658 {
1659  i2c->MASTER.MCTR &= ~(I2C_MCTR_START_MASK);
1660 }
1661 
1672 __STATIC_INLINE bool DL_I2C_isStartConditionEnabled(const I2C_Regs *i2c)
1673 {
1674  return ((i2c->MASTER.MCTR & I2C_MCTR_START_MASK) == I2C_MCTR_START_ENABLE);
1675 }
1676 
1682 __STATIC_INLINE void DL_I2C_enableStartCondition(I2C_Regs *i2c)
1683 {
1684  i2c->MASTER.MCTR |= I2C_MCTR_START_ENABLE;
1685 }
1686 
1692 __STATIC_INLINE void DL_I2C_disableStopCondition(I2C_Regs *i2c)
1693 {
1694  i2c->MASTER.MCTR &= ~(I2C_MCTR_STOP_MASK);
1695 }
1696 
1707 __STATIC_INLINE bool DL_I2C_isStopConditionEnabled(const I2C_Regs *i2c)
1708 {
1709  return ((i2c->MASTER.MCTR & I2C_MCTR_STOP_MASK) == I2C_MCTR_STOP_ENABLE);
1710 }
1711 
1717 __STATIC_INLINE void DL_I2C_enableStopCondition(I2C_Regs *i2c)
1718 {
1719  i2c->MASTER.MCTR |= I2C_MCTR_STOP_ENABLE;
1720 }
1721 
1731 __STATIC_INLINE void DL_I2C_disableControllerACK(I2C_Regs *i2c)
1732 {
1733  i2c->MASTER.MCTR &= ~(I2C_MCTR_ACK_MASK);
1734 }
1735 
1747 __STATIC_INLINE bool DL_I2C_isControllerACKEnabled(const I2C_Regs *i2c)
1748 {
1749  return ((i2c->MASTER.MCTR & I2C_MCTR_ACK_MASK) == I2C_MCTR_ACK_ENABLE);
1750 }
1751 
1761 __STATIC_INLINE void DL_I2C_enableControllerACK(I2C_Regs *i2c)
1762 {
1763  i2c->MASTER.MCTR |= I2C_MCTR_ACK_MASK;
1764 }
1765 
1775 __STATIC_INLINE uint32_t DL_I2C_getTransactionLength(const I2C_Regs *i2c)
1776 {
1777  return ((i2c->MASTER.MCTR & I2C_MCTR_MBLEN_MASK) >> I2C_MCTR_MBLEN_OFS);
1778 }
1779 
1787 __STATIC_INLINE void DL_I2C_setTransactionLength(
1788  I2C_Regs *i2c, uint32_t length)
1789 {
1790  DL_Common_updateReg(&i2c->MASTER.MCTR, (length << I2C_MCTR_MBLEN_OFS),
1791  I2C_MCTR_MBLEN_MASK);
1792 }
1793 
1803 __STATIC_INLINE uint32_t DL_I2C_getControllerStatus(const I2C_Regs *i2c)
1804 {
1805  return (i2c->MASTER.MSR);
1806 }
1807 
1817 __STATIC_INLINE uint16_t DL_I2C_getTransactionCount(const I2C_Regs *i2c)
1818 {
1819  return ((uint16_t)(
1820  (i2c->MASTER.MSR & I2C_MSR_MBCNT_MASK) >> I2C_MSR_MBCNT_OFS));
1821 }
1822 
1834 __STATIC_INLINE uint8_t DL_I2C_receiveControllerData(const I2C_Regs *i2c)
1835 {
1836  return ((uint8_t)(i2c->MASTER.MRXDATA & I2C_MRXDATA_VALUE_MASK));
1837 }
1838 
1848 __STATIC_INLINE void DL_I2C_transmitControllerData(I2C_Regs *i2c, uint8_t data)
1849 {
1850  i2c->MASTER.MTXDATA = data;
1851 }
1852 
1874 __STATIC_INLINE uint8_t DL_I2C_getTimerPeriod(const I2C_Regs *i2c)
1875 {
1876  return ((uint8_t)(i2c->MASTER.MTPR & I2C_MTPR_TPR_MASK));
1877 }
1878 
1898 __STATIC_INLINE void DL_I2C_setTimerPeriod(I2C_Regs *i2c, uint8_t period)
1899 {
1900  i2c->MASTER.MTPR = period;
1901 }
1902 
1908 __STATIC_INLINE void DL_I2C_disableLoopbackMode(I2C_Regs *i2c)
1909 {
1910  i2c->MASTER.MCR &= ~(I2C_MCR_LPBK_MASK);
1911 }
1912 
1923 __STATIC_INLINE bool DL_I2C_isLoopbackModeEnabled(const I2C_Regs *i2c)
1924 {
1925  return ((i2c->MASTER.MCR & I2C_MCR_LPBK_MASK) == I2C_MCR_LPBK_ENABLE);
1926 }
1927 
1933 __STATIC_INLINE void DL_I2C_enableLoopbackMode(I2C_Regs *i2c)
1934 {
1935  i2c->MASTER.MCR |= I2C_MCR_LPBK_ENABLE;
1936 }
1937 
1943 __STATIC_INLINE void DL_I2C_disableMultiControllerMode(I2C_Regs *i2c)
1944 {
1945  i2c->MASTER.MCR &= ~(I2C_MCR_MMST_MASK);
1946 }
1947 
1958 __STATIC_INLINE bool DL_I2C_isMultiControllerModeEnabled(const I2C_Regs *i2c)
1959 {
1960  return ((i2c->MASTER.MCR & I2C_MCR_MMST_MASK) == I2C_MCR_MMST_ENABLE);
1961 }
1962 
1972 __STATIC_INLINE void DL_I2C_enableMultiControllerMode(I2C_Regs *i2c)
1973 {
1974  i2c->MASTER.MCR |= I2C_MCR_MMST_ENABLE;
1975 }
1976 
1982 __STATIC_INLINE void DL_I2C_disableController(I2C_Regs *i2c)
1983 {
1984  i2c->MASTER.MCR &= ~(I2C_MCR_ACTIVE_MASK);
1985 }
1986 
1997 __STATIC_INLINE bool DL_I2C_isControllerEnabled(const I2C_Regs *i2c)
1998 {
1999  return ((i2c->MASTER.MCR & I2C_MCR_ACTIVE_MASK) == I2C_MCR_ACTIVE_ENABLE);
2000 }
2001 
2010 __STATIC_INLINE void DL_I2C_enableController(I2C_Regs *i2c)
2011 {
2012  i2c->MASTER.MCR |= I2C_MCR_ACTIVE_ENABLE;
2013 }
2014 
2024 __STATIC_INLINE void DL_I2C_disableControllerClockStretching(I2C_Regs *i2c)
2025 {
2026  i2c->MASTER.MCR &= ~(I2C_MCR_CLKSTRETCH_MASK);
2027 }
2028 
2040  const I2C_Regs *i2c)
2041 {
2042  return ((i2c->MASTER.MCR & I2C_MCR_CLKSTRETCH_MASK) ==
2043  I2C_MCR_CLKSTRETCH_ENABLE);
2044 }
2045 
2055 __STATIC_INLINE void DL_I2C_enableControllerClockStretching(I2C_Regs *i2c)
2056 {
2057  i2c->MASTER.MCR |= I2C_MCR_CLKSTRETCH_ENABLE;
2058 }
2059 
2069 __STATIC_INLINE DL_I2C_CONTROLLER_SCL DL_I2C_getSCLStatus(const I2C_Regs *i2c)
2070 {
2071  uint32_t sclStatus = i2c->MASTER.MBMON & I2C_MBMON_SCL_MASK;
2072 
2073  return (DL_I2C_CONTROLLER_SCL)(sclStatus);
2074 }
2075 
2085 __STATIC_INLINE DL_I2C_CONTROLLER_SDA DL_I2C_getSDAStatus(const I2C_Regs *i2c)
2086 {
2087  uint32_t sdaStatus = i2c->MASTER.MBMON & I2C_MBMON_SDA_MASK;
2088 
2089  return (DL_I2C_CONTROLLER_SDA)(sdaStatus);
2090 }
2091 
2101 __STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getControllerTXFIFOThreshold(
2102  const I2C_Regs *i2c)
2103 {
2104  uint32_t level = i2c->MASTER.MFIFOCTL & I2C_MFIFOCTL_TXTRIG_MASK;
2105 
2106  return (DL_I2C_TX_FIFO_LEVEL)(level);
2107 }
2108 
2118  I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
2119 {
2121  &i2c->MASTER.MFIFOCTL, (uint32_t) level, I2C_MFIFOCTL_TXTRIG_MASK);
2122 }
2123 
2132 __STATIC_INLINE void DL_I2C_stopFlushControllerTXFIFO(I2C_Regs *i2c)
2133 {
2134  i2c->MASTER.MFIFOCTL &= ~(I2C_MFIFOCTL_TXFLUSH_MASK);
2135 }
2136 
2142 __STATIC_INLINE void DL_I2C_startFlushControllerTXFIFO(I2C_Regs *i2c)
2143 {
2144  i2c->MASTER.MFIFOCTL |= I2C_MFIFOCTL_TXFLUSH_MASK;
2145 }
2146 
2156 __STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getControllerRXFIFOThreshold(
2157  const I2C_Regs *i2c)
2158 {
2159  uint32_t level = i2c->MASTER.MFIFOCTL & I2C_MFIFOCTL_RXTRIG_MASK;
2160 
2161  return (DL_I2C_RX_FIFO_LEVEL)(level);
2162 }
2163 
2173  I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
2174 {
2176  &i2c->MASTER.MFIFOCTL, (uint32_t) level, I2C_MFIFOCTL_RXTRIG_MASK);
2177 }
2178 
2187 __STATIC_INLINE void DL_I2C_stopFlushControllerRXFIFO(I2C_Regs *i2c)
2188 {
2189  i2c->MASTER.MFIFOCTL &= ~(I2C_MFIFOCTL_RXFLUSH_MASK);
2190 }
2191 
2197 __STATIC_INLINE void DL_I2C_startFlushControllerRXFIFO(I2C_Regs *i2c)
2198 {
2199  i2c->MASTER.MFIFOCTL |= I2C_MFIFOCTL_RXFLUSH_MASK;
2200 }
2201 
2211 __STATIC_INLINE uint32_t DL_I2C_getControllerRXFIFOCounter(const I2C_Regs *i2c)
2212 {
2213  return (i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFIFOCNT_MASK);
2214 }
2215 
2225 __STATIC_INLINE uint32_t DL_I2C_getControllerTXFIFOCounter(const I2C_Regs *i2c)
2226 {
2227  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) >>
2228  I2C_MFIFOSR_TXFIFOCNT_OFS);
2229 }
2230 
2241 __STATIC_INLINE bool DL_I2C_isControllerRXFIFOFlushActive(const I2C_Regs *i2c)
2242 {
2243  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFLUSH_MASK) ==
2244  I2C_MFIFOSR_RXFLUSH_ACTIVE);
2245 }
2246 
2257 __STATIC_INLINE bool DL_I2C_isControllerTXFIFOFlushActive(const I2C_Regs *i2c)
2258 {
2259  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFLUSH_MASK) ==
2260  I2C_MFIFOSR_TXFLUSH_ACTIVE);
2261 }
2262 
2274 __STATIC_INLINE void DL_I2C_setTargetOwnAddress(I2C_Regs *i2c, uint32_t addr)
2275 {
2276  DL_Common_updateReg(&i2c->SLAVE.SOAR, addr, I2C_SOAR_OAR_MASK);
2277 }
2278 
2292 __STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddress(const I2C_Regs *i2c)
2293 {
2294  return (i2c->SLAVE.SOAR & I2C_SOAR_OAR_MASK);
2295 }
2296 
2304 __STATIC_INLINE void DL_I2C_enableTargetOwnAddress(I2C_Regs *i2c)
2305 {
2306  i2c->SLAVE.SOAR |= I2C_SOAR_OAREN_ENABLE;
2307 }
2308 
2314 __STATIC_INLINE void DL_I2C_disableTargetOwnAddress(I2C_Regs *i2c)
2315 {
2316  i2c->SLAVE.SOAR &= ~(I2C_SOAR_OAREN_MASK);
2317 }
2318 
2329 __STATIC_INLINE bool DL_I2C_isTargetOwnAddressEnabled(const I2C_Regs *i2c)
2330 {
2331  return ((i2c->SLAVE.SOAR & I2C_SOAR_OAREN_MASK) == I2C_SOAR_OAREN_ENABLE);
2332 }
2333 
2344 __STATIC_INLINE void DL_I2C_setTargetAddressingMode(
2345  I2C_Regs *i2c, DL_I2C_TARGET_ADDRESSING_MODE mode)
2346 {
2348  &i2c->SLAVE.SOAR, (uint32_t) mode, I2C_SOAR_SMODE_MASK);
2349 }
2350 
2360 __STATIC_INLINE DL_I2C_TARGET_ADDRESSING_MODE DL_I2C_getTargetAddressingMode(
2361  const I2C_Regs *i2c)
2362 {
2363  uint32_t mode = i2c->SLAVE.SOAR & I2C_SOAR_SMODE_MASK;
2364 
2365  return (DL_I2C_TARGET_ADDRESSING_MODE)(mode);
2366 }
2367 
2376 __STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternate(const I2C_Regs *i2c)
2377 {
2378  return (i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2_MASK);
2379 }
2380 
2388  I2C_Regs *i2c, uint32_t addr)
2389 {
2390  DL_Common_updateReg(&i2c->SLAVE.SOAR2, addr, I2C_SOAR2_OAR2_MASK);
2391 }
2392 
2404  const I2C_Regs *i2c)
2405 {
2406  return ((i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2_MASK_MASK) >>
2407  I2C_SOAR2_OAR2_MASK_OFS);
2408 }
2409 
2423  I2C_Regs *i2c, uint32_t addressMask)
2424 {
2425  DL_Common_updateReg(&i2c->SLAVE.SOAR2,
2426  addressMask << I2C_SOAR2_OAR2_MASK_OFS, I2C_SOAR2_OAR2_MASK_MASK);
2427 }
2428 
2434 __STATIC_INLINE void DL_I2C_disableTargetOwnAddressAlternate(I2C_Regs *i2c)
2435 {
2436  i2c->SLAVE.SOAR2 &= ~(I2C_SOAR2_OAR2EN_MASK);
2437 }
2438 
2450  const I2C_Regs *i2c)
2451 {
2452  return (
2453  (i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2EN_MASK) == I2C_SOAR2_OAR2EN_ENABLE);
2454 }
2455 
2461 __STATIC_INLINE void DL_I2C_enableTargetOwnAddressAlternate(I2C_Regs *i2c)
2462 {
2463  i2c->SLAVE.SOAR2 |= I2C_SOAR2_OAR2EN_ENABLE;
2464 }
2465 
2476 __STATIC_INLINE uint32_t DL_I2C_getTargetAddressMatch(const I2C_Regs *i2c)
2477 {
2478  return (
2479  (i2c->SLAVE.SSR & I2C_SSR_ADDRMATCH_MASK) >> I2C_SSR_ADDRMATCH_OFS);
2480 }
2481 
2493 __STATIC_INLINE void DL_I2C_disableTargetClockStretching(I2C_Regs *i2c)
2494 {
2495  i2c->SLAVE.SCTR &= ~(I2C_SCTR_SCLKSTRETCH_MASK);
2496 }
2497 
2508 __STATIC_INLINE bool DL_I2C_isTargetClockStretchingEnabled(const I2C_Regs *i2c)
2509 {
2510  return ((i2c->SLAVE.SCTR & I2C_SCTR_SCLKSTRETCH_MASK) ==
2511  I2C_SCTR_SCLKSTRETCH_ENABLE);
2512 }
2513 
2525 __STATIC_INLINE void DL_I2C_enableTargetClockStretching(I2C_Regs *i2c)
2526 {
2527  i2c->SLAVE.SCTR |= I2C_SCTR_SCLKSTRETCH_ENABLE;
2528 }
2529 
2541 __STATIC_INLINE void DL_I2C_disableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
2542 {
2543  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXEMPTY_ON_TREQ_MASK);
2544 }
2545 
2558  const I2C_Regs *i2c)
2559 {
2560  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXEMPTY_ON_TREQ_MASK) ==
2561  I2C_SCTR_TXEMPTY_ON_TREQ_ENABLE);
2562 }
2563 
2573 __STATIC_INLINE void DL_I2C_enableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
2574 {
2575  i2c->SLAVE.SCTR |= I2C_SCTR_TXEMPTY_ON_TREQ_ENABLE;
2576 }
2577 
2586 __STATIC_INLINE void DL_I2C_disableTargetTXTriggerInTXMode(I2C_Regs *i2c)
2587 {
2588  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXTRIG_TXMODE_MASK);
2589 }
2590 
2602  const I2C_Regs *i2c)
2603 {
2604  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXTRIG_TXMODE_MASK) ==
2605  I2C_SCTR_TXTRIG_TXMODE_ENABLE);
2606 }
2607 
2624 __STATIC_INLINE void DL_I2C_enableTargetTXTriggerInTXMode(I2C_Regs *i2c)
2625 {
2626  i2c->SLAVE.SCTR |= I2C_SCTR_TXTRIG_TXMODE_ENABLE;
2627 }
2628 
2637 __STATIC_INLINE void DL_I2C_disableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
2638 {
2639  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXWAIT_STALE_TXFIFO_MASK);
2640 }
2641 
2657  const I2C_Regs *i2c)
2658 {
2659  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXWAIT_STALE_TXFIFO_MASK) ==
2660  I2C_SCTR_TXWAIT_STALE_TXFIFO_ENABLE);
2661 }
2662 
2675 __STATIC_INLINE void DL_I2C_enableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
2676 {
2677  i2c->SLAVE.SCTR |= I2C_SCTR_TXWAIT_STALE_TXFIFO_ENABLE;
2678 }
2679 
2692 __STATIC_INLINE void DL_I2C_disableTargetRXFullOnRXRequest(I2C_Regs *i2c)
2693 {
2694  i2c->SLAVE.SCTR &= ~(I2C_SCTR_RXFULL_ON_RREQ_MASK);
2695 }
2696 
2708  const I2C_Regs *i2c)
2709 {
2710  return ((i2c->SLAVE.SCTR & I2C_SCTR_RXFULL_ON_RREQ_MASK) ==
2711  I2C_SCTR_RXFULL_ON_RREQ_ENABLE);
2712 }
2713 
2725 __STATIC_INLINE void DL_I2C_enableTargetRXFullOnRXRequest(I2C_Regs *i2c)
2726 {
2727  i2c->SLAVE.SCTR |= I2C_SCTR_RXFULL_ON_RREQ_ENABLE;
2728 }
2729 
2740 __STATIC_INLINE void DL_I2C_disableDefaultHostAddress(I2C_Regs *i2c)
2741 {
2742  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_DEFHOSTADR_MASK);
2743 }
2744 
2756 __STATIC_INLINE bool DL_I2C_isDefaultHostAddressEnabled(const I2C_Regs *i2c)
2757 {
2758  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_DEFHOSTADR_MASK) ==
2759  I2C_SCTR_EN_DEFHOSTADR_ENABLE);
2760 }
2761 
2770 __STATIC_INLINE void DL_I2C_enableDefaultHostAddress(I2C_Regs *i2c)
2771 {
2772  i2c->SLAVE.SCTR |= I2C_SCTR_EN_DEFHOSTADR_ENABLE;
2773 }
2774 
2786 __STATIC_INLINE void DL_I2C_disableAlertResponseAddress(I2C_Regs *i2c)
2787 {
2788  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_ALRESPADR_MASK);
2789 }
2790 
2802 __STATIC_INLINE bool DL_I2C_isAlertResponseAddressEnabled(const I2C_Regs *i2c)
2803 {
2804  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_ALRESPADR_MASK) ==
2805  I2C_SCTR_EN_ALRESPADR_ENABLE);
2806 }
2807 
2816 __STATIC_INLINE void DL_I2C_enableAlertResponseAddress(I2C_Regs *i2c)
2817 {
2818  i2c->SLAVE.SCTR |= I2C_SCTR_EN_ALRESPADR_ENABLE;
2819 }
2820 
2832 __STATIC_INLINE void DL_I2C_disableDefaultDeviceAddress(I2C_Regs *i2c)
2833 {
2834  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_DEFDEVADR_MASK);
2835 }
2836 
2848 __STATIC_INLINE bool DL_I2C_isDefaultDeviceAddressEnabled(const I2C_Regs *i2c)
2849 {
2850  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_DEFDEVADR_MASK) ==
2851  I2C_SCTR_EN_DEFDEVADR_ENABLE);
2852 }
2853 
2862 __STATIC_INLINE void DL_I2C_enableDefaultDeviceAddress(I2C_Regs *i2c)
2863 {
2864  i2c->SLAVE.SCTR |= I2C_SCTR_EN_DEFDEVADR_ENABLE;
2865 }
2866 
2875 __STATIC_INLINE void DL_I2C_disableTargetWakeup(I2C_Regs *i2c)
2876 {
2877  i2c->SLAVE.SCTR &= ~(I2C_SCTR_SWUEN_MASK);
2878 }
2879 
2890 __STATIC_INLINE bool DL_I2C_isTargetWakeupEnabled(const I2C_Regs *i2c)
2891 {
2892  return ((i2c->SLAVE.SCTR & I2C_SCTR_SWUEN_MASK) == I2C_SCTR_SWUEN_ENABLE);
2893 }
2894 
2905 __STATIC_INLINE void DL_I2C_enableTargetWakeup(I2C_Regs *i2c)
2906 {
2907  i2c->SLAVE.SCTR |= I2C_SCTR_SWUEN_ENABLE;
2908 }
2909 
2915 __STATIC_INLINE void DL_I2C_disableTarget(I2C_Regs *i2c)
2916 {
2917  i2c->SLAVE.SCTR &= ~(I2C_SCTR_ACTIVE_MASK);
2918 }
2919 
2930 __STATIC_INLINE bool DL_I2C_isTargetEnabled(const I2C_Regs *i2c)
2931 {
2932  return (
2933  (i2c->SLAVE.SCTR & I2C_SCTR_ACTIVE_MASK) == I2C_SCTR_ACTIVE_ENABLE);
2934 }
2935 
2941 __STATIC_INLINE void DL_I2C_enableTarget(I2C_Regs *i2c)
2942 {
2943  i2c->SLAVE.SCTR |= I2C_SCTR_ACTIVE_ENABLE;
2944 }
2945 
2951 __STATIC_INLINE void DL_I2C_disableGeneralCall(I2C_Regs *i2c)
2952 {
2953  i2c->SLAVE.SCTR &= ~(I2C_SCTR_GENCALL_MASK);
2954 }
2955 
2966 __STATIC_INLINE bool DL_I2C_isGeneralCallEnabled(const I2C_Regs *i2c)
2967 {
2968  return (
2969  (i2c->SLAVE.SCTR & I2C_SCTR_GENCALL_MASK) == I2C_SCTR_GENCALL_ENABLE);
2970 }
2971 
2977 __STATIC_INLINE void DL_I2C_enableGeneralCall(I2C_Regs *i2c)
2978 {
2979  i2c->SLAVE.SCTR |= I2C_SCTR_GENCALL_ENABLE;
2980 }
2981 
2991 __STATIC_INLINE uint32_t DL_I2C_getTargetStatus(const I2C_Regs *i2c)
2992 {
2993  return (i2c->SLAVE.SSR);
2994 }
2995 
3007 __STATIC_INLINE uint8_t DL_I2C_receiveTargetData(const I2C_Regs *i2c)
3008 {
3009  return (uint8_t)(i2c->SLAVE.SRXDATA & I2C_SRXDATA_VALUE_MASK);
3010 }
3011 
3019 __STATIC_INLINE void DL_I2C_transmitTargetData(I2C_Regs *i2c, uint8_t data)
3020 {
3021  i2c->SLAVE.STXDATA = data;
3022 }
3023 
3032 __STATIC_INLINE void DL_I2C_disableTargetACKOverride(I2C_Regs *i2c)
3033 {
3034  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_MASK);
3035 }
3036 
3047 __STATIC_INLINE bool DL_I2C_isTargetACKOverrideEnabled(const I2C_Regs *i2c)
3048 {
3049  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_MASK) ==
3050  I2C_SACKCTL_ACKOEN_ENABLE);
3051 }
3052 
3064 __STATIC_INLINE void DL_I2C_enableTargetACKOverride(I2C_Regs *i2c)
3065 {
3066  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ENABLE;
3067 }
3068 
3081 __STATIC_INLINE DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE
3083 {
3084  uint32_t value = i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOVAL_MASK;
3085 
3086  return (DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE)(value);
3087 }
3088 
3102  I2C_Regs *i2c, DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE value)
3103 {
3105  &i2c->SLAVE.SACKCTL, (uint32_t) value, I2C_SACKCTL_ACKOVAL_MASK);
3106 }
3107 
3113 __STATIC_INLINE void DL_I2C_disableACKOverrideOnStart(I2C_Regs *i2c)
3114 {
3115  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_START_MASK);
3116 }
3117 
3128 __STATIC_INLINE bool DL_I2C_isACKOverrideOnStartEnabled(const I2C_Regs *i2c)
3129 {
3130  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_START_MASK) ==
3131  I2C_SACKCTL_ACKOEN_ON_START_ENABLE);
3132 }
3133 
3144 __STATIC_INLINE void DL_I2C_enableACKOverrideOnStart(I2C_Regs *i2c)
3145 {
3146  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_START_ENABLE;
3147 }
3148 
3154 __STATIC_INLINE void DL_I2C_disableACKOverrideOnPECNext(I2C_Regs *i2c)
3155 {
3156  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_PECNEXT_MASK);
3157 }
3158 
3170 __STATIC_INLINE bool DL_I2C_isACKOverrideOnPECNextEnabled(const I2C_Regs *i2c)
3171 {
3172  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_PECNEXT_MASK) ==
3173  I2C_SACKCTL_ACKOEN_ON_PECNEXT_ENABLE);
3174 }
3175 
3189 __STATIC_INLINE void DL_I2C_enableACKOverrideOnPECNext(I2C_Regs *i2c)
3190 {
3191  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_PECNEXT_ENABLE;
3192 }
3193 
3199 __STATIC_INLINE void DL_I2C_disableACKOverrideOnPECDone(I2C_Regs *i2c)
3200 {
3201  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_PECDONE_MASK);
3202 }
3203 
3215 __STATIC_INLINE bool DL_I2C_isACKOverrideOnPECDoneEnabled(const I2C_Regs *i2c)
3216 {
3217  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_PECDONE_MASK) ==
3218  I2C_SACKCTL_ACKOEN_ON_PECDONE_ENABLE);
3219 }
3220 
3231 __STATIC_INLINE void DL_I2C_enableACKOverrideOnPECDone(I2C_Regs *i2c)
3232 {
3233  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_PECDONE_ENABLE;
3234 }
3235 
3246 __STATIC_INLINE uint32_t DL_I2C_getTargetPECCountValue(const I2C_Regs *i2c)
3247 {
3248  return (i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECCTL_PECCNT_MASK);
3249 }
3250 
3262 __STATIC_INLINE void DL_I2C_setTargetPECCountValue(
3263  I2C_Regs *i2c, uint32_t count)
3264 {
3266  &i2c->SLAVE.TARGET_PECCTL, count, I2C_TARGET_PECCTL_PECCNT_MASK);
3267 }
3268 
3274 __STATIC_INLINE void DL_I2C_disableTargetPEC(I2C_Regs *i2c)
3275 {
3276  i2c->SLAVE.TARGET_PECCTL &= ~(I2C_TARGET_PECCTL_PECEN_MASK);
3277 }
3278 
3290 __STATIC_INLINE bool DL_I2C_isTargetPECEnabled(const I2C_Regs *i2c)
3291 {
3292  return ((i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECCTL_PECEN_MASK) ==
3293  I2C_TARGET_PECCTL_PECEN_ENABLE);
3294 }
3295 
3310 __STATIC_INLINE void DL_I2C_enableTargetPEC(I2C_Regs *i2c)
3311 {
3312  i2c->SLAVE.TARGET_PECCTL |= I2C_TARGET_PECCTL_PECEN_ENABLE;
3313 }
3314 
3325 __STATIC_INLINE uint32_t DL_I2C_getTargetCurrentPECCount(const I2C_Regs *i2c)
3326 {
3327  return (i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECBYTECNT_MASK);
3328 }
3329 
3343 __STATIC_INLINE DL_I2C_TARGET_PEC_STATUS DL_I2C_getTargetPECCheckedStatus(
3344  const I2C_Regs *i2c)
3345 {
3346  uint32_t status =
3347  i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECSTS_CHECK_MASK;
3348 
3349  return (DL_I2C_TARGET_PEC_STATUS)(status);
3350 }
3351 
3364 __STATIC_INLINE DL_I2C_TARGET_PEC_CHECK_ERROR DL_I2C_getTargetPECCheckError(
3365  const I2C_Regs *i2c)
3366 {
3367  uint32_t status =
3368  i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECSTS_ERROR_MASK;
3369 
3370  return (DL_I2C_TARGET_PEC_CHECK_ERROR)(status);
3371 }
3372 
3382 __STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getTargetTXFIFOThreshold(
3383  const I2C_Regs *i2c)
3384 {
3385  uint32_t level = i2c->SLAVE.SFIFOCTL & I2C_SFIFOCTL_TXTRIG_MASK;
3386 
3387  return (DL_I2C_TX_FIFO_LEVEL)(level);
3388 }
3389 
3398 __STATIC_INLINE void DL_I2C_setTargetTXFIFOThreshold(
3399  I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
3400 {
3401  DL_Common_updateReg(&i2c->SLAVE.SFIFOCTL, (uint32_t) level,
3402  (uint32_t) I2C_SFIFOCTL_TXTRIG_MASK);
3403 }
3404 
3413 __STATIC_INLINE void DL_I2C_stopFlushTargetTXFIFO(I2C_Regs *i2c)
3414 {
3415  i2c->SLAVE.SFIFOCTL &= ~(I2C_SFIFOCTL_TXFLUSH_MASK);
3416 }
3417 
3423 __STATIC_INLINE void DL_I2C_startFlushTargetTXFIFO(I2C_Regs *i2c)
3424 {
3425  i2c->SLAVE.SFIFOCTL |= I2C_SFIFOCTL_TXFLUSH_MASK;
3426 }
3427 
3436 __STATIC_INLINE void DL_I2C_stopFlushTargetRXFIFO(I2C_Regs *i2c)
3437 {
3438  i2c->SLAVE.SFIFOCTL &= ~(I2C_SFIFOCTL_RXFLUSH_MASK);
3439 }
3440 
3446 __STATIC_INLINE void DL_I2C_startFlushTargetRXFIFO(I2C_Regs *i2c)
3447 {
3448  i2c->SLAVE.SFIFOCTL |= I2C_SFIFOCTL_RXFLUSH_MASK;
3449 }
3450 
3460 __STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getTargetRXFIFOThreshold(
3461  const I2C_Regs *i2c)
3462 {
3463  uint32_t level = i2c->SLAVE.SFIFOCTL & I2C_SFIFOCTL_RXTRIG_MASK;
3464 
3465  return (DL_I2C_RX_FIFO_LEVEL)(level);
3466 }
3467 
3476 __STATIC_INLINE void DL_I2C_setTargetRXFIFOThreshold(
3477  I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
3478 {
3480  &i2c->SLAVE.SFIFOCTL, (uint32_t) level, I2C_SFIFOCTL_RXTRIG_MASK);
3481 }
3482 
3492 __STATIC_INLINE uint32_t DL_I2C_getTargetRXFIFOCounter(const I2C_Regs *i2c)
3493 {
3494  return (i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFIFOCNT_MASK);
3495 }
3496 
3506 __STATIC_INLINE uint32_t DL_I2C_getTargetTXFIFOCounter(const I2C_Regs *i2c)
3507 {
3508  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) >>
3509  I2C_SFIFOSR_TXFIFOCNT_OFS);
3510 }
3511 
3522 __STATIC_INLINE bool DL_I2C_isTargetRXFIFOFlushActive(const I2C_Regs *i2c)
3523 {
3524  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFLUSH_MASK) ==
3525  I2C_SFIFOSR_RXFLUSH_ACTIVE);
3526 }
3527 
3538 __STATIC_INLINE bool DL_I2C_isTargetTXFIFOFlushActive(const I2C_Regs *i2c)
3539 {
3540  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFLUSH_MASK) ==
3541  I2C_SFIFOSR_TXFLUSH_ACTIVE);
3542 }
3543 
3552 __STATIC_INLINE void DL_I2C_enableInterrupt(
3553  I2C_Regs *i2c, uint32_t interruptMask)
3554 {
3555  i2c->CPU_INT.IMASK |= interruptMask;
3556 }
3557 
3566 __STATIC_INLINE void DL_I2C_disableInterrupt(
3567  I2C_Regs *i2c, uint32_t interruptMask)
3568 {
3569  i2c->CPU_INT.IMASK &= ~(interruptMask);
3570 }
3571 
3584 __STATIC_INLINE uint32_t DL_I2C_getEnabledInterrupts(
3585  const I2C_Regs *i2c, uint32_t interruptMask)
3586 {
3587  return (i2c->CPU_INT.IMASK & interruptMask);
3588 }
3589 
3607 __STATIC_INLINE uint32_t DL_I2C_getEnabledInterruptStatus(
3608  const I2C_Regs *i2c, uint32_t interruptMask)
3609 {
3610  return (i2c->CPU_INT.MIS & interruptMask);
3611 }
3612 
3628 __STATIC_INLINE uint32_t DL_I2C_getRawInterruptStatus(
3629  const I2C_Regs *i2c, uint32_t interruptMask)
3630 {
3631  return (i2c->CPU_INT.RIS & interruptMask);
3632 }
3633 
3646 __STATIC_INLINE DL_I2C_IIDX DL_I2C_getPendingInterrupt(const I2C_Regs *i2c)
3647 {
3648  return ((DL_I2C_IIDX) i2c->CPU_INT.IIDX);
3649 }
3650 
3659 __STATIC_INLINE void DL_I2C_clearInterruptStatus(
3660  I2C_Regs *i2c, uint32_t interruptMask)
3661 {
3662  i2c->CPU_INT.ICLR = interruptMask;
3663 }
3664 
3681 __STATIC_INLINE void DL_I2C_enableDMAEvent(
3682  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3683 {
3684  switch (index) {
3685  case DL_I2C_EVENT_ROUTE_1:
3686  i2c->DMA_TRIG1.IMASK = interrupt;
3687  break;
3688  case DL_I2C_EVENT_ROUTE_2:
3689  i2c->DMA_TRIG0.IMASK = interrupt;
3690  break;
3691  default:
3692  break;
3693  }
3694 }
3695 
3710 __STATIC_INLINE void DL_I2C_disableDMAEvent(
3711  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3712 {
3713  switch (index) {
3714  case DL_I2C_EVENT_ROUTE_1:
3715  i2c->DMA_TRIG1.IMASK &= ~(interrupt);
3716  break;
3717  case DL_I2C_EVENT_ROUTE_2:
3718  i2c->DMA_TRIG0.IMASK &= ~(interrupt);
3719  break;
3720  default:
3721  break;
3722  }
3723 }
3724 
3743 __STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEvents(
3744  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3745 {
3746  volatile uint32_t *pReg = &i2c->DMA_TRIG1.IMASK;
3747 
3748  return ((*(pReg + (uint32_t) index) & interruptMask));
3749 }
3750 
3773 __STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEventStatus(
3774  const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3775 {
3776  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.MIS;
3777 
3778  return ((*(pReg + (uint32_t) index) & interruptMask));
3779 }
3780 
3799 __STATIC_INLINE uint32_t DL_I2C_getRawDMAEventStatus(
3800  const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3801 {
3802  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.RIS;
3803 
3804  return ((*(pReg + (uint32_t) index) & interruptMask));
3805 }
3806 
3823 __STATIC_INLINE DL_I2C_DMA_IIDX DL_I2C_getPendingDMAEvent(
3824  const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index)
3825 {
3826  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.IIDX;
3827 
3828  return (DL_I2C_DMA_IIDX)((*(pReg + (uint32_t) index)));
3829 }
3830 
3842 __STATIC_INLINE void DL_I2C_clearDMAEvent(
3843  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3844 {
3845  switch (index) {
3846  case DL_I2C_EVENT_ROUTE_1:
3847  i2c->DMA_TRIG1.ICLR |= interrupt;
3848  break;
3849  case DL_I2C_EVENT_ROUTE_2:
3850  i2c->DMA_TRIG0.ICLR |= interrupt;
3851  break;
3852  default:
3853  break;
3854  }
3855 }
3856 
3865 __STATIC_INLINE void DL_I2C_disableGlitchFilterChaining(I2C_Regs *i2c)
3866 {
3867  i2c->GFCTL &= ~(I2C_GFCTL_CHAIN_MASK);
3868 }
3869 
3880 __STATIC_INLINE bool DL_I2C_isGlitchFilterChainingEnabled(const I2C_Regs *i2c)
3881 {
3882  return ((i2c->GFCTL & I2C_GFCTL_CHAIN_MASK) == I2C_GFCTL_CHAIN_ENABLE);
3883 }
3884 
3893 __STATIC_INLINE void DL_I2C_enableGlitchFilterChaining(I2C_Regs *i2c)
3894 {
3895  i2c->GFCTL |= I2C_GFCTL_CHAIN_ENABLE;
3896 }
3897 
3907 __STATIC_INLINE uint32_t DL_I2C_getTimeoutACount(const I2C_Regs *i2c)
3908 {
3909  return (i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTLA_MASK);
3910 }
3911 
3928 __STATIC_INLINE void DL_I2C_setTimeoutACount(I2C_Regs *i2c, uint32_t count)
3929 {
3930  DL_Common_updateReg(&i2c->TIMEOUT_CTL, count, I2C_TIMEOUT_CTL_TCNTLA_MASK);
3931 }
3932 
3938 __STATIC_INLINE void DL_I2C_disableTimeoutA(I2C_Regs *i2c)
3939 {
3940  i2c->TIMEOUT_CTL &= ~(I2C_TIMEOUT_CTL_TCNTAEN_MASK);
3941 }
3942 
3953 __STATIC_INLINE bool DL_I2C_isTimeoutAEnabled(const I2C_Regs *i2c)
3954 {
3955  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTAEN_MASK) ==
3956  I2C_TIMEOUT_CTL_TCNTAEN_ENABLE);
3957 }
3958 
3964 __STATIC_INLINE void DL_I2C_enableTimeoutA(I2C_Regs *i2c)
3965 {
3966  i2c->TIMEOUT_CTL |= I2C_TIMEOUT_CTL_TCNTAEN_ENABLE;
3967 }
3968 
3981 __STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutACounter(const I2C_Regs *i2c)
3982 {
3983  return (i2c->TIMEOUT_CNT & I2C_TIMEOUT_CNT_TCNTA_MASK);
3984 }
3985 
3995 __STATIC_INLINE uint32_t DL_I2C_getTimeoutBCount(const I2C_Regs *i2c)
3996 {
3997  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTLB_MASK) >>
3998  I2C_TIMEOUT_CTL_TCNTLB_OFS);
3999 }
4000 
4015 __STATIC_INLINE void DL_I2C_setTimeoutBCount(I2C_Regs *i2c, uint32_t count)
4016 {
4017  DL_Common_updateReg(&i2c->TIMEOUT_CTL,
4018  (count << I2C_TIMEOUT_CTL_TCNTLB_OFS), I2C_TIMEOUT_CTL_TCNTLB_MASK);
4019 }
4020 
4026 __STATIC_INLINE void DL_I2C_disableTimeoutB(I2C_Regs *i2c)
4027 {
4028  i2c->TIMEOUT_CTL &= ~(I2C_TIMEOUT_CTL_TCNTBEN_MASK);
4029 }
4030 
4041 __STATIC_INLINE bool DL_I2C_isTimeoutBEnabled(const I2C_Regs *i2c)
4042 {
4043  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTBEN_MASK) ==
4044  I2C_TIMEOUT_CTL_TCNTBEN_ENABLE);
4045 }
4046 
4052 __STATIC_INLINE void DL_I2C_enableTimeoutB(I2C_Regs *i2c)
4053 {
4054  i2c->TIMEOUT_CTL |= I2C_TIMEOUT_CTL_TCNTBEN_ENABLE;
4055 }
4056 
4069 __STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutBCounter(const I2C_Regs *i2c)
4070 {
4071  return (i2c->TIMEOUT_CNT & I2C_TIMEOUT_CNT_TCNTB_MASK);
4072 }
4073 
4074 #ifdef __cplusplus
4075 }
4076 #endif
4077 
4078 #endif /* __MSPM0_HAS_I2C__ */
4079 
4080 #endif /* ti_dl_dl_i2c__include */
4081 
__STATIC_INLINE void DL_I2C_disableController(I2C_Regs *i2c)
Disable controller.
Definition: dl_i2c.h:1982
__STATIC_INLINE void DL_I2C_setTargetAddress(I2C_Regs *i2c, uint32_t targetAddress)
Set the address of the target being addressed when configured as an I2C controller.
Definition: dl_i2c.h:1343
DL_I2C_CLOCK_DIVIDE
Definition: dl_i2c.h:468
__STATIC_INLINE void DL_I2C_disableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
Disable target TX transfer waits when stale data in TX FIFO.
Definition: dl_i2c.h:2637
DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE
Definition: dl_i2c.h:670
__STATIC_INLINE void DL_I2C_enableTargetClockStretching(I2C_Regs *i2c)
Enable target clock stretching.
Definition: dl_i2c.h:2525
Definition: dl_i2c.h:680
__STATIC_INLINE void DL_Common_updateReg(volatile uint32_t *reg, uint32_t val, uint32_t mask)
Writes value to specified register - retaining bits unaffected by mask.
Definition: dl_common.h:63
__STATIC_INLINE uint32_t DL_I2C_getTargetCurrentPECCount(const I2C_Regs *i2c)
Get the current SMBus/PMBus PEC byte count of the Target state machine.
Definition: dl_i2c.h:3325
__STATIC_INLINE bool DL_I2C_isACKOverrideOnStartEnabled(const I2C_Regs *i2c)
Checks if target ACK override on Start condition is enabled.
Definition: dl_i2c.h:3128
__STATIC_INLINE void DL_I2C_enableTimeoutB(I2C_Regs *i2c)
Enable Timeout Counter B.
Definition: dl_i2c.h:4052
Definition: dl_i2c.h:654
__STATIC_INLINE DL_I2C_TARGET_PEC_CHECK_ERROR DL_I2C_getTargetPECCheckError(const I2C_Regs *i2c)
Get status if SMBus/PMBus target PEC had an error.
Definition: dl_i2c.h:3364
__STATIC_INLINE void DL_I2C_enableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
Enable target TX transfer waits when stale data in TX FIFO.
Definition: dl_i2c.h:2675
Definition: dl_i2c.h:474
Definition: dl_i2c.h:624
Definition: dl_i2c.h:502
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOFull(const I2C_Regs *i2c)
Checks if target TX FIFO is full.
Definition: dl_i2c.h:940
Definition: dl_i2c.h:737
__STATIC_INLINE void DL_I2C_disableTargetTXTriggerInTXMode(I2C_Regs *i2c)
Disable target TX trigger in TX mode.
Definition: dl_i2c.h:2586
__STATIC_INLINE bool DL_I2C_isACKOverrideOnPECDoneEnabled(const I2C_Regs *i2c)
Checks if target ACK override when SMBus/PMBus PEC is next byte is enabled.
Definition: dl_i2c.h:3215
Definition: dl_i2c.h:499
Definition: dl_i2c.h:490
__STATIC_INLINE uint32_t DL_I2C_getEnabledInterrupts(const I2C_Regs *i2c, uint32_t interruptMask)
Check which I2C interrupts are enabled.
Definition: dl_i2c.h:3584
__STATIC_INLINE uint32_t DL_I2C_getControllerCurrentPECCount(const I2C_Regs *i2c)
Get the current SMBus/PMBus PEC byte count of the controller state machine.
Definition: dl_i2c.h:1568
__STATIC_INLINE void DL_I2C_startFlushControllerRXFIFO(I2C_Regs *i2c)
Start controller RX FIFO flush.
Definition: dl_i2c.h:2197
__STATIC_INLINE void DL_I2C_disableDefaultHostAddress(I2C_Regs *i2c)
Disable SMBus/PMBus default host address of 000 1000b.
Definition: dl_i2c.h:2740
DL_I2C_TARGET_PEC_STATUS
Definition: dl_i2c.h:496
__STATIC_INLINE DL_I2C_CONTROLLER_SCL DL_I2C_getSCLStatus(const I2C_Regs *i2c)
Get SCL signal status.
Definition: dl_i2c.h:2069
Definition: dl_i2c.h:608
__STATIC_INLINE uint32_t DL_I2C_getRawDMAEventStatus(const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
Check interrupt flag of any I2C interrupt for DMA event.
Definition: dl_i2c.h:3799
__STATIC_INLINE bool DL_I2C_isControllerBurstEnabled(const I2C_Regs *i2c)
Checks if I2C controller burst mode is enabled.
Definition: dl_i2c.h:1637
__STATIC_INLINE void DL_I2C_disableGeneralCall(I2C_Regs *i2c)
Disable general call address of 000 0000b.
Definition: dl_i2c.h:2951
__STATIC_INLINE void DL_I2C_disableTimeoutB(I2C_Regs *i2c)
Disable Timeout Counter B.
Definition: dl_i2c.h:4026
Definition: dl_i2c.h:666
bool DL_I2C_transmitTargetDataCheck(I2C_Regs *i2c, uint8_t data)
Transmit target data.
__STATIC_INLINE void DL_I2C_enableACKOverrideOnStart(I2C_Regs *i2c)
Enable target ACK override on Start condition.
Definition: dl_i2c.h:3144
Definition: dl_i2c.h:652
Definition: dl_i2c.h:646
void DL_I2C_flushControllerTXFIFO(I2C_Regs *i2c)
Flushes/removes all elements in the controller TX FIFO.
__STATIC_INLINE void DL_I2C_disableDMAEvent(I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
Disables I2C interrupt from triggering DMA events.
Definition: dl_i2c.h:3710
__STATIC_INLINE void DL_I2C_startControllerTransferAdvanced(I2C_Regs *i2c, uint32_t targetAddr, DL_I2C_CONTROLLER_DIRECTION direction, uint16_t length, DL_I2C_CONTROLLER_START start, DL_I2C_CONTROLLER_STOP stop, DL_I2C_CONTROLLER_ACK ack)
Sets up a transfer from I2C controller with control of START, STOP and ACK.
Definition: dl_i2c.h:913
__STATIC_INLINE void DL_I2C_disableInterrupt(I2C_Regs *i2c, uint32_t interruptMask)
Disable I2C interrupts.
Definition: dl_i2c.h:3566
__STATIC_INLINE void DL_I2C_disableTargetWakeup(I2C_Regs *i2c)
Disable target wakeup.
Definition: dl_i2c.h:2875
__STATIC_INLINE uint32_t DL_I2C_getTargetTXFIFOCounter(const I2C_Regs *i2c)
Get number of bytes which can be put into TX FIFO.
Definition: dl_i2c.h:3506
Definition: dl_i2c.h:454
__STATIC_INLINE bool DL_I2C_isTargetClockStretchingEnabled(const I2C_Regs *i2c)
Checks if target clock stretching is enabled.
Definition: dl_i2c.h:2508
__STATIC_INLINE void DL_I2C_setControllerPECCountValue(I2C_Regs *i2c, uint32_t count)
Set the SMBus/PMBus Packet Error Checking (PEC) count value.
Definition: dl_i2c.h:1504
DL_I2C_CONTROLLER_SCL
Definition: dl_i2c.h:590
__STATIC_INLINE void DL_I2C_startFlushControllerTXFIFO(I2C_Regs *i2c)
Start controller TX FIFO flush.
Definition: dl_i2c.h:2142
__STATIC_INLINE uint32_t DL_I2C_getControllerTXFIFOCounter(const I2C_Regs *i2c)
Get number of bytes which can be put into TX FIFO.
Definition: dl_i2c.h:2225
DL_I2C_CLOCK_DIVIDE divideRatio
Definition: dl_i2c.h:759
__STATIC_INLINE void DL_I2C_disableControllerBurst(I2C_Regs *i2c)
Disable I2C controller burst mode.
Definition: dl_i2c.h:1622
__STATIC_INLINE void DL_I2C_disableACKOverrideOnStart(I2C_Regs *i2c)
Disable target ACK override on Start Condition.
Definition: dl_i2c.h:3113
__STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddressAlternateMask(const I2C_Regs *i2c)
Get target own address alternate mask.
Definition: dl_i2c.h:2403
__STATIC_INLINE uint32_t DL_I2C_getControllerPECCountValue(const I2C_Regs *i2c)
Get the SMBus/PMBus Packet Error Checking (PEC) count value.
Definition: dl_i2c.h:1488
__STATIC_INLINE void DL_I2C_disablePower(I2C_Regs *i2c)
Disables the Peripheral Write Enable (PWREN) register for the I2C.
Definition: dl_i2c.h:1084
Definition: dl_i2c.h:690
void DL_I2C_flushControllerRXFIFO(I2C_Regs *i2c)
Flushes/removes all elements in the controller RX FIFO.
__STATIC_INLINE bool DL_I2C_isControllerRXFIFOFlushActive(const I2C_Regs *i2c)
Checks if controller RX FIFO flush is active.
Definition: dl_i2c.h:2241
__STATIC_INLINE void DL_I2C_enableAlertResponseAddress(I2C_Regs *i2c)
Enable SMBus/PMBus Alert response address (ARA) of 000 1100b.
Definition: dl_i2c.h:2816
DL_I2C_ANALOG_GLITCH_FILTER_WIDTH
Definition: dl_i2c.h:518
__STATIC_INLINE void DL_I2C_enableStartCondition(I2C_Regs *i2c)
Enable I2C START generation.
Definition: dl_i2c.h:1682
Definition: dl_i2c.h:729
Definition: dl_i2c.h:462
__STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getControllerTXFIFOThreshold(const I2C_Regs *i2c)
Get controller TX FIFO threshold level.
Definition: dl_i2c.h:2101
__STATIC_INLINE void DL_I2C_transmitTargetData(I2C_Regs *i2c, uint8_t data)
Set next byte to be transferred during the next transaction.
Definition: dl_i2c.h:3019
__STATIC_INLINE void DL_I2C_disableACKOverrideOnPECDone(I2C_Regs *i2c)
Disable target ACK override when SMBus/PMBus PEC is next byte.
Definition: dl_i2c.h:3199
__STATIC_INLINE DL_I2C_CONTROLLER_ADDRESSING_MODE DL_I2C_getControllerAddressingMode(const I2C_Regs *i2c)
Get controller addressing mode.
Definition: dl_i2c.h:1361
void DL_I2C_setClockConfig(I2C_Regs *i2c, const DL_I2C_ClockConfig *config)
Configure I2C source clock.
Definition: dl_i2c.h:592
__STATIC_INLINE DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH DL_I2C_getDigitalGlitchFilterPulseWidth(const I2C_Regs *i2c)
Get Digital Glitch Suppression Pulse Width.
Definition: dl_i2c.h:1218
__STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getTargetTXFIFOThreshold(const I2C_Regs *i2c)
Get target TX FIFO threshold level.
Definition: dl_i2c.h:3382
__STATIC_INLINE void DL_I2C_setTargetOwnAddressAlternateMask(I2C_Regs *i2c, uint32_t addressMask)
Set target own address alternate mask.
Definition: dl_i2c.h:2422
__STATIC_INLINE DL_I2C_CONTROLLER_PEC_STATUS DL_I2C_getControllerPECCheckedStatus(const I2C_Regs *i2c)
If controller SMBus/PMBus PEC was checked in last transaction.
Definition: dl_i2c.h:1588
Definition: dl_i2c.h:660
DL_I2C_CONTROLLER_SDA
Definition: dl_i2c.h:598
Definition: dl_i2c.h:692
DL_I2C_CONTROLLER_START
Definition: dl_i2c.h:606
__STATIC_INLINE uint8_t DL_I2C_getTimerPeriod(const I2C_Regs *i2c)
Get timer period This field is used in the equation to configure SCL_PERIOD:
Definition: dl_i2c.h:1874
Definition: dl_i2c.h:640
__STATIC_INLINE void DL_I2C_setTimerPeriod(I2C_Regs *i2c, uint8_t period)
Set timer period This field is used in the equation to configure SCL_PERIOD:
Definition: dl_i2c.h:1898
__STATIC_INLINE void DL_I2C_enableTargetOwnAddress(I2C_Regs *i2c)
Enable target own address.
Definition: dl_i2c.h:2304
Definition: dl_i2c.h:594
__STATIC_INLINE void DL_I2C_enableGeneralCall(I2C_Regs *i2c)
Enable usage of general call address of 000 0000b.
Definition: dl_i2c.h:2977
__STATIC_INLINE void DL_I2C_enableControllerACKOverride(I2C_Regs *i2c)
Enable controller ACK override.
Definition: dl_i2c.h:1425
Definition: dl_i2c.h:600
#define DL_I2C_TX_FIFO_COUNT_MAXIMUM
I2C number of bytes which could be put into the TX FIFO.
Definition: dl_i2c.h:74
Definition: dl_i2c.h:742
__STATIC_INLINE bool DL_I2C_isTargetRXFIFOEmpty(const I2C_Regs *i2c)
Checks if target RX FIFO is empty.
Definition: dl_i2c.h:972
__STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getControllerRXFIFOThreshold(const I2C_Regs *i2c)
Get controller RX FIFO threshold level.
Definition: dl_i2c.h:2156
__STATIC_INLINE uint32_t DL_I2C_getTargetAddress(const I2C_Regs *i2c)
Get the address of the target being addressed when configured as an I2C controller.
Definition: dl_i2c.h:1325
__STATIC_INLINE void DL_I2C_stopFlushControllerRXFIFO(I2C_Regs *i2c)
Stop controller RX FIFO flush.
Definition: dl_i2c.h:2187
DL_I2C_CLOCK
Definition: dl_i2c.h:460
__STATIC_INLINE uint32_t DL_I2C_getTargetRXFIFOCounter(const I2C_Regs *i2c)
Get number of bytes which can be read from RX FIFO.
Definition: dl_i2c.h:3492
__STATIC_INLINE void DL_I2C_enableDefaultHostAddress(I2C_Regs *i2c)
Enable SMBus/PMBus default host address of 000 1000b.
Definition: dl_i2c.h:2770
DL_I2C_CONTROLLER_ACK
Definition: dl_i2c.h:622
__STATIC_INLINE void DL_I2C_stopFlushControllerTXFIFO(I2C_Regs *i2c)
Stop controller TX FIFO flush.
Definition: dl_i2c.h:2132
DriverLib Common APIs.
Definition: dl_i2c.h:731
Definition: dl_i2c.h:470
__STATIC_INLINE void DL_I2C_setControllerDirection(I2C_Regs *i2c, DL_I2C_CONTROLLER_DIRECTION direction)
Set direction of next controller operation.
Definition: dl_i2c.h:1302
__STATIC_INLINE uint8_t DL_I2C_receiveTargetData(const I2C_Regs *i2c)
Get byte of data from I2C target.
Definition: dl_i2c.h:3007
Definition: dl_i2c.h:664
__STATIC_INLINE DL_I2C_CONTROLLER_SDA DL_I2C_getSDAStatus(const I2C_Regs *i2c)
Get SDA signal status.
Definition: dl_i2c.h:2085
Definition: dl_i2c.h:482
__STATIC_INLINE void DL_I2C_setDigitalGlitchFilterPulseWidth(I2C_Regs *i2c, DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH filterWidth)
Set Digital Glitch Suppression Pulse Width.
Definition: dl_i2c.h:1235
__STATIC_INLINE bool DL_I2C_isTargetOwnAddressEnabled(const I2C_Regs *i2c)
Checks if target own address is enabled.
Definition: dl_i2c.h:2329
Definition: dl_i2c.h:740
Definition: dl_i2c.h:662
Definition: dl_i2c.h:709
DL_I2C_CONTROLLER_ADDRESSING_MODE
Definition: dl_i2c.h:558
__STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutBCounter(const I2C_Regs *i2c)
Get the current Timer Counter B value.
Definition: dl_i2c.h:4069
__STATIC_INLINE DL_I2C_DMA_IIDX DL_I2C_getPendingDMAEvent(const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index)
Get highest priority pending I2C interrupt for DMA event.
Definition: dl_i2c.h:3823
__STATIC_INLINE DL_I2C_TARGET_PEC_STATUS DL_I2C_getTargetPECCheckedStatus(const I2C_Regs *i2c)
Get status if SMBus/PMBus target PEC was checked in last transaction.
Definition: dl_i2c.h:3343
__STATIC_INLINE uint8_t DL_I2C_receiveControllerData(const I2C_Regs *i2c)
Get byte of data from I2C controller.
Definition: dl_i2c.h:1834
Definition: dl_i2c.h:492
Definition: dl_i2c.h:644
Definition: dl_i2c.h:658
void DL_I2C_flushTargetRXFIFO(I2C_Regs *i2c)
Flushes/removes all elements in the target RX FIFO.
uint8_t DL_I2C_fillTargetTXFIFO(I2C_Regs *i2c, const uint8_t *buffer, uint8_t count)
Fills the target TX FIFO with data.
__STATIC_INLINE void DL_I2C_enableControllerReadOnTXEmpty(I2C_Regs *i2c)
Enable controller read on TX empty.
Definition: dl_i2c.h:1474
Definition: dl_i2c.h:748
__STATIC_INLINE void DL_I2C_disableTargetClockStretching(I2C_Regs *i2c)
Disable target clock stretching.
Definition: dl_i2c.h:2493
__STATIC_INLINE void DL_I2C_enableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
Enable target TX empty interrupt on transmit request.
Definition: dl_i2c.h:2573
Definition: dl_i2c.h:713
__STATIC_INLINE void DL_I2C_disableACKOverrideOnPECNext(I2C_Regs *i2c)
Disable target ACK override when SMBus/PMBus PEC is next byte.
Definition: dl_i2c.h:3154
uint8_t DL_I2C_receiveTargetDataBlocking(const I2C_Regs *i2c)
Receive target data, waiting until receive request.
__STATIC_INLINE void DL_I2C_setControllerTXFIFOThreshold(I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
Set controller TX FIFO threshold level.
Definition: dl_i2c.h:2117
__STATIC_INLINE void DL_I2C_enableTarget(I2C_Regs *i2c)
Enable usage of target functionality.
Definition: dl_i2c.h:2941
__STATIC_INLINE uint16_t DL_I2C_getTransactionCount(const I2C_Regs *i2c)
Get transaction count in bytes.
Definition: dl_i2c.h:1817
__STATIC_INLINE DL_I2C_CONTROLLER_PEC_CHECK_ERROR DL_I2C_getControllerPECCheckError(const I2C_Regs *i2c)
Get the status of the controller SMBus/PMBus PEC Check error.
Definition: dl_i2c.h:1609
__STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddress(const I2C_Regs *i2c)
Get target own address.
Definition: dl_i2c.h:2292
__STATIC_INLINE void DL_I2C_selectClockDivider(I2C_Regs *i2c, DL_I2C_CLOCK_DIVIDE clockDivider)
Set Clock Divider.
Definition: dl_i2c.h:1163
__STATIC_INLINE bool DL_I2C_isACKOverrideOnPECNextEnabled(const I2C_Regs *i2c)
Checks if target ACK override when SMBus/PMBus PEC is next byte is enabled.
Definition: dl_i2c.h:3170
Definition: dl_i2c.h:476
__STATIC_INLINE void DL_I2C_enableACKOverrideOnPECDone(I2C_Regs *i2c)
Enable target ACK override when SMBus/PMBus PEC is done.
Definition: dl_i2c.h:3231
__STATIC_INLINE void DL_I2C_setTransactionLength(I2C_Regs *i2c, uint32_t length)
Set transaction length in bytes.
Definition: dl_i2c.h:1787
Definition: dl_i2c.h:716
__STATIC_INLINE void DL_I2C_disableGlitchFilterChaining(I2C_Regs *i2c)
Disable analog and digital glitch filter chaining.
Definition: dl_i2c.h:3865
__STATIC_INLINE void DL_I2C_enableController(I2C_Regs *i2c)
Enable controller.
Definition: dl_i2c.h:2010
__STATIC_INLINE uint32_t DL_I2C_getEnabledInterruptStatus(const I2C_Regs *i2c, uint32_t interruptMask)
Check interrupt flag of enabled I2C interrupts.
Definition: dl_i2c.h:3607
__STATIC_INLINE void DL_I2C_setTargetOwnAddressAlternate(I2C_Regs *i2c, uint32_t addr)
Set target own address alternate.
Definition: dl_i2c.h:2387
Definition: dl_i2c.h:610
__STATIC_INLINE bool DL_I2C_isTimeoutBEnabled(const I2C_Regs *i2c)
Checks if Timeout Counter B is enabled.
Definition: dl_i2c.h:4041
__STATIC_INLINE bool DL_I2C_isTargetTXTriggerInTXModeEnabled(const I2C_Regs *i2c)
Checks if target TX trigger in TX mode is enabled.
Definition: dl_i2c.h:2601
Definition: dl_i2c.h:472
__STATIC_INLINE bool DL_I2C_isMultiControllerModeEnabled(const I2C_Regs *i2c)
Checks if multicontroller mode is enabled.
Definition: dl_i2c.h:1958
__STATIC_INLINE bool DL_I2C_isTargetOwnAddressAlternateEnabled(const I2C_Regs *i2c)
Checks if target own address alternate is enabled.
Definition: dl_i2c.h:2449
__STATIC_INLINE void DL_I2C_setTimeoutACount(I2C_Regs *i2c, uint32_t count)
Set the Timeout Counter A value.
Definition: dl_i2c.h:3928
__STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getTargetRXFIFOThreshold(const I2C_Regs *i2c)
Get target RX FIFO threshold level.
Definition: dl_i2c.h:3460
__STATIC_INLINE bool DL_I2C_isTargetEnabled(const I2C_Regs *i2c)
Checks if target functionality is enabled.
Definition: dl_i2c.h:2930
__STATIC_INLINE bool DL_I2C_isControllerTXFIFOEmpty(const I2C_Regs *i2c)
Checks if controller TX FIFO is empty.
Definition: dl_i2c.h:835
__STATIC_INLINE void DL_I2C_disableStartCondition(I2C_Regs *i2c)
Disable I2C START generation.
Definition: dl_i2c.h:1657
__STATIC_INLINE void DL_I2C_setTargetAddressingMode(I2C_Regs *i2c, DL_I2C_TARGET_ADDRESSING_MODE mode)
Set target addressing mode.
Definition: dl_i2c.h:2344
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOFlushActive(const I2C_Regs *i2c)
Checks if target TX FIFO flush is active.
Definition: dl_i2c.h:3538
Definition: dl_i2c.h:746
__STATIC_INLINE bool DL_I2C_isDefaultHostAddressEnabled(const I2C_Regs *i2c)
Checks if SMBus/PMBus default host address of 000 1000b is enabled.
Definition: dl_i2c.h:2756
__STATIC_INLINE bool DL_I2C_isControllerTXFIFOFull(const I2C_Regs *i2c)
Checks if controller TX FIFO is full.
Definition: dl_i2c.h:819
__STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEventStatus(const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
Check interrupt flag of enabled I2C interrupt for DMA event.
Definition: dl_i2c.h:3773
DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH
Definition: dl_i2c.h:530
Definition: dl_i2c.h:724
__STATIC_INLINE void DL_I2C_setTargetRXFIFOThreshold(I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
Set target RX FIFO threshold level.
Definition: dl_i2c.h:3476
Definition: dl_i2c.h:554
__STATIC_INLINE void DL_I2C_reset(I2C_Regs *i2c)
Resets i2c peripheral.
Definition: dl_i2c.h:1116
__STATIC_INLINE void DL_I2C_setTargetACKOverrideValue(I2C_Regs *i2c, DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE value)
Set target acknowledge override value.
Definition: dl_i2c.h:3101
__STATIC_INLINE void DL_I2C_disableMultiControllerMode(I2C_Regs *i2c)
Disable multicontroller mode.
Definition: dl_i2c.h:1943
__STATIC_INLINE void DL_I2C_stopFlushTargetTXFIFO(I2C_Regs *i2c)
Stop target TX FIFO flush.
Definition: dl_i2c.h:3413
__STATIC_INLINE void DL_I2C_enableMultiControllerMode(I2C_Regs *i2c)
Enable multicontroller mode.
Definition: dl_i2c.h:1972
__STATIC_INLINE void DL_I2C_resetControllerTransfer(I2C_Regs *i2c)
Reset transfers from from I2C controller.
Definition: dl_i2c.h:864
DL_I2C_RX_FIFO_LEVEL
Definition: dl_i2c.h:650
__STATIC_INLINE bool DL_I2C_isTargetRXFIFOFlushActive(const I2C_Regs *i2c)
Checks if target RX FIFO flush is active.
Definition: dl_i2c.h:3522
__STATIC_INLINE uint32_t DL_I2C_getTimeoutBCount(const I2C_Regs *i2c)
Get the Timeout Counter B value.
Definition: dl_i2c.h:3995
__STATIC_INLINE uint32_t DL_I2C_getTimeoutACount(const I2C_Regs *i2c)
Get the Timeout Counter A value.
Definition: dl_i2c.h:3907
__STATIC_INLINE void DL_I2C_enableTimeoutA(I2C_Regs *i2c)
Enable Timeout Counter A.
Definition: dl_i2c.h:3964
DL_I2C_CONTROLLER_PEC_STATUS
Definition: dl_i2c.h:566
__STATIC_INLINE DL_I2C_ANALOG_GLITCH_FILTER_WIDTH DL_I2C_getAnalogGlitchFilterPulseWidth(const I2C_Regs *i2c)
Get Analog Glitch Suppression Pulse Width.
Definition: dl_i2c.h:1182
__STATIC_INLINE void DL_I2C_enablePower(I2C_Regs *i2c)
Enables the Peripheral Write Enable (PWREN) register for the I2C.
Definition: dl_i2c.h:1069
Definition: dl_i2c.h:733
Definition: dl_i2c.h:696
__STATIC_INLINE void DL_I2C_disableLoopbackMode(I2C_Regs *i2c)
Disable loopback mode.
Definition: dl_i2c.h:1908
DL_I2C_CONTROLLER_PEC_CHECK_ERROR
Definition: dl_i2c.h:578
Definition: dl_i2c.h:698
__STATIC_INLINE uint32_t DL_I2C_getTransactionLength(const I2C_Regs *i2c)
Get transaction length in bytes.
Definition: dl_i2c.h:1775
__STATIC_INLINE DL_I2C_TARGET_ADDRESSING_MODE DL_I2C_getTargetAddressingMode(const I2C_Regs *i2c)
Get target addressing mode.
Definition: dl_i2c.h:2360
Definition: dl_i2c.h:684
DL_I2C_CONTROLLER_DIRECTION
Definition: dl_i2c.h:550
__STATIC_INLINE void DL_I2C_enableLoopbackMode(I2C_Regs *i2c)
Enable loopback mode.
Definition: dl_i2c.h:1933
Configuration struct for DL_I2C_setClockConfig.
Definition: dl_i2c.h:755
__STATIC_INLINE uint32_t DL_I2C_getTargetStatus(const I2C_Regs *i2c)
Get status of I2C bus controller for target.
Definition: dl_i2c.h:2991
__STATIC_INLINE void DL_I2C_enableGlitchFilterChaining(I2C_Regs *i2c)
Enable analog and digitial glitch filter chaining.
Definition: dl_i2c.h:3893
__STATIC_INLINE uint32_t DL_I2C_getTargetPECCountValue(const I2C_Regs *i2c)
Get the target SMBus/PMBus Packet Error Checking (PEC) count value.
Definition: dl_i2c.h:3246
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOEmpty(const I2C_Regs *i2c)
Checks if target TX FIFO is empty.
Definition: dl_i2c.h:956
__STATIC_INLINE bool DL_I2C_isTargetRXFullOnRXRequestEnabled(const I2C_Regs *i2c)
Checks if target RX full interrupt on receive request is enabled.
Definition: dl_i2c.h:2707
__STATIC_INLINE void DL_I2C_clearInterruptStatus(I2C_Regs *i2c, uint32_t interruptMask)
Clear pending I2C interrupts.
Definition: dl_i2c.h:3659
__STATIC_INLINE void DL_I2C_disableTargetOwnAddressAlternate(I2C_Regs *i2c)
Disable usage of target own address alternate.
Definition: dl_i2c.h:2434
__STATIC_INLINE void DL_I2C_setTargetPECCountValue(I2C_Regs *i2c, uint32_t count)
Set the target SMBus/PMBus Packet Error Checking (PEC) count value.
Definition: dl_i2c.h:3262
__STATIC_INLINE DL_I2C_CONTROLLER_DIRECTION DL_I2C_getControllerDirection(const I2C_Regs *i2c)
Get direction of next controller operation.
Definition: dl_i2c.h:1286
__STATIC_INLINE void DL_I2C_disableControllerACKOverride(I2C_Regs *i2c)
Disable controller ACK override.
Definition: dl_i2c.h:1389
__STATIC_INLINE void DL_I2C_stopFlushTargetRXFIFO(I2C_Regs *i2c)
Stop target RX FIFO flush.
Definition: dl_i2c.h:3436
Definition: dl_i2c.h:720
__STATIC_INLINE void DL_I2C_disableDefaultDeviceAddress(I2C_Regs *i2c)
Disable SMBus/PMBus default device address of 110 0001b.
Definition: dl_i2c.h:2832
Definition: dl_i2c.h:727
Definition: dl_i2c.h:626
__STATIC_INLINE bool DL_I2C_isLoopbackModeEnabled(const I2C_Regs *i2c)
Checks if loopback mode is enabled.
Definition: dl_i2c.h:1923
__STATIC_INLINE uint32_t DL_I2C_getTargetAddressMatch(const I2C_Regs *i2c)
Get the address for which address match happened.
Definition: dl_i2c.h:2476
__STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutACounter(const I2C_Regs *i2c)
Get the current Timer Counter A value.
Definition: dl_i2c.h:3981
__STATIC_INLINE void DL_I2C_startFlushTargetTXFIFO(I2C_Regs *i2c)
Start target TX FIFO flush.
Definition: dl_i2c.h:3423
__STATIC_INLINE DL_I2C_IIDX DL_I2C_getPendingInterrupt(const I2C_Regs *i2c)
Get highest priority pending I2C interrupt.
Definition: dl_i2c.h:3646
__STATIC_INLINE bool DL_I2C_isGlitchFilterChainingEnabled(const I2C_Regs *i2c)
Checks if analog and digital glitch filter chaining is enabled.
Definition: dl_i2c.h:3880
Definition: dl_i2c.h:744
Definition: dl_i2c.h:656
__STATIC_INLINE void DL_I2C_setTargetTXFIFOThreshold(I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
Set target TX FIFO threshold level.
Definition: dl_i2c.h:3398
DL_I2C_DMA_IIDX
Definition: dl_i2c.h:438
__STATIC_INLINE void DL_I2C_disableControllerACK(I2C_Regs *i2c)
Disable I2C controller data acknowledge (ACK or NACK)
Definition: dl_i2c.h:1731
__STATIC_INLINE bool DL_I2C_isGeneralCallEnabled(const I2C_Regs *i2c)
Checks if general call address of 000 0000b is enabled.
Definition: dl_i2c.h:2966
__STATIC_INLINE void DL_I2C_enableControllerClockStretching(I2C_Regs *i2c)
Enable controller clock stretching.
Definition: dl_i2c.h:2055
__STATIC_INLINE bool DL_I2C_isControllerACKOverrideEnabled(const I2C_Regs *i2c)
Checks if controller ACK override is enabled.
Definition: dl_i2c.h:1404
void DL_I2C_flushTargetTXFIFO(I2C_Regs *i2c)
Flushes/removes all elements in the target TX FIFO.
Definition: dl_i2c.h:735
DL_I2C_CONTROLLER_STOP
Definition: dl_i2c.h:614
__STATIC_INLINE void DL_I2C_disableTargetOwnAddress(I2C_Regs *i2c)
Disable target own address.
Definition: dl_i2c.h:2314
__STATIC_INLINE bool DL_I2C_isStartConditionEnabled(const I2C_Regs *i2c)
Checks if I2C START generation is enabled.
Definition: dl_i2c.h:1672
__STATIC_INLINE bool DL_I2C_isControllerReadOnTXEmptyEnabled(const I2C_Regs *i2c)
Checks if controller read on TX empty is enabled.
Definition: dl_i2c.h:1450
Definition: dl_i2c.h:456
__STATIC_INLINE bool DL_I2C_isDefaultDeviceAddressEnabled(const I2C_Regs *i2c)
Checks SMBus/PMBus default device address of 110 0001b is enabled.
Definition: dl_i2c.h:2848
__STATIC_INLINE void DL_I2C_setTimeoutBCount(I2C_Regs *i2c, uint32_t count)
Set the Timeout Counter B value.
Definition: dl_i2c.h:4015
__STATIC_INLINE void DL_I2C_disableControllerReadOnTXEmpty(I2C_Regs *i2c)
Disable controller read on TX empty.
Definition: dl_i2c.h:1435
DL_I2C_EVENT_ROUTE
Definition: dl_i2c.h:452
__STATIC_INLINE void DL_I2C_disableControllerPEC(I2C_Regs *i2c)
Disable controller SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:1516
__STATIC_INLINE void DL_I2C_enableDMAEvent(I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
Enables I2C interrupt for triggering DMA events.
Definition: dl_i2c.h:3681
Definition: dl_i2c.h:632
__STATIC_INLINE bool DL_I2C_isTargetTXWaitWhenTXFIFOStaleEnabled(const I2C_Regs *i2c)
Checks if target TX transfer waits when stale data in TX FIFO is enabled.
Definition: dl_i2c.h:2656
void DL_I2C_transmitTargetDataBlocking(I2C_Regs *i2c, uint8_t data)
Transmit target data, blocking until transmit request is received. Will wait indefintely until bus is...
__STATIC_INLINE void DL_I2C_enableDefaultDeviceAddress(I2C_Regs *i2c)
Enable SMBus/PMBus default device address of 110 0001b.
Definition: dl_i2c.h:2862
Definition: dl_i2c.h:480
__STATIC_INLINE void DL_I2C_enableControllerPEC(I2C_Regs *i2c)
Enable controller SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:1553
__STATIC_INLINE void DL_I2C_disableStopCondition(I2C_Regs *i2c)
Disable I2C STOP generation.
Definition: dl_i2c.h:1692
Definition: dl_i2c.h:484
__STATIC_INLINE bool DL_I2C_isControllerRXFIFOEmpty(const I2C_Regs *i2c)
Checks if controller RX FIFO is empty.
Definition: dl_i2c.h:851
void DL_I2C_getClockConfig(const I2C_Regs *i2c, DL_I2C_ClockConfig *config)
Get I2C source clock configuration.
__STATIC_INLINE void DL_I2C_setControllerAddressingMode(I2C_Regs *i2c, DL_I2C_CONTROLLER_ADDRESSING_MODE mode)
Set controller addressing mode between 7-bit and 10-bit mode.
Definition: dl_i2c.h:1378
__STATIC_INLINE uint32_t DL_I2C_getControllerStatus(const I2C_Regs *i2c)
Get status of I2C bus controller for controller.
Definition: dl_i2c.h:1803
__STATIC_INLINE void DL_I2C_enableAnalogGlitchFilter(I2C_Regs *i2c)
Enable Analog Glitch Suppression.
Definition: dl_i2c.h:1272
__STATIC_INLINE bool DL_I2C_isControllerClockStretchingEnabled(const I2C_Regs *i2c)
Checks if controller clock stretching is enabled.
Definition: dl_i2c.h:2039
Definition: dl_i2c.h:682
__STATIC_INLINE bool DL_I2C_isTargetPECEnabled(const I2C_Regs *i2c)
Checks if target SMBus/PMBus Packet Error Checking (PEC) is enabled.
Definition: dl_i2c.h:3290
__STATIC_INLINE bool DL_I2C_isAnalogGlitchFilterEnabled(const I2C_Regs *i2c)
Checks if analog glitch suppression is enabled.
Definition: dl_i2c.h:1262
Definition: dl_i2c.h:602
__STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEvents(I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
Check which I2C interrupt for DMA receive events is enabled.
Definition: dl_i2c.h:3743
__STATIC_INLINE bool DL_I2C_isAlertResponseAddressEnabled(const I2C_Regs *i2c)
Checks if SMBus/PMBus Alert response address (ARA) of 000 1100b is enabled.
Definition: dl_i2c.h:2802
__STATIC_INLINE void DL_I2C_transmitControllerData(I2C_Regs *i2c, uint8_t data)
Set next byte to be transferred during the next transaction.
Definition: dl_i2c.h:1848
__STATIC_INLINE void DL_I2C_setAnalogGlitchFilterPulseWidth(I2C_Regs *i2c, DL_I2C_ANALOG_GLITCH_FILTER_WIDTH filterWidth)
Set Analog Glitch Suppression Pulse Width.
Definition: dl_i2c.h:1198
__STATIC_INLINE bool DL_I2C_isControllerEnabled(const I2C_Regs *i2c)
Checks if controller is enabled.
Definition: dl_i2c.h:1997
__STATIC_INLINE void DL_I2C_disableTarget(I2C_Regs *i2c)
Disable target functionality.
Definition: dl_i2c.h:2915
__STATIC_INLINE void DL_I2C_disableAnalogGlitchFilter(I2C_Regs *i2c)
Disable Analog Glitch Suppression.
Definition: dl_i2c.h:1247
__STATIC_INLINE void DL_I2C_clearDMAEvent(I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
Clear pending SPI interrupts for DMA events.
Definition: dl_i2c.h:3842
__STATIC_INLINE void DL_I2C_enableControllerACK(I2C_Regs *i2c)
Enable I2C controller data acknowledge (ACK or NACK)
Definition: dl_i2c.h:1761
__STATIC_INLINE void DL_I2C_disableControllerClockStretching(I2C_Regs *i2c)
Disable controller clock stretching.
Definition: dl_i2c.h:2024
bool DL_I2C_receiveTargetDataCheck(const I2C_Regs *i2c, uint8_t *buffer)
Receive target data.
__STATIC_INLINE void DL_I2C_enableInterrupt(I2C_Regs *i2c, uint32_t interruptMask)
Enable I2C interrupts.
Definition: dl_i2c.h:3552
Definition: dl_i2c.h:642
__STATIC_INLINE void DL_I2C_enableACKOverrideOnPECNext(I2C_Regs *i2c)
Enable target ACK override when SMBus/PMBus PEC is next byte.
Definition: dl_i2c.h:3189
__STATIC_INLINE bool DL_I2C_isControllerPECEnabled(const I2C_Regs *i2c)
Checks if controller SMBus/PMBus Packet Error Checking (PEC) is enabled.
Definition: dl_i2c.h:1532
__STATIC_INLINE bool DL_I2C_isTargetTXEmptyOnTXRequestEnabled(const I2C_Regs *i2c)
Checks if target TX empty interrupt on transmit request is enabled.
Definition: dl_i2c.h:2557
Definition: dl_i2c.h:722
__STATIC_INLINE void DL_I2C_enableTargetWakeup(I2C_Regs *i2c)
Enable target wakeup.
Definition: dl_i2c.h:2905
__STATIC_INLINE void DL_I2C_disableTimeoutA(I2C_Regs *i2c)
Disable Timeout Counter A.
Definition: dl_i2c.h:3938
__STATIC_INLINE void DL_I2C_selectClockSource(I2C_Regs *i2c, DL_I2C_CLOCK clockSource)
Set Clock Source.
Definition: dl_i2c.h:1148
Definition: dl_i2c.h:569
__STATIC_INLINE bool DL_I2C_isTargetACKOverrideEnabled(const I2C_Regs *i2c)
Checks if target ACK override is enabled.
Definition: dl_i2c.h:3047
Definition: dl_i2c.h:618
__STATIC_INLINE void DL_I2C_enableTargetPEC(I2C_Regs *i2c)
Enable target SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:3310
__STATIC_INLINE void DL_I2C_enableTargetACKOverride(I2C_Regs *i2c)
Enable target ACK override.
Definition: dl_i2c.h:3064
Definition: dl_i2c.h:464
__STATIC_INLINE void DL_I2C_enableTargetRXFullOnRXRequest(I2C_Regs *i2c)
Enable target RX full interrupt on receive request.
Definition: dl_i2c.h:2725
__STATIC_INLINE void DL_I2C_enableTargetTXTriggerInTXMode(I2C_Regs *i2c)
Enable TX trigger when target is in TX mode.
Definition: dl_i2c.h:2624
__STATIC_INLINE void DL_I2C_setTargetOwnAddress(I2C_Regs *i2c, uint32_t addr)
Set target own address.
Definition: dl_i2c.h:2274
Definition: dl_i2c.h:638
__STATIC_INLINE void DL_I2C_startControllerTransfer(I2C_Regs *i2c, uint32_t targetAddr, DL_I2C_CONTROLLER_DIRECTION direction, uint16_t length)
Sets up a transfer from I2C controller.
Definition: dl_i2c.h:882
__STATIC_INLINE void DL_I2C_enableTargetOwnAddressAlternate(I2C_Regs *i2c)
Enable usage of target own address alternate.
Definition: dl_i2c.h:2461
__STATIC_INLINE bool DL_I2C_isTimeoutAEnabled(const I2C_Regs *i2c)
Checks if Timeout Counter A is enabled.
Definition: dl_i2c.h:3953
DL_I2C_TX_FIFO_LEVEL
Definition: dl_i2c.h:630
Definition: dl_i2c.h:694
__STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternate(const I2C_Regs *i2c)
Get target own address alternate.
Definition: dl_i2c.h:2376
__STATIC_INLINE void DL_I2C_setControllerRXFIFOThreshold(I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
Set controller RX FIFO threshold level.
Definition: dl_i2c.h:2172
Definition: dl_i2c.h:718
DL_I2C_CLOCK clockSel
Definition: dl_i2c.h:757
Definition: dl_i2c.h:552
__STATIC_INLINE bool DL_I2C_isTargetWakeupEnabled(const I2C_Regs *i2c)
Checks if target wakeup is enabled.
Definition: dl_i2c.h:2890
__STATIC_INLINE uint32_t DL_I2C_getControllerRXFIFOCounter(const I2C_Regs *i2c)
Get number of bytes which can be read from RX FIFO.
Definition: dl_i2c.h:2211
Definition: dl_i2c.h:711
__STATIC_INLINE void DL_I2C_enableControllerBurst(I2C_Regs *i2c)
Enable I2C controller burst mode.
Definition: dl_i2c.h:1647
__STATIC_INLINE bool DL_I2C_isControllerACKEnabled(const I2C_Regs *i2c)
Checks if I2C controller data acknowledge (ACK or NACK) is enabled.
Definition: dl_i2c.h:1747
DL_I2C_TARGET_ADDRESSING_MODE
Definition: dl_i2c.h:488
__STATIC_INLINE void DL_I2C_enableStopCondition(I2C_Regs *i2c)
Enable I2C STOP generation.
Definition: dl_i2c.h:1717
__STATIC_INLINE void DL_I2C_disableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
Disable target TX empty interrupt on transmit request.
Definition: dl_i2c.h:2541
__STATIC_INLINE bool DL_I2C_isStopConditionEnabled(const I2C_Regs *i2c)
Checks if I2C STOP generation is enabled.
Definition: dl_i2c.h:1707
__STATIC_INLINE void DL_I2C_disableTargetRXFullOnRXRequest(I2C_Regs *i2c)
Disable target RX full interrupt on receive request.
Definition: dl_i2c.h:2692
__STATIC_INLINE bool DL_I2C_isControllerTXFIFOFlushActive(const I2C_Regs *i2c)
Checks if controller TX FIFO flush is active.
Definition: dl_i2c.h:2257
Definition: dl_i2c.h:636
__STATIC_INLINE void DL_I2C_disableTargetACKOverride(I2C_Regs *i2c)
Disable target ACK override.
Definition: dl_i2c.h:3032
Definition: dl_i2c.h:634
DL_I2C_IIDX
Definition: dl_i2c.h:678
DL_I2C_TARGET_PEC_CHECK_ERROR
Definition: dl_i2c.h:507
__STATIC_INLINE bool DL_I2C_isReset(const I2C_Regs *i2c)
Returns if i2c peripheral was reset.
Definition: dl_i2c.h:1132
Definition: dl_i2c.h:616
Definition: dl_i2c.h:478
__STATIC_INLINE bool DL_I2C_isPowerEnabled(const I2C_Regs *i2c)
Returns if the Peripheral Write Enable (PWREN) register for the I2C is enabled.
Definition: dl_i2c.h:1105
__STATIC_INLINE DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE DL_I2C_getTargetACKOverrideValue(const I2C_Regs *i2c)
Get target acknowledge override value.
Definition: dl_i2c.h:3082
uint16_t DL_I2C_fillControllerTXFIFO(I2C_Regs *i2c, const uint8_t *buffer, uint16_t count)
Fills the controller TX FIFO with data.
__STATIC_INLINE void DL_I2C_startFlushTargetRXFIFO(I2C_Regs *i2c)
Start target RX FIFO flush.
Definition: dl_i2c.h:3446
__STATIC_INLINE uint32_t DL_I2C_getRawInterruptStatus(const I2C_Regs *i2c, uint32_t interruptMask)
Check interrupt flag of any I2C interrupt.
Definition: dl_i2c.h:3628
__STATIC_INLINE void DL_I2C_disableTargetPEC(I2C_Regs *i2c)
Disable target SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:3274
Definition: dl_i2c.h:514
__STATIC_INLINE void DL_I2C_disableAlertResponseAddress(I2C_Regs *i2c)
Disable SMBus/PMBus Alert response address (ARA) of 000 1100b.
Definition: dl_i2c.h:2786
© Copyright 1995-2025, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale