MSPM0C110X Driver Library  2.05.00.05
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 
430 /* clang-format on */
431 
433 typedef enum {
435  DL_I2C_DMA_IIDX_TARGET_TXFIFO_TRIGGER = I2C_DMA_TRIG1_IIDX_STAT_MTXFIFOTRG,
437  DL_I2C_DMA_IIDX_TARGET_RXFIFO_TRIGGER = I2C_DMA_TRIG1_IIDX_STAT_MRXFIFOTRG,
440  I2C_DMA_TRIG1_IIDX_STAT_STXFIFOTRG,
443  I2C_DMA_TRIG1_IIDX_STAT_SRXFIFOTRG
445 
447 typedef enum {
453 
455 typedef enum {
457  DL_I2C_CLOCK_BUSCLK = I2C_CLKSEL_BUSCLK_SEL_ENABLE,
459  DL_I2C_CLOCK_MFCLK = I2C_CLKSEL_MFCLK_SEL_ENABLE,
460 } DL_I2C_CLOCK;
461 
463 typedef enum {
465  DL_I2C_CLOCK_DIVIDE_1 = I2C_CLKDIV_RATIO_DIV_BY_1,
467  DL_I2C_CLOCK_DIVIDE_2 = I2C_CLKDIV_RATIO_DIV_BY_2,
469  DL_I2C_CLOCK_DIVIDE_3 = I2C_CLKDIV_RATIO_DIV_BY_3,
471  DL_I2C_CLOCK_DIVIDE_4 = I2C_CLKDIV_RATIO_DIV_BY_4,
473  DL_I2C_CLOCK_DIVIDE_5 = I2C_CLKDIV_RATIO_DIV_BY_5,
475  DL_I2C_CLOCK_DIVIDE_6 = I2C_CLKDIV_RATIO_DIV_BY_6,
477  DL_I2C_CLOCK_DIVIDE_7 = I2C_CLKDIV_RATIO_DIV_BY_7,
479  DL_I2C_CLOCK_DIVIDE_8 = I2C_CLKDIV_RATIO_DIV_BY_8,
481 
483 typedef enum {
485  DL_I2C_TARGET_ADDRESSING_MODE_7_BIT = I2C_SOAR_SMODE_MODE7,
487  DL_I2C_TARGET_ADDRESSING_MODE_10_BIT = I2C_SOAR_SMODE_MODE10,
489 
491 typedef enum {
494  DL_I2C_TARGET_PEC_STATUS_CHECKED = I2C_TARGET_PECSR_PECSTS_CHECK_SET,
498  I2C_TARGET_PECSR_PECSTS_CHECK_CLEARED,
500 
502 typedef enum {
506  I2C_TARGET_PECSR_PECSTS_ERROR_CLEARED,
509  DL_I2C_TARGET_PEC_CHECK_ERROR_SET = I2C_TARGET_PECSR_PECSTS_ERROR_SET,
511 
513 typedef enum {
515  DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_5NS = I2C_GFCTL_AGFSEL_AGLIT_5,
517  DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_10NS = I2C_GFCTL_AGFSEL_AGLIT_10,
519  DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_25NS = I2C_GFCTL_AGFSEL_AGLIT_25,
521  DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_50NS = I2C_GFCTL_AGFSEL_AGLIT_50,
523 
525 typedef enum {
527  DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_DISABLED = I2C_GFCTL_DGFSEL_DISABLED,
543 
545 typedef enum {
547  DL_I2C_CONTROLLER_DIRECTION_TX = I2C_MSA_DIR_TRANSMIT,
549  DL_I2C_CONTROLLER_DIRECTION_RX = I2C_MSA_DIR_RECEIVE,
551 
553 typedef enum {
559 
561 typedef enum {
565  I2C_CONTROLLER_PECSR_PECSTS_CHECK_SET,
569  I2C_CONTROLLER_PECSR_PECSTS_CHECK_CLEARED,
571 
573 typedef enum {
577  I2C_CONTROLLER_PECSR_PECSTS_ERROR_SET,
581  I2C_CONTROLLER_PECSR_PECSTS_ERROR_CLEARED,
583 
585 typedef enum {
587  DL_I2C_CONTROLLER_SCL_HIGH = I2C_MBMON_SCL_SET,
589  DL_I2C_CONTROLLER_SCL_LOW = I2C_MBMON_SCL_CLEARED,
591 
593 typedef enum {
595  DL_I2C_CONTROLLER_SDA_HIGH = I2C_MBMON_SDA_SET,
597  DL_I2C_CONTROLLER_SDA_LOW = I2C_MBMON_SDA_CLEARED,
599 
601 typedef enum {
603  DL_I2C_CONTROLLER_START_ENABLE = I2C_MCTR_START_ENABLE,
605  DL_I2C_CONTROLLER_START_DISABLE = I2C_MCTR_START_DISABLE,
607 
609 typedef enum {
611  DL_I2C_CONTROLLER_STOP_ENABLE = I2C_MCTR_STOP_ENABLE,
613  DL_I2C_CONTROLLER_STOP_DISABLE = I2C_MCTR_STOP_DISABLE,
615 
617 typedef enum {
619  DL_I2C_CONTROLLER_ACK_ENABLE = I2C_MCTR_ACK_ENABLE,
621  DL_I2C_CONTROLLER_ACK_DISABLE = I2C_MCTR_ACK_DISABLE,
623 
625 typedef enum {
627  DL_I2C_TX_FIFO_LEVEL_EMPTY = I2C_MFIFOCTL_TXTRIG_EMPTY,
629  DL_I2C_TX_FIFO_LEVEL_BYTES_1 = I2C_MFIFOCTL_TXTRIG_LEVEL_1,
631  DL_I2C_TX_FIFO_LEVEL_BYTES_2 = I2C_MFIFOCTL_TXTRIG_LEVEL_2,
633  DL_I2C_TX_FIFO_LEVEL_BYTES_3 = I2C_MFIFOCTL_TXTRIG_LEVEL_3,
635  DL_I2C_TX_FIFO_LEVEL_BYTES_4 = I2C_MFIFOCTL_TXTRIG_LEVEL_4,
637  DL_I2C_TX_FIFO_LEVEL_BYTES_5 = I2C_MFIFOCTL_TXTRIG_LEVEL_5,
639  DL_I2C_TX_FIFO_LEVEL_BYTES_6 = I2C_MFIFOCTL_TXTRIG_LEVEL_6,
641  DL_I2C_TX_FIFO_LEVEL_BYTES_7 = I2C_MFIFOCTL_TXTRIG_LEVEL_7,
643 
645 typedef enum {
647  DL_I2C_RX_FIFO_LEVEL_BYTES_1 = I2C_MFIFOCTL_RXTRIG_LEVEL_1,
649  DL_I2C_RX_FIFO_LEVEL_BYTES_2 = I2C_MFIFOCTL_RXTRIG_LEVEL_2,
651  DL_I2C_RX_FIFO_LEVEL_BYTES_3 = I2C_MFIFOCTL_RXTRIG_LEVEL_3,
653  DL_I2C_RX_FIFO_LEVEL_BYTES_4 = I2C_MFIFOCTL_RXTRIG_LEVEL_4,
655  DL_I2C_RX_FIFO_LEVEL_BYTES_5 = I2C_MFIFOCTL_RXTRIG_LEVEL_5,
657  DL_I2C_RX_FIFO_LEVEL_BYTES_6 = I2C_MFIFOCTL_RXTRIG_LEVEL_6,
659  DL_I2C_RX_FIFO_LEVEL_BYTES_7 = I2C_MFIFOCTL_RXTRIG_LEVEL_7,
661  DL_I2C_RX_FIFO_LEVEL_BYTES_8 = I2C_MFIFOCTL_RXTRIG_LEVEL_8,
663 
665 typedef enum {
667  DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE_ACK = I2C_SACKCTL_ACKOVAL_DISABLE,
669  DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE_NACK = I2C_SACKCTL_ACKOVAL_ENABLE,
671 
673 typedef enum {
675  DL_I2C_IIDX_NO_INT = I2C_CPU_INT_IIDX_STAT_NO_INTR,
677  DL_I2C_IIDX_CONTROLLER_RX_DONE = I2C_CPU_INT_IIDX_STAT_MRXDONEFG,
679  DL_I2C_IIDX_CONTROLLER_TX_DONE = I2C_CPU_INT_IIDX_STAT_MTXDONEFG,
681  DL_I2C_IIDX_CONTROLLER_RXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_MRXFIFOTRG,
683  DL_I2C_IIDX_CONTROLLER_TXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_MTXFIFOTRG,
685  DL_I2C_IIDX_CONTROLLER_RXFIFO_FULL = I2C_CPU_INT_IIDX_STAT_MRXFIFOFULL,
687  DL_I2C_IIDX_CONTROLLER_TXFIFO_EMPTY = I2C_CPU_INT_IIDX_STAT_MTX_EMPTY,
689  DL_I2C_IIDX_CONTROLLER_NACK = I2C_CPU_INT_IIDX_STAT_MNACKFG,
691  DL_I2C_IIDX_CONTROLLER_START = I2C_CPU_INT_IIDX_STAT_MSTARTFG,
693  DL_I2C_IIDX_CONTROLLER_STOP = I2C_CPU_INT_IIDX_STAT_MSTOPFG,
695  DL_I2C_IIDX_CONTROLLER_ARBITRATION_LOST = I2C_CPU_INT_IIDX_STAT_MARBLOSTFG,
698  I2C_CPU_INT_IIDX_STAT_MDMA_DONE_TX,
701  I2C_CPU_INT_IIDX_STAT_MDMA_DONE_RX,
702 
704  DL_I2C_IIDX_CONTROLLER_PEC_RX_ERROR = I2C_CPU_INT_IIDX_STAT_MPEC_RX_ERR,
706  DL_I2C_IIDX_TIMEOUT_A = I2C_CPU_INT_IIDX_STAT_TIMEOUTA,
708  DL_I2C_IIDX_TIMEOUT_B = I2C_CPU_INT_IIDX_STAT_TIMEOUTB,
709 
711  DL_I2C_IIDX_TARGET_RX_DONE = I2C_CPU_INT_IIDX_STAT_SRXDONEFG,
713  DL_I2C_IIDX_TARGET_TX_DONE = I2C_CPU_INT_IIDX_STAT_STXDONEFG,
715  DL_I2C_IIDX_TARGET_RXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_SRXFIFOTRG,
717  DL_I2C_IIDX_TARGET_TXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_STXFIFOTRG,
719  DL_I2C_IIDX_TARGET_RXFIFO_FULL = I2C_CPU_INT_IIDX_STAT_SRXFIFOFULL,
722  DL_I2C_IIDX_TARGET_TXFIFO_EMPTY = I2C_CPU_INT_IIDX_STAT_STXEMPTY,
724  DL_I2C_IIDX_TARGET_START = I2C_CPU_INT_IIDX_STAT_SSTARTFG,
726  DL_I2C_IIDX_TARGET_STOP = I2C_CPU_INT_IIDX_STAT_SSTOPFG,
728  DL_I2C_IIDX_TARGET_GENERAL_CALL = I2C_CPU_INT_IIDX_STAT_SGENCALL,
730  DL_I2C_IIDX_TARGET_EVENT1_DMA_DONE = I2C_CPU_INT_IIDX_STAT_SDMA_DONE_TX,
732  DL_I2C_IIDX_TARGET_EVENT2_DMA_DONE = I2C_CPU_INT_IIDX_STAT_SDMA_DONE_RX,
733 
735  DL_I2C_IIDX_TARGET_PEC_RX_ERROR = I2C_CPU_INT_IIDX_STAT_SPEC_RX_ERR,
737  DL_I2C_IIDX_TARGET_TXFIFO_UNDERFLOW = I2C_CPU_INT_IIDX_STAT_STX_UNFL,
739  DL_I2C_IIDX_TARGET_RXFIFO_OVERFLOW = I2C_CPU_INT_IIDX_STAT_SRX_OVFL,
741  DL_I2C_IIDX_TARGET_ARBITRATION_LOST = I2C_CPU_INT_IIDX_STAT_SARBLOST,
743  DL_I2C_IIDX_INTERRUPT_OVERFLOW = I2C_CPU_INT_IIDX_STAT_INTR_OVFL,
744 
745 } DL_I2C_IIDX;
746 
750 typedef struct {
752  DL_I2C_CLOCK clockSel;
754  DL_I2C_CLOCK_DIVIDE divideRatio;
756 
765 void DL_I2C_setClockConfig(I2C_Regs *i2c, const DL_I2C_ClockConfig *config);
766 
775 void DL_I2C_getClockConfig(const I2C_Regs *i2c, DL_I2C_ClockConfig *config);
776 
787  I2C_Regs *i2c, const uint8_t *buffer, uint16_t count);
788 
794 void DL_I2C_flushControllerTXFIFO(I2C_Regs *i2c);
795 
801 void DL_I2C_flushControllerRXFIFO(I2C_Regs *i2c);
802 
813 __STATIC_INLINE bool DL_I2C_isControllerTXFIFOFull(const I2C_Regs *i2c)
814 {
815  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) ==
816  I2C_MFIFOSR_TXFIFOCNT_MINIMUM);
817 }
818 
829 __STATIC_INLINE bool DL_I2C_isControllerTXFIFOEmpty(const I2C_Regs *i2c)
830 {
831  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) ==
833 }
834 
845 __STATIC_INLINE bool DL_I2C_isControllerRXFIFOEmpty(const I2C_Regs *i2c)
846 {
847  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFIFOCNT_MASK) ==
848  I2C_MFIFOSR_RXFIFOCNT_MINIMUM);
849 }
850 
858 __STATIC_INLINE void DL_I2C_resetControllerTransfer(I2C_Regs *i2c)
859 {
860  // Resets all Controller functionality
861  i2c->MASTER.MCTR = 0x00;
862 }
863 
875 __STATIC_INLINE void DL_I2C_startControllerTransfer(I2C_Regs *i2c,
876  uint32_t targetAddr, DL_I2C_CONTROLLER_DIRECTION direction,
877  uint16_t length)
878 {
879  // Specify target address and read/write mode
880  DL_Common_updateReg(&i2c->MASTER.MSA,
881  ((targetAddr << I2C_MSA_SADDR_OFS) | (uint32_t) direction),
882  (I2C_MSA_SADDR_MASK | I2C_MSA_DIR_MASK));
883 
884  // STOP bit is generated after burst length number of bytes transferred
885  DL_Common_updateReg(&i2c->MASTER.MCTR,
886  (((uint32_t) length << I2C_MCTR_MBLEN_OFS) | I2C_MCTR_BURSTRUN_ENABLE |
887  I2C_MCTR_START_ENABLE | I2C_MCTR_STOP_ENABLE),
888  (I2C_MCTR_MBLEN_MASK | I2C_MCTR_BURSTRUN_MASK | I2C_MCTR_START_MASK |
889  I2C_MCTR_STOP_MASK));
890 }
891 
906 __STATIC_INLINE void DL_I2C_startControllerTransferAdvanced(I2C_Regs *i2c,
907  uint32_t targetAddr, DL_I2C_CONTROLLER_DIRECTION direction,
908  uint16_t length, DL_I2C_CONTROLLER_START start,
909  DL_I2C_CONTROLLER_STOP stop, DL_I2C_CONTROLLER_ACK ack)
910 {
911  // Specify target address and read/write mode
912  DL_Common_updateReg(&i2c->MASTER.MSA,
913  ((targetAddr << I2C_MSA_SADDR_OFS) | (uint32_t) direction),
914  (I2C_MSA_SADDR_MASK | I2C_MSA_DIR_MASK));
915 
916  DL_Common_updateReg(&i2c->MASTER.MCTR,
917  (((uint32_t) length << I2C_MCTR_MBLEN_OFS) | I2C_MCTR_BURSTRUN_ENABLE |
918  (uint32_t) start | (uint32_t) stop | (uint32_t) ack),
919  (I2C_MCTR_MBLEN_MASK | I2C_MCTR_BURSTRUN_MASK | I2C_MCTR_START_MASK |
920  I2C_MCTR_STOP_MASK | I2C_MCTR_ACK_MASK));
921 }
922 
933 __STATIC_INLINE bool DL_I2C_isTargetTXFIFOFull(const I2C_Regs *i2c)
934 {
935  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) ==
936  I2C_SFIFOSR_TXFIFOCNT_MINIMUM);
937 }
938 
949 __STATIC_INLINE bool DL_I2C_isTargetTXFIFOEmpty(const I2C_Regs *i2c)
950 {
951  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) ==
953 }
954 
965 __STATIC_INLINE bool DL_I2C_isTargetRXFIFOEmpty(const I2C_Regs *i2c)
966 {
967  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFIFOCNT_MASK) ==
968  I2C_SFIFOSR_RXFIFOCNT_MINIMUM);
969 }
970 
981  I2C_Regs *i2c, const uint8_t *buffer, uint8_t count);
982 
988 void DL_I2C_flushTargetTXFIFO(I2C_Regs *i2c);
989 
995 void DL_I2C_flushTargetRXFIFO(I2C_Regs *i2c);
996 
1006 void DL_I2C_transmitTargetDataBlocking(I2C_Regs *i2c, uint8_t data);
1007 
1021 bool DL_I2C_transmitTargetDataCheck(I2C_Regs *i2c, uint8_t data);
1022 
1033 uint8_t DL_I2C_receiveTargetDataBlocking(const I2C_Regs *i2c);
1034 
1048 bool DL_I2C_receiveTargetDataCheck(const I2C_Regs *i2c, uint8_t *buffer);
1049 
1059 __STATIC_INLINE void DL_I2C_enablePower(I2C_Regs *i2c)
1060 {
1061  i2c->GPRCM.PWREN = (I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_ENABLE);
1062 }
1063 
1074 __STATIC_INLINE void DL_I2C_disablePower(I2C_Regs *i2c)
1075 {
1076  i2c->GPRCM.PWREN = (I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_DISABLE);
1077 }
1078 
1095 __STATIC_INLINE bool DL_I2C_isPowerEnabled(const I2C_Regs *i2c)
1096 {
1097  return (
1098  (i2c->GPRCM.PWREN & I2C_PWREN_ENABLE_MASK) == I2C_PWREN_ENABLE_ENABLE);
1099 }
1100 
1106 __STATIC_INLINE void DL_I2C_reset(I2C_Regs *i2c)
1107 {
1108  i2c->GPRCM.RSTCTL =
1109  (I2C_RSTCTL_KEY_UNLOCK_W | I2C_RSTCTL_RESETSTKYCLR_CLR |
1110  I2C_RSTCTL_RESETASSERT_ASSERT);
1111 }
1112 
1122 __STATIC_INLINE bool DL_I2C_isReset(const I2C_Regs *i2c)
1123 {
1124  return ((i2c->GPRCM.STAT & I2C_STAT_RESETSTKY_MASK) ==
1125  I2C_STAT_RESETSTKY_RESET);
1126 }
1127 
1138 __STATIC_INLINE void DL_I2C_selectClockSource(
1139  I2C_Regs *i2c, DL_I2C_CLOCK clockSource)
1140 {
1141  DL_Common_updateReg(&i2c->CLKSEL, (uint32_t) clockSource,
1142  I2C_CLKSEL_BUSCLK_SEL_MASK | I2C_CLKSEL_MFCLK_SEL_MASK);
1143 }
1144 
1153 __STATIC_INLINE void DL_I2C_selectClockDivider(
1154  I2C_Regs *i2c, DL_I2C_CLOCK_DIVIDE clockDivider)
1155 {
1157  &i2c->CLKDIV, (uint32_t) clockDivider, I2C_CLKDIV_RATIO_MASK);
1158 }
1159 
1171 __STATIC_INLINE DL_I2C_ANALOG_GLITCH_FILTER_WIDTH
1173 {
1174  uint32_t filterWidth = i2c->GFCTL & I2C_GFCTL_AGFSEL_MASK;
1175 
1176  return (DL_I2C_ANALOG_GLITCH_FILTER_WIDTH)(filterWidth);
1177 }
1178 
1189  I2C_Regs *i2c, DL_I2C_ANALOG_GLITCH_FILTER_WIDTH filterWidth)
1190 {
1192  &i2c->GFCTL, (uint32_t) filterWidth, I2C_GFCTL_AGFSEL_MASK);
1193 }
1194 
1207 __STATIC_INLINE DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH
1209 {
1210  uint32_t filterWidth = i2c->GFCTL & I2C_GFCTL_DGFSEL_MASK;
1211 
1212  return (DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH)(filterWidth);
1213 }
1214 
1226  I2C_Regs *i2c, DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH filterWidth)
1227 {
1229  &i2c->GFCTL, (uint32_t) filterWidth, I2C_GFCTL_DGFSEL_MASK);
1230 }
1231 
1237 __STATIC_INLINE void DL_I2C_disableAnalogGlitchFilter(I2C_Regs *i2c)
1238 {
1239  i2c->GFCTL &= ~(I2C_GFCTL_AGFEN_MASK);
1240 }
1241 
1252 __STATIC_INLINE bool DL_I2C_isAnalogGlitchFilterEnabled(const I2C_Regs *i2c)
1253 {
1254  return ((i2c->GFCTL & I2C_GFCTL_AGFEN_MASK) == I2C_GFCTL_AGFEN_ENABLE);
1255 }
1256 
1262 __STATIC_INLINE void DL_I2C_enableAnalogGlitchFilter(I2C_Regs *i2c)
1263 {
1264  i2c->GFCTL |= I2C_GFCTL_AGFEN_ENABLE;
1265 }
1266 
1276 __STATIC_INLINE DL_I2C_CONTROLLER_DIRECTION DL_I2C_getControllerDirection(
1277  const I2C_Regs *i2c)
1278 {
1279  uint32_t direction = i2c->MASTER.MSA & I2C_MSA_DIR_MASK;
1280 
1281  return (DL_I2C_CONTROLLER_DIRECTION)(direction);
1282 }
1283 
1292 __STATIC_INLINE void DL_I2C_setControllerDirection(
1293  I2C_Regs *i2c, DL_I2C_CONTROLLER_DIRECTION direction)
1294 {
1296  &i2c->MASTER.MSA, (uint32_t) direction, I2C_MSA_DIR_MASK);
1297 }
1298 
1315 __STATIC_INLINE uint32_t DL_I2C_getTargetAddress(const I2C_Regs *i2c)
1316 {
1317  return ((i2c->MASTER.MSA & I2C_MSA_SADDR_MASK) >> I2C_MSA_SADDR_OFS);
1318 }
1319 
1333 __STATIC_INLINE void DL_I2C_setTargetAddress(
1334  I2C_Regs *i2c, uint32_t targetAddress)
1335 {
1336  DL_Common_updateReg(&i2c->MASTER.MSA, (targetAddress << I2C_MSA_SADDR_OFS),
1337  I2C_MSA_SADDR_MASK);
1338 }
1339 
1350 __STATIC_INLINE DL_I2C_CONTROLLER_ADDRESSING_MODE
1352 {
1353  uint32_t mode = i2c->MASTER.MSA & I2C_MSA_MMODE_MASK;
1354 
1355  return (DL_I2C_CONTROLLER_ADDRESSING_MODE)(mode);
1356 }
1357 
1369  I2C_Regs *i2c, DL_I2C_CONTROLLER_ADDRESSING_MODE mode)
1370 {
1371  DL_Common_updateReg(&i2c->MASTER.MSA, (uint32_t) mode, I2C_MSA_MMODE_MASK);
1372 }
1373 
1379 __STATIC_INLINE void DL_I2C_disableControllerACKOverride(I2C_Regs *i2c)
1380 {
1381  i2c->MASTER.MCTR &= ~(I2C_MCTR_MACKOEN_MASK);
1382 }
1383 
1394 __STATIC_INLINE bool DL_I2C_isControllerACKOverrideEnabled(const I2C_Regs *i2c)
1395 {
1396  return (
1397  (i2c->MASTER.MCTR & I2C_MCTR_MACKOEN_MASK) == I2C_MCTR_MACKOEN_ENABLE);
1398 }
1399 
1415 __STATIC_INLINE void DL_I2C_enableControllerACKOverride(I2C_Regs *i2c)
1416 {
1417  i2c->MASTER.MCTR |= I2C_MCTR_MACKOEN_ENABLE;
1418 }
1419 
1425 __STATIC_INLINE void DL_I2C_disableControllerReadOnTXEmpty(I2C_Regs *i2c)
1426 {
1427  i2c->MASTER.MCTR &= ~(I2C_MCTR_RD_ON_TXEMPTY_MASK);
1428 }
1429 
1441  const I2C_Regs *i2c)
1442 {
1443  return ((i2c->MASTER.MCTR & I2C_MCTR_RD_ON_TXEMPTY_MASK) ==
1444  I2C_MCTR_RD_ON_TXEMPTY_ENABLE);
1445 }
1446 
1464 __STATIC_INLINE void DL_I2C_enableControllerReadOnTXEmpty(I2C_Regs *i2c)
1465 {
1466  i2c->MASTER.MCTR |= I2C_MCTR_RD_ON_TXEMPTY_ENABLE;
1467 }
1468 
1478 __STATIC_INLINE uint32_t DL_I2C_getControllerPECCountValue(const I2C_Regs *i2c)
1479 {
1480  return (i2c->MASTER.CONTROLLER_I2CPECCTL &
1481  I2C_CONTROLLER_I2CPECCTL_PECCNT_MASK);
1482 }
1483 
1495  I2C_Regs *i2c, uint32_t count)
1496 {
1497  DL_Common_updateReg(&i2c->MASTER.CONTROLLER_I2CPECCTL, count,
1498  I2C_CONTROLLER_I2CPECCTL_PECCNT_MASK);
1499 }
1500 
1506 __STATIC_INLINE void DL_I2C_disableControllerPEC(I2C_Regs *i2c)
1507 {
1508  i2c->MASTER.CONTROLLER_I2CPECCTL &= ~(I2C_CONTROLLER_I2CPECCTL_PECEN_MASK);
1509 }
1510 
1522 __STATIC_INLINE bool DL_I2C_isControllerPECEnabled(const I2C_Regs *i2c)
1523 {
1524  return ((i2c->MASTER.CONTROLLER_I2CPECCTL &
1525  I2C_CONTROLLER_I2CPECCTL_PECEN_MASK) ==
1526  I2C_CONTROLLER_I2CPECCTL_PECEN_ENABLE);
1527 }
1528 
1543 __STATIC_INLINE void DL_I2C_enableControllerPEC(I2C_Regs *i2c)
1544 {
1545  i2c->MASTER.CONTROLLER_I2CPECCTL |= I2C_CONTROLLER_I2CPECCTL_PECEN_ENABLE;
1546 }
1547 
1558 __STATIC_INLINE uint32_t DL_I2C_getControllerCurrentPECCount(
1559  const I2C_Regs *i2c)
1560 {
1561  return (
1562  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_CHECK_MASK);
1563 }
1564 
1577 __STATIC_INLINE DL_I2C_CONTROLLER_PEC_STATUS
1579 {
1580  uint32_t status =
1581  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_CHECK_MASK;
1582 
1583  return (DL_I2C_CONTROLLER_PEC_STATUS)(status);
1584 }
1585 
1598 __STATIC_INLINE DL_I2C_CONTROLLER_PEC_CHECK_ERROR
1600 {
1601  uint32_t error =
1602  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_ERROR_MASK;
1603 
1604  return (DL_I2C_CONTROLLER_PEC_CHECK_ERROR)(error);
1605 }
1606 
1612 __STATIC_INLINE void DL_I2C_disableControllerBurst(I2C_Regs *i2c)
1613 {
1614  i2c->MASTER.MCTR &= ~(I2C_MCTR_BURSTRUN_MASK);
1615 }
1616 
1627 __STATIC_INLINE bool DL_I2C_isControllerBurstEnabled(const I2C_Regs *i2c)
1628 {
1629  return ((i2c->GFCTL & I2C_MCTR_BURSTRUN_MASK) == I2C_MCTR_BURSTRUN_ENABLE);
1630 }
1631 
1637 __STATIC_INLINE void DL_I2C_enableControllerBurst(I2C_Regs *i2c)
1638 {
1639  i2c->MASTER.MCTR |= I2C_MCTR_BURSTRUN_ENABLE;
1640 }
1641 
1647 __STATIC_INLINE void DL_I2C_disableStartCondition(I2C_Regs *i2c)
1648 {
1649  i2c->MASTER.MCTR &= ~(I2C_MCTR_START_MASK);
1650 }
1651 
1662 __STATIC_INLINE bool DL_I2C_isStartConditionEnabled(const I2C_Regs *i2c)
1663 {
1664  return ((i2c->MASTER.MCTR & I2C_MCTR_START_MASK) == I2C_MCTR_START_ENABLE);
1665 }
1666 
1672 __STATIC_INLINE void DL_I2C_enableStartCondition(I2C_Regs *i2c)
1673 {
1674  i2c->MASTER.MCTR |= I2C_MCTR_START_ENABLE;
1675 }
1676 
1682 __STATIC_INLINE void DL_I2C_disableStopCondition(I2C_Regs *i2c)
1683 {
1684  i2c->MASTER.MCTR &= ~(I2C_MCTR_STOP_MASK);
1685 }
1686 
1697 __STATIC_INLINE bool DL_I2C_isStopConditionEnabled(const I2C_Regs *i2c)
1698 {
1699  return ((i2c->MASTER.MCTR & I2C_MCTR_STOP_MASK) == I2C_MCTR_STOP_ENABLE);
1700 }
1701 
1707 __STATIC_INLINE void DL_I2C_enableStopCondition(I2C_Regs *i2c)
1708 {
1709  i2c->MASTER.MCTR |= I2C_MCTR_STOP_ENABLE;
1710 }
1711 
1721 __STATIC_INLINE void DL_I2C_disableControllerACK(I2C_Regs *i2c)
1722 {
1723  i2c->MASTER.MCTR &= ~(I2C_MCTR_ACK_MASK);
1724 }
1725 
1737 __STATIC_INLINE bool DL_I2C_isControllerACKEnabled(const I2C_Regs *i2c)
1738 {
1739  return ((i2c->MASTER.MCTR & I2C_MCTR_ACK_MASK) == I2C_MCTR_ACK_ENABLE);
1740 }
1741 
1751 __STATIC_INLINE void DL_I2C_enableControllerACK(I2C_Regs *i2c)
1752 {
1753  i2c->MASTER.MCTR |= I2C_MCTR_ACK_MASK;
1754 }
1755 
1765 __STATIC_INLINE uint32_t DL_I2C_getTransactionLength(const I2C_Regs *i2c)
1766 {
1767  return ((i2c->MASTER.MCTR & I2C_MCTR_MBLEN_MASK) >> I2C_MCTR_MBLEN_OFS);
1768 }
1769 
1777 __STATIC_INLINE void DL_I2C_setTransactionLength(
1778  I2C_Regs *i2c, uint32_t length)
1779 {
1780  DL_Common_updateReg(&i2c->MASTER.MCTR, (length << I2C_MCTR_MBLEN_OFS),
1781  I2C_MCTR_MBLEN_MASK);
1782 }
1783 
1793 __STATIC_INLINE uint32_t DL_I2C_getControllerStatus(const I2C_Regs *i2c)
1794 {
1795  return (i2c->MASTER.MSR);
1796 }
1797 
1807 __STATIC_INLINE uint16_t DL_I2C_getTransactionCount(const I2C_Regs *i2c)
1808 {
1809  return ((uint16_t)(
1810  (i2c->MASTER.MSR & I2C_MSR_MBCNT_MASK) >> I2C_MSR_MBCNT_OFS));
1811 }
1812 
1824 __STATIC_INLINE uint8_t DL_I2C_receiveControllerData(const I2C_Regs *i2c)
1825 {
1826  return ((uint8_t)(i2c->MASTER.MRXDATA & I2C_MRXDATA_VALUE_MASK));
1827 }
1828 
1838 __STATIC_INLINE void DL_I2C_transmitControllerData(I2C_Regs *i2c, uint8_t data)
1839 {
1840  i2c->MASTER.MTXDATA = data;
1841 }
1842 
1864 __STATIC_INLINE uint8_t DL_I2C_getTimerPeriod(const I2C_Regs *i2c)
1865 {
1866  return ((uint8_t)(i2c->MASTER.MTPR & I2C_MTPR_TPR_MASK));
1867 }
1868 
1888 __STATIC_INLINE void DL_I2C_setTimerPeriod(I2C_Regs *i2c, uint8_t period)
1889 {
1890  i2c->MASTER.MTPR = period;
1891 }
1892 
1898 __STATIC_INLINE void DL_I2C_disableLoopbackMode(I2C_Regs *i2c)
1899 {
1900  i2c->MASTER.MCR &= ~(I2C_MCR_LPBK_MASK);
1901 }
1902 
1913 __STATIC_INLINE bool DL_I2C_isLoopbackModeEnabled(const I2C_Regs *i2c)
1914 {
1915  return ((i2c->MASTER.MCR & I2C_MCR_LPBK_MASK) == I2C_MCR_LPBK_ENABLE);
1916 }
1917 
1923 __STATIC_INLINE void DL_I2C_enableLoopbackMode(I2C_Regs *i2c)
1924 {
1925  i2c->MASTER.MCR |= I2C_MCR_LPBK_ENABLE;
1926 }
1927 
1933 __STATIC_INLINE void DL_I2C_disableMultiControllerMode(I2C_Regs *i2c)
1934 {
1935  i2c->MASTER.MCR &= ~(I2C_MCR_MMST_MASK);
1936 }
1937 
1948 __STATIC_INLINE bool DL_I2C_isMultiControllerModeEnabled(const I2C_Regs *i2c)
1949 {
1950  return ((i2c->MASTER.MCR & I2C_MCR_MMST_MASK) == I2C_MCR_MMST_ENABLE);
1951 }
1952 
1962 __STATIC_INLINE void DL_I2C_enableMultiControllerMode(I2C_Regs *i2c)
1963 {
1964  i2c->MASTER.MCR |= I2C_MCR_MMST_ENABLE;
1965 }
1966 
1972 __STATIC_INLINE void DL_I2C_disableController(I2C_Regs *i2c)
1973 {
1974  i2c->MASTER.MCR &= ~(I2C_MCR_ACTIVE_MASK);
1975 }
1976 
1987 __STATIC_INLINE bool DL_I2C_isControllerEnabled(const I2C_Regs *i2c)
1988 {
1989  return ((i2c->MASTER.MCR & I2C_MCR_ACTIVE_MASK) == I2C_MCR_ACTIVE_ENABLE);
1990 }
1991 
2000 __STATIC_INLINE void DL_I2C_enableController(I2C_Regs *i2c)
2001 {
2002  i2c->MASTER.MCR |= I2C_MCR_ACTIVE_ENABLE;
2003 }
2004 
2014 __STATIC_INLINE void DL_I2C_disableControllerClockStretching(I2C_Regs *i2c)
2015 {
2016  i2c->MASTER.MCR &= ~(I2C_MCR_CLKSTRETCH_MASK);
2017 }
2018 
2030  const I2C_Regs *i2c)
2031 {
2032  return ((i2c->MASTER.MCR & I2C_MCR_CLKSTRETCH_MASK) ==
2033  I2C_MCR_CLKSTRETCH_ENABLE);
2034 }
2035 
2045 __STATIC_INLINE void DL_I2C_enableControllerClockStretching(I2C_Regs *i2c)
2046 {
2047  i2c->MASTER.MCR |= I2C_MCR_CLKSTRETCH_ENABLE;
2048 }
2049 
2059 __STATIC_INLINE DL_I2C_CONTROLLER_SCL DL_I2C_getSCLStatus(const I2C_Regs *i2c)
2060 {
2061  uint32_t sclStatus = i2c->MASTER.MBMON & I2C_MBMON_SCL_MASK;
2062 
2063  return (DL_I2C_CONTROLLER_SCL)(sclStatus);
2064 }
2065 
2075 __STATIC_INLINE DL_I2C_CONTROLLER_SDA DL_I2C_getSDAStatus(const I2C_Regs *i2c)
2076 {
2077  uint32_t sdaStatus = i2c->MASTER.MBMON & I2C_MBMON_SDA_MASK;
2078 
2079  return (DL_I2C_CONTROLLER_SDA)(sdaStatus);
2080 }
2081 
2091 __STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getControllerTXFIFOThreshold(
2092  const I2C_Regs *i2c)
2093 {
2094  uint32_t level = i2c->MASTER.MFIFOCTL & I2C_MFIFOCTL_TXTRIG_MASK;
2095 
2096  return (DL_I2C_TX_FIFO_LEVEL)(level);
2097 }
2098 
2108  I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
2109 {
2111  &i2c->MASTER.MFIFOCTL, (uint32_t) level, I2C_MFIFOCTL_TXTRIG_MASK);
2112 }
2113 
2122 __STATIC_INLINE void DL_I2C_stopFlushControllerTXFIFO(I2C_Regs *i2c)
2123 {
2124  i2c->MASTER.MFIFOCTL &= ~(I2C_MFIFOCTL_TXFLUSH_MASK);
2125 }
2126 
2132 __STATIC_INLINE void DL_I2C_startFlushControllerTXFIFO(I2C_Regs *i2c)
2133 {
2134  i2c->MASTER.MFIFOCTL |= I2C_MFIFOCTL_TXFLUSH_MASK;
2135 }
2136 
2146 __STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getControllerRXFIFOThreshold(
2147  const I2C_Regs *i2c)
2148 {
2149  uint32_t level = i2c->MASTER.MFIFOCTL & I2C_MFIFOCTL_RXTRIG_MASK;
2150 
2151  return (DL_I2C_RX_FIFO_LEVEL)(level);
2152 }
2153 
2163  I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
2164 {
2166  &i2c->MASTER.MFIFOCTL, (uint32_t) level, I2C_MFIFOCTL_RXTRIG_MASK);
2167 }
2168 
2177 __STATIC_INLINE void DL_I2C_stopFlushControllerRXFIFO(I2C_Regs *i2c)
2178 {
2179  i2c->MASTER.MFIFOCTL &= ~(I2C_MFIFOCTL_RXFLUSH_MASK);
2180 }
2181 
2187 __STATIC_INLINE void DL_I2C_startFlushControllerRXFIFO(I2C_Regs *i2c)
2188 {
2189  i2c->MASTER.MFIFOCTL |= I2C_MFIFOCTL_RXFLUSH_MASK;
2190 }
2191 
2201 __STATIC_INLINE uint32_t DL_I2C_getControllerRXFIFOCounter(const I2C_Regs *i2c)
2202 {
2203  return (i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFIFOCNT_MASK);
2204 }
2205 
2215 __STATIC_INLINE uint32_t DL_I2C_getControllerTXFIFOCounter(const I2C_Regs *i2c)
2216 {
2217  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) >>
2218  I2C_MFIFOSR_TXFIFOCNT_OFS);
2219 }
2220 
2231 __STATIC_INLINE bool DL_I2C_isControllerRXFIFOFlushActive(const I2C_Regs *i2c)
2232 {
2233  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFLUSH_MASK) ==
2234  I2C_MFIFOSR_RXFLUSH_ACTIVE);
2235 }
2236 
2247 __STATIC_INLINE bool DL_I2C_isControllerTXFIFOFlushActive(const I2C_Regs *i2c)
2248 {
2249  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFLUSH_MASK) ==
2250  I2C_MFIFOSR_TXFLUSH_ACTIVE);
2251 }
2252 
2264 __STATIC_INLINE void DL_I2C_setTargetOwnAddress(I2C_Regs *i2c, uint32_t addr)
2265 {
2266  DL_Common_updateReg(&i2c->SLAVE.SOAR, addr, I2C_SOAR_OAR_MASK);
2267 }
2268 
2282 __STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddress(const I2C_Regs *i2c)
2283 {
2284  return (i2c->SLAVE.SOAR & I2C_SOAR_OAR_MASK);
2285 }
2286 
2294 __STATIC_INLINE void DL_I2C_enableTargetOwnAddress(I2C_Regs *i2c)
2295 {
2296  i2c->SLAVE.SOAR |= I2C_SOAR_OAREN_ENABLE;
2297 }
2298 
2304 __STATIC_INLINE void DL_I2C_disableTargetOwnAddress(I2C_Regs *i2c)
2305 {
2306  i2c->SLAVE.SOAR &= ~(I2C_SOAR_OAREN_MASK);
2307 }
2308 
2319 __STATIC_INLINE bool DL_I2C_isTargetOwnAddressEnabled(const I2C_Regs *i2c)
2320 {
2321  return ((i2c->SLAVE.SOAR & I2C_SOAR_OAREN_MASK) == I2C_SOAR_OAREN_ENABLE);
2322 }
2323 
2334 __STATIC_INLINE void DL_I2C_setTargetAddressingMode(
2335  I2C_Regs *i2c, DL_I2C_TARGET_ADDRESSING_MODE mode)
2336 {
2338  &i2c->SLAVE.SOAR, (uint32_t) mode, I2C_SOAR_SMODE_MASK);
2339 }
2340 
2350 __STATIC_INLINE DL_I2C_TARGET_ADDRESSING_MODE DL_I2C_getTargetAddressingMode(
2351  const I2C_Regs *i2c)
2352 {
2353  uint32_t mode = i2c->SLAVE.SOAR & I2C_SOAR_SMODE_MASK;
2354 
2355  return (DL_I2C_TARGET_ADDRESSING_MODE)(mode);
2356 }
2357 
2366 __STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternate(const I2C_Regs *i2c)
2367 {
2368  return (i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2_MASK);
2369 }
2370 
2378  I2C_Regs *i2c, uint32_t addr)
2379 {
2380  DL_Common_updateReg(&i2c->SLAVE.SOAR2, addr, I2C_SOAR2_OAR2_MASK);
2381 }
2382 
2393 __STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternateMask(
2394  const I2C_Regs *i2c)
2395 {
2396  return ((i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2_MASK_MASK) >>
2397  I2C_SOAR2_OAR2_MASK_OFS);
2398 }
2399 
2413  I2C_Regs *i2c, uint32_t addressMask)
2414 {
2415  DL_Common_updateReg(&i2c->SLAVE.SOAR2,
2416  addressMask << I2C_SOAR2_OAR2_MASK_OFS, I2C_SOAR2_OAR2_MASK_MASK);
2417 }
2418 
2424 __STATIC_INLINE void DL_I2C_disableTargetOwnAddressAlternate(I2C_Regs *i2c)
2425 {
2426  i2c->SLAVE.SOAR2 &= ~(I2C_SOAR2_OAR2EN_MASK);
2427 }
2428 
2440  const I2C_Regs *i2c)
2441 {
2442  return (
2443  (i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2EN_MASK) == I2C_SOAR2_OAR2EN_ENABLE);
2444 }
2445 
2451 __STATIC_INLINE void DL_I2C_enableTargetOwnAddressAlternate(I2C_Regs *i2c)
2452 {
2453  i2c->SLAVE.SOAR2 |= I2C_SOAR2_OAR2EN_ENABLE;
2454 }
2455 
2466 __STATIC_INLINE uint32_t DL_I2C_getTargetAddressMatch(const I2C_Regs *i2c)
2467 {
2468  return (
2469  (i2c->SLAVE.SSR & I2C_SSR_ADDRMATCH_MASK) >> I2C_SSR_ADDRMATCH_OFS);
2470 }
2471 
2483 __STATIC_INLINE void DL_I2C_disableTargetClockStretching(I2C_Regs *i2c)
2484 {
2485  i2c->SLAVE.SCTR &= ~(I2C_SCTR_SCLKSTRETCH_MASK);
2486 }
2487 
2498 __STATIC_INLINE bool DL_I2C_isTargetClockStretchingEnabled(const I2C_Regs *i2c)
2499 {
2500  return ((i2c->SLAVE.SCTR & I2C_SCTR_SCLKSTRETCH_MASK) ==
2501  I2C_SCTR_SCLKSTRETCH_ENABLE);
2502 }
2503 
2515 __STATIC_INLINE void DL_I2C_enableTargetClockStretching(I2C_Regs *i2c)
2516 {
2517  i2c->SLAVE.SCTR |= I2C_SCTR_SCLKSTRETCH_ENABLE;
2518 }
2519 
2531 __STATIC_INLINE void DL_I2C_disableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
2532 {
2533  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXEMPTY_ON_TREQ_MASK);
2534 }
2535 
2548  const I2C_Regs *i2c)
2549 {
2550  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXEMPTY_ON_TREQ_MASK) ==
2551  I2C_SCTR_TXEMPTY_ON_TREQ_ENABLE);
2552 }
2553 
2563 __STATIC_INLINE void DL_I2C_enableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
2564 {
2565  i2c->SLAVE.SCTR |= I2C_SCTR_TXEMPTY_ON_TREQ_ENABLE;
2566 }
2567 
2576 __STATIC_INLINE void DL_I2C_disableTargetTXTriggerInTXMode(I2C_Regs *i2c)
2577 {
2578  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXTRIG_TXMODE_MASK);
2579 }
2580 
2592  const I2C_Regs *i2c)
2593 {
2594  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXTRIG_TXMODE_MASK) ==
2595  I2C_SCTR_TXTRIG_TXMODE_ENABLE);
2596 }
2597 
2614 __STATIC_INLINE void DL_I2C_enableTargetTXTriggerInTXMode(I2C_Regs *i2c)
2615 {
2616  i2c->SLAVE.SCTR |= I2C_SCTR_TXTRIG_TXMODE_ENABLE;
2617 }
2618 
2627 __STATIC_INLINE void DL_I2C_disableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
2628 {
2629  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXWAIT_STALE_TXFIFO_MASK);
2630 }
2631 
2647  const I2C_Regs *i2c)
2648 {
2649  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXWAIT_STALE_TXFIFO_MASK) ==
2650  I2C_SCTR_TXWAIT_STALE_TXFIFO_ENABLE);
2651 }
2652 
2665 __STATIC_INLINE void DL_I2C_enableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
2666 {
2667  i2c->SLAVE.SCTR |= I2C_SCTR_TXWAIT_STALE_TXFIFO_ENABLE;
2668 }
2669 
2682 __STATIC_INLINE void DL_I2C_disableTargetRXFullOnRXRequest(I2C_Regs *i2c)
2683 {
2684  i2c->SLAVE.SCTR &= ~(I2C_SCTR_RXFULL_ON_RREQ_MASK);
2685 }
2686 
2698  const I2C_Regs *i2c)
2699 {
2700  return ((i2c->SLAVE.SCTR & I2C_SCTR_RXFULL_ON_RREQ_MASK) ==
2701  I2C_SCTR_RXFULL_ON_RREQ_ENABLE);
2702 }
2703 
2715 __STATIC_INLINE void DL_I2C_enableTargetRXFullOnRXRequest(I2C_Regs *i2c)
2716 {
2717  i2c->SLAVE.SCTR |= I2C_SCTR_RXFULL_ON_RREQ_ENABLE;
2718 }
2719 
2730 __STATIC_INLINE void DL_I2C_disableDefaultHostAddress(I2C_Regs *i2c)
2731 {
2732  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_DEFHOSTADR_MASK);
2733 }
2734 
2746 __STATIC_INLINE bool DL_I2C_isDefaultHostAddressEnabled(const I2C_Regs *i2c)
2747 {
2748  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_DEFHOSTADR_MASK) ==
2749  I2C_SCTR_EN_DEFHOSTADR_ENABLE);
2750 }
2751 
2760 __STATIC_INLINE void DL_I2C_enableDefaultHostAddress(I2C_Regs *i2c)
2761 {
2762  i2c->SLAVE.SCTR |= I2C_SCTR_EN_DEFHOSTADR_ENABLE;
2763 }
2764 
2776 __STATIC_INLINE void DL_I2C_disableAlertResponseAddress(I2C_Regs *i2c)
2777 {
2778  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_ALRESPADR_MASK);
2779 }
2780 
2792 __STATIC_INLINE bool DL_I2C_isAlertResponseAddressEnabled(const I2C_Regs *i2c)
2793 {
2794  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_ALRESPADR_MASK) ==
2795  I2C_SCTR_EN_ALRESPADR_ENABLE);
2796 }
2797 
2806 __STATIC_INLINE void DL_I2C_enableAlertResponseAddress(I2C_Regs *i2c)
2807 {
2808  i2c->SLAVE.SCTR |= I2C_SCTR_EN_ALRESPADR_ENABLE;
2809 }
2810 
2822 __STATIC_INLINE void DL_I2C_disableDefaultDeviceAddress(I2C_Regs *i2c)
2823 {
2824  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_DEFDEVADR_MASK);
2825 }
2826 
2838 __STATIC_INLINE bool DL_I2C_isDefaultDeviceAddressEnabled(const I2C_Regs *i2c)
2839 {
2840  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_DEFDEVADR_MASK) ==
2841  I2C_SCTR_EN_DEFDEVADR_ENABLE);
2842 }
2843 
2852 __STATIC_INLINE void DL_I2C_enableDefaultDeviceAddress(I2C_Regs *i2c)
2853 {
2854  i2c->SLAVE.SCTR |= I2C_SCTR_EN_DEFDEVADR_ENABLE;
2855 }
2856 
2865 __STATIC_INLINE void DL_I2C_disableTargetWakeup(I2C_Regs *i2c)
2866 {
2867  i2c->SLAVE.SCTR &= ~(I2C_SCTR_SWUEN_MASK);
2868 }
2869 
2880 __STATIC_INLINE bool DL_I2C_isTargetWakeupEnabled(const I2C_Regs *i2c)
2881 {
2882  return ((i2c->SLAVE.SCTR & I2C_SCTR_SWUEN_MASK) == I2C_SCTR_SWUEN_ENABLE);
2883 }
2884 
2895 __STATIC_INLINE void DL_I2C_enableTargetWakeup(I2C_Regs *i2c)
2896 {
2897  i2c->SLAVE.SCTR |= I2C_SCTR_SWUEN_ENABLE;
2898 }
2899 
2905 __STATIC_INLINE void DL_I2C_disableTarget(I2C_Regs *i2c)
2906 {
2907  i2c->SLAVE.SCTR &= ~(I2C_SCTR_ACTIVE_MASK);
2908 }
2909 
2920 __STATIC_INLINE bool DL_I2C_isTargetEnabled(const I2C_Regs *i2c)
2921 {
2922  return (
2923  (i2c->SLAVE.SCTR & I2C_SCTR_ACTIVE_MASK) == I2C_SCTR_ACTIVE_ENABLE);
2924 }
2925 
2931 __STATIC_INLINE void DL_I2C_enableTarget(I2C_Regs *i2c)
2932 {
2933  i2c->SLAVE.SCTR |= I2C_SCTR_ACTIVE_ENABLE;
2934 }
2935 
2941 __STATIC_INLINE void DL_I2C_disableGeneralCall(I2C_Regs *i2c)
2942 {
2943  i2c->SLAVE.SCTR &= ~(I2C_SCTR_GENCALL_MASK);
2944 }
2945 
2956 __STATIC_INLINE bool DL_I2C_isGeneralCallEnabled(const I2C_Regs *i2c)
2957 {
2958  return (
2959  (i2c->SLAVE.SCTR & I2C_SCTR_GENCALL_MASK) == I2C_SCTR_GENCALL_ENABLE);
2960 }
2961 
2967 __STATIC_INLINE void DL_I2C_enableGeneralCall(I2C_Regs *i2c)
2968 {
2969  i2c->SLAVE.SCTR |= I2C_SCTR_GENCALL_ENABLE;
2970 }
2971 
2981 __STATIC_INLINE uint32_t DL_I2C_getTargetStatus(const I2C_Regs *i2c)
2982 {
2983  return (i2c->SLAVE.SSR);
2984 }
2985 
2997 __STATIC_INLINE uint8_t DL_I2C_receiveTargetData(const I2C_Regs *i2c)
2998 {
2999  return (uint8_t)(i2c->SLAVE.SRXDATA & I2C_SRXDATA_VALUE_MASK);
3000 }
3001 
3009 __STATIC_INLINE void DL_I2C_transmitTargetData(I2C_Regs *i2c, uint8_t data)
3010 {
3011  i2c->SLAVE.STXDATA = data;
3012 }
3013 
3022 __STATIC_INLINE void DL_I2C_disableTargetACKOverride(I2C_Regs *i2c)
3023 {
3024  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_MASK);
3025 }
3026 
3037 __STATIC_INLINE bool DL_I2C_isTargetACKOverrideEnabled(const I2C_Regs *i2c)
3038 {
3039  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_MASK) ==
3040  I2C_SACKCTL_ACKOEN_ENABLE);
3041 }
3042 
3054 __STATIC_INLINE void DL_I2C_enableTargetACKOverride(I2C_Regs *i2c)
3055 {
3056  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ENABLE;
3057 }
3058 
3071 __STATIC_INLINE DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE
3073 {
3074  uint32_t value = i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOVAL_MASK;
3075 
3076  return (DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE)(value);
3077 }
3078 
3092  I2C_Regs *i2c, DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE value)
3093 {
3095  &i2c->SLAVE.SACKCTL, (uint32_t) value, I2C_SACKCTL_ACKOVAL_MASK);
3096 }
3097 
3103 __STATIC_INLINE void DL_I2C_disableACKOverrideOnStart(I2C_Regs *i2c)
3104 {
3105  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_START_MASK);
3106 }
3107 
3118 __STATIC_INLINE bool DL_I2C_isACKOverrideOnStartEnabled(const I2C_Regs *i2c)
3119 {
3120  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_START_MASK) ==
3121  I2C_SACKCTL_ACKOEN_ON_START_ENABLE);
3122 }
3123 
3134 __STATIC_INLINE void DL_I2C_enableACKOverrideOnStart(I2C_Regs *i2c)
3135 {
3136  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_START_ENABLE;
3137 }
3138 
3144 __STATIC_INLINE void DL_I2C_disableACKOverrideOnPECNext(I2C_Regs *i2c)
3145 {
3146  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_PECNEXT_MASK);
3147 }
3148 
3160 __STATIC_INLINE bool DL_I2C_isACKOverrideOnPECNextEnabled(const I2C_Regs *i2c)
3161 {
3162  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_PECNEXT_MASK) ==
3163  I2C_SACKCTL_ACKOEN_ON_PECNEXT_ENABLE);
3164 }
3165 
3179 __STATIC_INLINE void DL_I2C_enableACKOverrideOnPECNext(I2C_Regs *i2c)
3180 {
3181  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_PECNEXT_ENABLE;
3182 }
3183 
3189 __STATIC_INLINE void DL_I2C_disableACKOverrideOnPECDone(I2C_Regs *i2c)
3190 {
3191  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_PECDONE_MASK);
3192 }
3193 
3205 __STATIC_INLINE bool DL_I2C_isACKOverrideOnPECDoneEnabled(const I2C_Regs *i2c)
3206 {
3207  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_PECDONE_MASK) ==
3208  I2C_SACKCTL_ACKOEN_ON_PECDONE_ENABLE);
3209 }
3210 
3221 __STATIC_INLINE void DL_I2C_enableACKOverrideOnPECDone(I2C_Regs *i2c)
3222 {
3223  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_PECDONE_ENABLE;
3224 }
3225 
3236 __STATIC_INLINE uint32_t DL_I2C_getTargetPECCountValue(const I2C_Regs *i2c)
3237 {
3238  return (i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECCTL_PECCNT_MASK);
3239 }
3240 
3252 __STATIC_INLINE void DL_I2C_setTargetPECCountValue(
3253  I2C_Regs *i2c, uint32_t count)
3254 {
3256  &i2c->SLAVE.TARGET_PECCTL, count, I2C_TARGET_PECCTL_PECCNT_MASK);
3257 }
3258 
3264 __STATIC_INLINE void DL_I2C_disableTargetPEC(I2C_Regs *i2c)
3265 {
3266  i2c->SLAVE.TARGET_PECCTL &= ~(I2C_TARGET_PECCTL_PECEN_MASK);
3267 }
3268 
3280 __STATIC_INLINE bool DL_I2C_isTargetPECEnabled(const I2C_Regs *i2c)
3281 {
3282  return ((i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECCTL_PECEN_MASK) ==
3283  I2C_TARGET_PECCTL_PECEN_ENABLE);
3284 }
3285 
3300 __STATIC_INLINE void DL_I2C_enableTargetPEC(I2C_Regs *i2c)
3301 {
3302  i2c->SLAVE.TARGET_PECCTL |= I2C_TARGET_PECCTL_PECEN_ENABLE;
3303 }
3304 
3315 __STATIC_INLINE uint32_t DL_I2C_getTargetCurrentPECCount(const I2C_Regs *i2c)
3316 {
3317  return (i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECSR_PECBYTECNT_MASK);
3318 }
3319 
3333 __STATIC_INLINE DL_I2C_TARGET_PEC_STATUS DL_I2C_getTargetPECCheckedStatus(
3334  const I2C_Regs *i2c)
3335 {
3336  uint32_t status =
3337  i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECSTS_CHECK_MASK;
3338 
3339  return (DL_I2C_TARGET_PEC_STATUS)(status);
3340 }
3341 
3354 __STATIC_INLINE DL_I2C_TARGET_PEC_CHECK_ERROR DL_I2C_getTargetPECCheckError(
3355  const I2C_Regs *i2c)
3356 {
3357  uint32_t status =
3358  i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECSTS_ERROR_MASK;
3359 
3360  return (DL_I2C_TARGET_PEC_CHECK_ERROR)(status);
3361 }
3362 
3372 __STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getTargetTXFIFOThreshold(
3373  const I2C_Regs *i2c)
3374 {
3375  uint32_t level = i2c->SLAVE.SFIFOCTL & I2C_SFIFOCTL_TXTRIG_MASK;
3376 
3377  return (DL_I2C_TX_FIFO_LEVEL)(level);
3378 }
3379 
3388 __STATIC_INLINE void DL_I2C_setTargetTXFIFOThreshold(
3389  I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
3390 {
3391  DL_Common_updateReg(&i2c->SLAVE.SFIFOCTL, (uint32_t) level,
3392  (uint32_t) I2C_SFIFOCTL_TXTRIG_MASK);
3393 }
3394 
3403 __STATIC_INLINE void DL_I2C_stopFlushTargetTXFIFO(I2C_Regs *i2c)
3404 {
3405  i2c->SLAVE.SFIFOCTL &= ~(I2C_SFIFOCTL_TXFLUSH_MASK);
3406 }
3407 
3413 __STATIC_INLINE void DL_I2C_startFlushTargetTXFIFO(I2C_Regs *i2c)
3414 {
3415  i2c->SLAVE.SFIFOCTL |= I2C_SFIFOCTL_TXFLUSH_MASK;
3416 }
3417 
3426 __STATIC_INLINE void DL_I2C_stopFlushTargetRXFIFO(I2C_Regs *i2c)
3427 {
3428  i2c->SLAVE.SFIFOCTL &= ~(I2C_SFIFOCTL_RXFLUSH_MASK);
3429 }
3430 
3436 __STATIC_INLINE void DL_I2C_startFlushTargetRXFIFO(I2C_Regs *i2c)
3437 {
3438  i2c->SLAVE.SFIFOCTL |= I2C_SFIFOCTL_RXFLUSH_MASK;
3439 }
3440 
3450 __STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getTargetRXFIFOThreshold(
3451  const I2C_Regs *i2c)
3452 {
3453  uint32_t level = i2c->SLAVE.SFIFOCTL & I2C_SFIFOCTL_RXTRIG_MASK;
3454 
3455  return (DL_I2C_RX_FIFO_LEVEL)(level);
3456 }
3457 
3466 __STATIC_INLINE void DL_I2C_setTargetRXFIFOThreshold(
3467  I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
3468 {
3470  &i2c->SLAVE.SFIFOCTL, (uint32_t) level, I2C_SFIFOCTL_RXTRIG_MASK);
3471 }
3472 
3482 __STATIC_INLINE uint32_t DL_I2C_getTargetRXFIFOCounter(const I2C_Regs *i2c)
3483 {
3484  return (i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFIFOCNT_MASK);
3485 }
3486 
3496 __STATIC_INLINE uint32_t DL_I2C_getTargetTXFIFOCounter(const I2C_Regs *i2c)
3497 {
3498  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) >>
3499  I2C_SFIFOSR_TXFIFOCNT_OFS);
3500 }
3501 
3512 __STATIC_INLINE bool DL_I2C_isTargetRXFIFOFlushActive(const I2C_Regs *i2c)
3513 {
3514  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFLUSH_MASK) ==
3515  I2C_SFIFOSR_RXFLUSH_ACTIVE);
3516 }
3517 
3528 __STATIC_INLINE bool DL_I2C_isTargetTXFIFOFlushActive(const I2C_Regs *i2c)
3529 {
3530  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFLUSH_MASK) ==
3531  I2C_SFIFOSR_TXFLUSH_ACTIVE);
3532 }
3533 
3542 __STATIC_INLINE void DL_I2C_enableInterrupt(
3543  I2C_Regs *i2c, uint32_t interruptMask)
3544 {
3545  i2c->CPU_INT.IMASK |= interruptMask;
3546 }
3547 
3556 __STATIC_INLINE void DL_I2C_disableInterrupt(
3557  I2C_Regs *i2c, uint32_t interruptMask)
3558 {
3559  i2c->CPU_INT.IMASK &= ~(interruptMask);
3560 }
3561 
3574 __STATIC_INLINE uint32_t DL_I2C_getEnabledInterrupts(
3575  const I2C_Regs *i2c, uint32_t interruptMask)
3576 {
3577  return (i2c->CPU_INT.IMASK & interruptMask);
3578 }
3579 
3597 __STATIC_INLINE uint32_t DL_I2C_getEnabledInterruptStatus(
3598  const I2C_Regs *i2c, uint32_t interruptMask)
3599 {
3600  return (i2c->CPU_INT.MIS & interruptMask);
3601 }
3602 
3618 __STATIC_INLINE uint32_t DL_I2C_getRawInterruptStatus(
3619  const I2C_Regs *i2c, uint32_t interruptMask)
3620 {
3621  return (i2c->CPU_INT.RIS & interruptMask);
3622 }
3623 
3636 __STATIC_INLINE DL_I2C_IIDX DL_I2C_getPendingInterrupt(const I2C_Regs *i2c)
3637 {
3638  return ((DL_I2C_IIDX) i2c->CPU_INT.IIDX);
3639 }
3640 
3649 __STATIC_INLINE void DL_I2C_clearInterruptStatus(
3650  I2C_Regs *i2c, uint32_t interruptMask)
3651 {
3652  i2c->CPU_INT.ICLR = interruptMask;
3653 }
3654 
3671 __STATIC_INLINE void DL_I2C_enableDMAEvent(
3672  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3673 {
3674  switch (index) {
3675  case DL_I2C_EVENT_ROUTE_1:
3676  i2c->DMA_TRIG1.IMASK = interrupt;
3677  break;
3678  case DL_I2C_EVENT_ROUTE_2:
3679  i2c->DMA_TRIG0.IMASK = interrupt;
3680  break;
3681  default:
3682  break;
3683  }
3684 }
3685 
3700 __STATIC_INLINE void DL_I2C_disableDMAEvent(
3701  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3702 {
3703  switch (index) {
3704  case DL_I2C_EVENT_ROUTE_1:
3705  i2c->DMA_TRIG1.IMASK &= ~(interrupt);
3706  break;
3707  case DL_I2C_EVENT_ROUTE_2:
3708  i2c->DMA_TRIG0.IMASK &= ~(interrupt);
3709  break;
3710  default:
3711  break;
3712  }
3713 }
3714 
3733 __STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEvents(
3734  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3735 {
3736  volatile uint32_t *pReg = &i2c->DMA_TRIG1.IMASK;
3737 
3738  return ((*(pReg + (uint32_t) index) & interruptMask));
3739 }
3740 
3763 __STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEventStatus(
3764  const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3765 {
3766  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.MIS;
3767 
3768  return ((*(pReg + (uint32_t) index) & interruptMask));
3769 }
3770 
3789 __STATIC_INLINE uint32_t DL_I2C_getRawDMAEventStatus(
3790  const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3791 {
3792  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.RIS;
3793 
3794  return ((*(pReg + (uint32_t) index) & interruptMask));
3795 }
3796 
3813 __STATIC_INLINE DL_I2C_DMA_IIDX DL_I2C_getPendingDMAEvent(
3814  const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index)
3815 {
3816  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.IIDX;
3817 
3818  return (DL_I2C_DMA_IIDX)((*(pReg + (uint32_t) index)));
3819 }
3820 
3832 __STATIC_INLINE void DL_I2C_clearDMAEvent(
3833  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3834 {
3835  switch (index) {
3836  case DL_I2C_EVENT_ROUTE_1:
3837  i2c->DMA_TRIG1.ICLR |= interrupt;
3838  break;
3839  case DL_I2C_EVENT_ROUTE_2:
3840  i2c->DMA_TRIG0.ICLR |= interrupt;
3841  break;
3842  default:
3843  break;
3844  }
3845 }
3846 
3855 __STATIC_INLINE void DL_I2C_disableGlitchFilterChaining(I2C_Regs *i2c)
3856 {
3857  i2c->GFCTL &= ~(I2C_GFCTL_CHAIN_MASK);
3858 }
3859 
3870 __STATIC_INLINE bool DL_I2C_isGlitchFilterChainingEnabled(const I2C_Regs *i2c)
3871 {
3872  return ((i2c->GFCTL & I2C_GFCTL_CHAIN_MASK) == I2C_GFCTL_CHAIN_ENABLE);
3873 }
3874 
3883 __STATIC_INLINE void DL_I2C_enableGlitchFilterChaining(I2C_Regs *i2c)
3884 {
3885  i2c->GFCTL |= I2C_GFCTL_CHAIN_ENABLE;
3886 }
3887 
3897 __STATIC_INLINE uint32_t DL_I2C_getTimeoutACount(const I2C_Regs *i2c)
3898 {
3899  return (i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTLA_MASK);
3900 }
3901 
3918 __STATIC_INLINE void DL_I2C_setTimeoutACount(I2C_Regs *i2c, uint32_t count)
3919 {
3920  DL_Common_updateReg(&i2c->TIMEOUT_CTL, count, I2C_TIMEOUT_CTL_TCNTLA_MASK);
3921 }
3922 
3928 __STATIC_INLINE void DL_I2C_disableTimeoutA(I2C_Regs *i2c)
3929 {
3930  i2c->TIMEOUT_CTL &= ~(I2C_TIMEOUT_CTL_TCNTAEN_MASK);
3931 }
3932 
3943 __STATIC_INLINE bool DL_I2C_isTimeoutAEnabled(const I2C_Regs *i2c)
3944 {
3945  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTAEN_MASK) ==
3946  I2C_TIMEOUT_CTL_TCNTAEN_ENABLE);
3947 }
3948 
3954 __STATIC_INLINE void DL_I2C_enableTimeoutA(I2C_Regs *i2c)
3955 {
3956  i2c->TIMEOUT_CTL |= I2C_TIMEOUT_CTL_TCNTAEN_ENABLE;
3957 }
3958 
3971 __STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutACounter(const I2C_Regs *i2c)
3972 {
3973  return (i2c->TIMEOUT_CNT & I2C_TIMEOUT_CNT_TCNTA_MASK);
3974 }
3975 
3985 __STATIC_INLINE uint32_t DL_I2C_getTimeoutBCount(const I2C_Regs *i2c)
3986 {
3987  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTLB_MASK) >>
3988  I2C_TIMEOUT_CTL_TCNTLB_OFS);
3989 }
3990 
4005 __STATIC_INLINE void DL_I2C_setTimeoutBCount(I2C_Regs *i2c, uint32_t count)
4006 {
4007  DL_Common_updateReg(&i2c->TIMEOUT_CTL,
4008  (count << I2C_TIMEOUT_CTL_TCNTLB_OFS), I2C_TIMEOUT_CTL_TCNTLB_MASK);
4009 }
4010 
4016 __STATIC_INLINE void DL_I2C_disableTimeoutB(I2C_Regs *i2c)
4017 {
4018  i2c->TIMEOUT_CTL &= ~(I2C_TIMEOUT_CTL_TCNTBEN_MASK);
4019 }
4020 
4031 __STATIC_INLINE bool DL_I2C_isTimeoutBEnabled(const I2C_Regs *i2c)
4032 {
4033  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTBEN_MASK) ==
4034  I2C_TIMEOUT_CTL_TCNTBEN_ENABLE);
4035 }
4036 
4042 __STATIC_INLINE void DL_I2C_enableTimeoutB(I2C_Regs *i2c)
4043 {
4044  i2c->TIMEOUT_CTL |= I2C_TIMEOUT_CTL_TCNTBEN_ENABLE;
4045 }
4046 
4059 __STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutBCounter(const I2C_Regs *i2c)
4060 {
4061  return (i2c->TIMEOUT_CNT & I2C_TIMEOUT_CNT_TCNTB_MASK);
4062 }
4063 
4064 #ifdef __cplusplus
4065 }
4066 #endif
4067 
4068 #endif /* __MSPM0_HAS_I2C__ */
4069 
4070 #endif /* ti_dl_dl_i2c__include */
4071 
__STATIC_INLINE void DL_I2C_disableController(I2C_Regs *i2c)
Disable controller.
Definition: dl_i2c.h:1972
__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:1333
DL_I2C_CLOCK_DIVIDE
Definition: dl_i2c.h:463
__STATIC_INLINE void DL_I2C_disableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
Disable target TX transfer waits when stale data in TX FIFO.
Definition: dl_i2c.h:2627
DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE
Definition: dl_i2c.h:665
__STATIC_INLINE void DL_I2C_enableTargetClockStretching(I2C_Regs *i2c)
Enable target clock stretching.
Definition: dl_i2c.h:2515
Definition: dl_i2c.h:675
__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:3315
__STATIC_INLINE bool DL_I2C_isACKOverrideOnStartEnabled(const I2C_Regs *i2c)
Checks if target ACK override on Start condition is enabled.
Definition: dl_i2c.h:3118
__STATIC_INLINE void DL_I2C_enableTimeoutB(I2C_Regs *i2c)
Enable Timeout Counter B.
Definition: dl_i2c.h:4042
Definition: dl_i2c.h:649
__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:3354
__STATIC_INLINE void DL_I2C_enableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
Enable target TX transfer waits when stale data in TX FIFO.
Definition: dl_i2c.h:2665
Definition: dl_i2c.h:469
Definition: dl_i2c.h:619
Definition: dl_i2c.h:497
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOFull(const I2C_Regs *i2c)
Checks if target TX FIFO is full.
Definition: dl_i2c.h:933
Definition: dl_i2c.h:732
__STATIC_INLINE void DL_I2C_disableTargetTXTriggerInTXMode(I2C_Regs *i2c)
Disable target TX trigger in TX mode.
Definition: dl_i2c.h:2576
__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:3205
Definition: dl_i2c.h:494
Definition: dl_i2c.h:485
__STATIC_INLINE uint32_t DL_I2C_getEnabledInterrupts(const I2C_Regs *i2c, uint32_t interruptMask)
Check which I2C interrupts are enabled.
Definition: dl_i2c.h:3574
__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:1558
__STATIC_INLINE void DL_I2C_startFlushControllerRXFIFO(I2C_Regs *i2c)
Start controller RX FIFO flush.
Definition: dl_i2c.h:2187
__STATIC_INLINE void DL_I2C_disableDefaultHostAddress(I2C_Regs *i2c)
Disable SMBus/PMBus default host address of 000 1000b.
Definition: dl_i2c.h:2730
DL_I2C_TARGET_PEC_STATUS
Definition: dl_i2c.h:491
__STATIC_INLINE DL_I2C_CONTROLLER_SCL DL_I2C_getSCLStatus(const I2C_Regs *i2c)
Get SCL signal status.
Definition: dl_i2c.h:2059
Definition: dl_i2c.h:603
__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:3789
__STATIC_INLINE bool DL_I2C_isControllerBurstEnabled(const I2C_Regs *i2c)
Checks if I2C controller burst mode is enabled.
Definition: dl_i2c.h:1627
__STATIC_INLINE void DL_I2C_disableGeneralCall(I2C_Regs *i2c)
Disable general call address of 000 0000b.
Definition: dl_i2c.h:2941
__STATIC_INLINE void DL_I2C_disableTimeoutB(I2C_Regs *i2c)
Disable Timeout Counter B.
Definition: dl_i2c.h:4016
Definition: dl_i2c.h:661
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:3134
Definition: dl_i2c.h:647
Definition: dl_i2c.h:641
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:3700
__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:906
__STATIC_INLINE void DL_I2C_disableInterrupt(I2C_Regs *i2c, uint32_t interruptMask)
Disable I2C interrupts.
Definition: dl_i2c.h:3556
__STATIC_INLINE void DL_I2C_disableTargetWakeup(I2C_Regs *i2c)
Disable target wakeup.
Definition: dl_i2c.h:2865
__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:3496
Definition: dl_i2c.h:449
__STATIC_INLINE bool DL_I2C_isTargetClockStretchingEnabled(const I2C_Regs *i2c)
Checks if target clock stretching is enabled.
Definition: dl_i2c.h:2498
__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:1494
DL_I2C_CONTROLLER_SCL
Definition: dl_i2c.h:585
__STATIC_INLINE void DL_I2C_startFlushControllerTXFIFO(I2C_Regs *i2c)
Start controller TX FIFO flush.
Definition: dl_i2c.h:2132
__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:2215
DL_I2C_CLOCK_DIVIDE divideRatio
Definition: dl_i2c.h:754
__STATIC_INLINE void DL_I2C_disableControllerBurst(I2C_Regs *i2c)
Disable I2C controller burst mode.
Definition: dl_i2c.h:1612
__STATIC_INLINE void DL_I2C_disableACKOverrideOnStart(I2C_Regs *i2c)
Disable target ACK override on Start Condition.
Definition: dl_i2c.h:3103
__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:1478
__STATIC_INLINE void DL_I2C_disablePower(I2C_Regs *i2c)
Disables the Peripheral Write Enable (PWREN) register for the I2C.
Definition: dl_i2c.h:1074
Definition: dl_i2c.h:685
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:2231
__STATIC_INLINE void DL_I2C_enableAlertResponseAddress(I2C_Regs *i2c)
Enable SMBus/PMBus Alert response address (ARA) of 000 1100b.
Definition: dl_i2c.h:2806
DL_I2C_ANALOG_GLITCH_FILTER_WIDTH
Definition: dl_i2c.h:513
__STATIC_INLINE void DL_I2C_enableStartCondition(I2C_Regs *i2c)
Enable I2C START generation.
Definition: dl_i2c.h:1672
Definition: dl_i2c.h:724
Definition: dl_i2c.h:457
__STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getControllerTXFIFOThreshold(const I2C_Regs *i2c)
Get controller TX FIFO threshold level.
Definition: dl_i2c.h:2091
__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:3009
__STATIC_INLINE void DL_I2C_disableACKOverrideOnPECDone(I2C_Regs *i2c)
Disable target ACK override when SMBus/PMBus PEC is next byte.
Definition: dl_i2c.h:3189
__STATIC_INLINE DL_I2C_CONTROLLER_ADDRESSING_MODE DL_I2C_getControllerAddressingMode(const I2C_Regs *i2c)
Get controller addressing mode.
Definition: dl_i2c.h:1351
void DL_I2C_setClockConfig(I2C_Regs *i2c, const DL_I2C_ClockConfig *config)
Configure I2C source clock.
Definition: dl_i2c.h:587
__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:1208
__STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getTargetTXFIFOThreshold(const I2C_Regs *i2c)
Get target TX FIFO threshold level.
Definition: dl_i2c.h:3372
__STATIC_INLINE void DL_I2C_setTargetOwnAddressAlternateMask(I2C_Regs *i2c, uint32_t addressMask)
Set target own address alternate mask.
Definition: dl_i2c.h:2412
__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:1578
Definition: dl_i2c.h:655
DL_I2C_CONTROLLER_SDA
Definition: dl_i2c.h:593
Definition: dl_i2c.h:687
DL_I2C_CONTROLLER_START
Definition: dl_i2c.h:601
__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:1864
Definition: dl_i2c.h:635
__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:1888
__STATIC_INLINE void DL_I2C_enableTargetOwnAddress(I2C_Regs *i2c)
Enable target own address.
Definition: dl_i2c.h:2294
Definition: dl_i2c.h:589
__STATIC_INLINE void DL_I2C_enableGeneralCall(I2C_Regs *i2c)
Enable usage of general call address of 000 0000b.
Definition: dl_i2c.h:2967
__STATIC_INLINE void DL_I2C_enableControllerACKOverride(I2C_Regs *i2c)
Enable controller ACK override.
Definition: dl_i2c.h:1415
Definition: dl_i2c.h:595
#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:737
__STATIC_INLINE bool DL_I2C_isTargetRXFIFOEmpty(const I2C_Regs *i2c)
Checks if target RX FIFO is empty.
Definition: dl_i2c.h:965
__STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getControllerRXFIFOThreshold(const I2C_Regs *i2c)
Get controller RX FIFO threshold level.
Definition: dl_i2c.h:2146
__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:1315
__STATIC_INLINE void DL_I2C_stopFlushControllerRXFIFO(I2C_Regs *i2c)
Stop controller RX FIFO flush.
Definition: dl_i2c.h:2177
DL_I2C_CLOCK
Definition: dl_i2c.h:455
__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:3482
__STATIC_INLINE void DL_I2C_enableDefaultHostAddress(I2C_Regs *i2c)
Enable SMBus/PMBus default host address of 000 1000b.
Definition: dl_i2c.h:2760
DL_I2C_CONTROLLER_ACK
Definition: dl_i2c.h:617
__STATIC_INLINE void DL_I2C_stopFlushControllerTXFIFO(I2C_Regs *i2c)
Stop controller TX FIFO flush.
Definition: dl_i2c.h:2122
DriverLib Common APIs.
Definition: dl_i2c.h:726
Definition: dl_i2c.h:465
__STATIC_INLINE void DL_I2C_setControllerDirection(I2C_Regs *i2c, DL_I2C_CONTROLLER_DIRECTION direction)
Set direction of next controller operation.
Definition: dl_i2c.h:1292
__STATIC_INLINE uint8_t DL_I2C_receiveTargetData(const I2C_Regs *i2c)
Get byte of data from I2C target.
Definition: dl_i2c.h:2997
Definition: dl_i2c.h:659
__STATIC_INLINE DL_I2C_CONTROLLER_SDA DL_I2C_getSDAStatus(const I2C_Regs *i2c)
Get SDA signal status.
Definition: dl_i2c.h:2075
Definition: dl_i2c.h:477
__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:1225
__STATIC_INLINE bool DL_I2C_isTargetOwnAddressEnabled(const I2C_Regs *i2c)
Checks if target own address is enabled.
Definition: dl_i2c.h:2319
Definition: dl_i2c.h:735
Definition: dl_i2c.h:657
Definition: dl_i2c.h:704
DL_I2C_CONTROLLER_ADDRESSING_MODE
Definition: dl_i2c.h:553
__STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutBCounter(const I2C_Regs *i2c)
Get the current Timer Counter B value.
Definition: dl_i2c.h:4059
__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:3813
__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:3333
__STATIC_INLINE uint8_t DL_I2C_receiveControllerData(const I2C_Regs *i2c)
Get byte of data from I2C controller.
Definition: dl_i2c.h:1824
Definition: dl_i2c.h:487
Definition: dl_i2c.h:639
Definition: dl_i2c.h:653
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:1464
Definition: dl_i2c.h:743
__STATIC_INLINE void DL_I2C_disableTargetClockStretching(I2C_Regs *i2c)
Disable target clock stretching.
Definition: dl_i2c.h:2483
__STATIC_INLINE void DL_I2C_enableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
Enable target TX empty interrupt on transmit request.
Definition: dl_i2c.h:2563
Definition: dl_i2c.h:708
__STATIC_INLINE void DL_I2C_disableACKOverrideOnPECNext(I2C_Regs *i2c)
Disable target ACK override when SMBus/PMBus PEC is next byte.
Definition: dl_i2c.h:3144
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:2107
__STATIC_INLINE void DL_I2C_enableTarget(I2C_Regs *i2c)
Enable usage of target functionality.
Definition: dl_i2c.h:2931
__STATIC_INLINE uint16_t DL_I2C_getTransactionCount(const I2C_Regs *i2c)
Get transaction count in bytes.
Definition: dl_i2c.h:1807
__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:1599
__STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddress(const I2C_Regs *i2c)
Get target own address.
Definition: dl_i2c.h:2282
__STATIC_INLINE void DL_I2C_selectClockDivider(I2C_Regs *i2c, DL_I2C_CLOCK_DIVIDE clockDivider)
Set Clock Divider.
Definition: dl_i2c.h:1153
__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:3160
Definition: dl_i2c.h:471
__STATIC_INLINE void DL_I2C_enableACKOverrideOnPECDone(I2C_Regs *i2c)
Enable target ACK override when SMBus/PMBus PEC is done.
Definition: dl_i2c.h:3221
__STATIC_INLINE void DL_I2C_setTransactionLength(I2C_Regs *i2c, uint32_t length)
Set transaction length in bytes.
Definition: dl_i2c.h:1777
Definition: dl_i2c.h:711
__STATIC_INLINE void DL_I2C_disableGlitchFilterChaining(I2C_Regs *i2c)
Disable analog and digital glitch filter chaining.
Definition: dl_i2c.h:3855
__STATIC_INLINE void DL_I2C_enableController(I2C_Regs *i2c)
Enable controller.
Definition: dl_i2c.h:2000
__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:3597
__STATIC_INLINE void DL_I2C_setTargetOwnAddressAlternate(I2C_Regs *i2c, uint32_t addr)
Set target own address alternate.
Definition: dl_i2c.h:2377
Definition: dl_i2c.h:605
__STATIC_INLINE bool DL_I2C_isTimeoutBEnabled(const I2C_Regs *i2c)
Checks if Timeout Counter B is enabled.
Definition: dl_i2c.h:4031
__STATIC_INLINE bool DL_I2C_isTargetTXTriggerInTXModeEnabled(const I2C_Regs *i2c)
Checks if target TX trigger in TX mode is enabled.
Definition: dl_i2c.h:2591
Definition: dl_i2c.h:467
__STATIC_INLINE bool DL_I2C_isMultiControllerModeEnabled(const I2C_Regs *i2c)
Checks if multicontroller mode is enabled.
Definition: dl_i2c.h:1948
__STATIC_INLINE bool DL_I2C_isTargetOwnAddressAlternateEnabled(const I2C_Regs *i2c)
Checks if target own address alternate is enabled.
Definition: dl_i2c.h:2439
__STATIC_INLINE void DL_I2C_setTimeoutACount(I2C_Regs *i2c, uint32_t count)
Set the Timeout Counter A value.
Definition: dl_i2c.h:3918
__STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getTargetRXFIFOThreshold(const I2C_Regs *i2c)
Get target RX FIFO threshold level.
Definition: dl_i2c.h:3450
__STATIC_INLINE bool DL_I2C_isTargetEnabled(const I2C_Regs *i2c)
Checks if target functionality is enabled.
Definition: dl_i2c.h:2920
__STATIC_INLINE bool DL_I2C_isControllerTXFIFOEmpty(const I2C_Regs *i2c)
Checks if controller TX FIFO is empty.
Definition: dl_i2c.h:829
__STATIC_INLINE void DL_I2C_disableStartCondition(I2C_Regs *i2c)
Disable I2C START generation.
Definition: dl_i2c.h:1647
__STATIC_INLINE void DL_I2C_setTargetAddressingMode(I2C_Regs *i2c, DL_I2C_TARGET_ADDRESSING_MODE mode)
Set target addressing mode.
Definition: dl_i2c.h:2334
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOFlushActive(const I2C_Regs *i2c)
Checks if target TX FIFO flush is active.
Definition: dl_i2c.h:3528
Definition: dl_i2c.h:741
__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:2746
__STATIC_INLINE bool DL_I2C_isControllerTXFIFOFull(const I2C_Regs *i2c)
Checks if controller TX FIFO is full.
Definition: dl_i2c.h:813
__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:3763
DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH
Definition: dl_i2c.h:525
Definition: dl_i2c.h:719
__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:3466
Definition: dl_i2c.h:549
__STATIC_INLINE void DL_I2C_reset(I2C_Regs *i2c)
Resets i2c peripheral.
Definition: dl_i2c.h:1106
__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:3091
__STATIC_INLINE void DL_I2C_disableMultiControllerMode(I2C_Regs *i2c)
Disable multicontroller mode.
Definition: dl_i2c.h:1933
__STATIC_INLINE void DL_I2C_stopFlushTargetTXFIFO(I2C_Regs *i2c)
Stop target TX FIFO flush.
Definition: dl_i2c.h:3403
__STATIC_INLINE void DL_I2C_enableMultiControllerMode(I2C_Regs *i2c)
Enable multicontroller mode.
Definition: dl_i2c.h:1962
__STATIC_INLINE void DL_I2C_resetControllerTransfer(I2C_Regs *i2c)
Reset transfers from from I2C controller.
Definition: dl_i2c.h:858
DL_I2C_RX_FIFO_LEVEL
Definition: dl_i2c.h:645
__STATIC_INLINE bool DL_I2C_isTargetRXFIFOFlushActive(const I2C_Regs *i2c)
Checks if target RX FIFO flush is active.
Definition: dl_i2c.h:3512
__STATIC_INLINE uint32_t DL_I2C_getTimeoutBCount(const I2C_Regs *i2c)
Get the Timeout Counter B value.
Definition: dl_i2c.h:3985
__STATIC_INLINE uint32_t DL_I2C_getTimeoutACount(const I2C_Regs *i2c)
Get the Timeout Counter A value.
Definition: dl_i2c.h:3897
__STATIC_INLINE void DL_I2C_enableTimeoutA(I2C_Regs *i2c)
Enable Timeout Counter A.
Definition: dl_i2c.h:3954
DL_I2C_CONTROLLER_PEC_STATUS
Definition: dl_i2c.h:561
__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:1172
__STATIC_INLINE void DL_I2C_enablePower(I2C_Regs *i2c)
Enables the Peripheral Write Enable (PWREN) register for the I2C.
Definition: dl_i2c.h:1059
Definition: dl_i2c.h:728
Definition: dl_i2c.h:691
__STATIC_INLINE void DL_I2C_disableLoopbackMode(I2C_Regs *i2c)
Disable loopback mode.
Definition: dl_i2c.h:1898
DL_I2C_CONTROLLER_PEC_CHECK_ERROR
Definition: dl_i2c.h:573
Definition: dl_i2c.h:693
__STATIC_INLINE uint32_t DL_I2C_getTransactionLength(const I2C_Regs *i2c)
Get transaction length in bytes.
Definition: dl_i2c.h:1765
__STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternateMask(const I2C_Regs *i2c)
Get target own address alternate mask.
Definition: dl_i2c.h:2393
__STATIC_INLINE DL_I2C_TARGET_ADDRESSING_MODE DL_I2C_getTargetAddressingMode(const I2C_Regs *i2c)
Get target addressing mode.
Definition: dl_i2c.h:2350
Definition: dl_i2c.h:679
DL_I2C_CONTROLLER_DIRECTION
Definition: dl_i2c.h:545
__STATIC_INLINE void DL_I2C_enableLoopbackMode(I2C_Regs *i2c)
Enable loopback mode.
Definition: dl_i2c.h:1923
Configuration struct for DL_I2C_setClockConfig.
Definition: dl_i2c.h:750
__STATIC_INLINE uint32_t DL_I2C_getTargetStatus(const I2C_Regs *i2c)
Get status of I2C bus controller for target.
Definition: dl_i2c.h:2981
__STATIC_INLINE void DL_I2C_enableGlitchFilterChaining(I2C_Regs *i2c)
Enable analog and digitial glitch filter chaining.
Definition: dl_i2c.h:3883
__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:3236
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOEmpty(const I2C_Regs *i2c)
Checks if target TX FIFO is empty.
Definition: dl_i2c.h:949
__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:2697
__STATIC_INLINE void DL_I2C_clearInterruptStatus(I2C_Regs *i2c, uint32_t interruptMask)
Clear pending I2C interrupts.
Definition: dl_i2c.h:3649
__STATIC_INLINE void DL_I2C_disableTargetOwnAddressAlternate(I2C_Regs *i2c)
Disable usage of target own address alternate.
Definition: dl_i2c.h:2424
__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:3252
__STATIC_INLINE DL_I2C_CONTROLLER_DIRECTION DL_I2C_getControllerDirection(const I2C_Regs *i2c)
Get direction of next controller operation.
Definition: dl_i2c.h:1276
__STATIC_INLINE void DL_I2C_disableControllerACKOverride(I2C_Regs *i2c)
Disable controller ACK override.
Definition: dl_i2c.h:1379
__STATIC_INLINE void DL_I2C_stopFlushTargetRXFIFO(I2C_Regs *i2c)
Stop target RX FIFO flush.
Definition: dl_i2c.h:3426
Definition: dl_i2c.h:715
__STATIC_INLINE void DL_I2C_disableDefaultDeviceAddress(I2C_Regs *i2c)
Disable SMBus/PMBus default device address of 110 0001b.
Definition: dl_i2c.h:2822
Definition: dl_i2c.h:722
Definition: dl_i2c.h:621
__STATIC_INLINE bool DL_I2C_isLoopbackModeEnabled(const I2C_Regs *i2c)
Checks if loopback mode is enabled.
Definition: dl_i2c.h:1913
__STATIC_INLINE uint32_t DL_I2C_getTargetAddressMatch(const I2C_Regs *i2c)
Get the address for which address match happened.
Definition: dl_i2c.h:2466
__STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutACounter(const I2C_Regs *i2c)
Get the current Timer Counter A value.
Definition: dl_i2c.h:3971
__STATIC_INLINE void DL_I2C_startFlushTargetTXFIFO(I2C_Regs *i2c)
Start target TX FIFO flush.
Definition: dl_i2c.h:3413
__STATIC_INLINE DL_I2C_IIDX DL_I2C_getPendingInterrupt(const I2C_Regs *i2c)
Get highest priority pending I2C interrupt.
Definition: dl_i2c.h:3636
__STATIC_INLINE bool DL_I2C_isGlitchFilterChainingEnabled(const I2C_Regs *i2c)
Checks if analog and digital glitch filter chaining is enabled.
Definition: dl_i2c.h:3870
Definition: dl_i2c.h:739
Definition: dl_i2c.h:651
__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:3388
DL_I2C_DMA_IIDX
Definition: dl_i2c.h:433
__STATIC_INLINE void DL_I2C_disableControllerACK(I2C_Regs *i2c)
Disable I2C controller data acknowledge (ACK or NACK)
Definition: dl_i2c.h:1721
__STATIC_INLINE bool DL_I2C_isGeneralCallEnabled(const I2C_Regs *i2c)
Checks if general call address of 000 0000b is enabled.
Definition: dl_i2c.h:2956
__STATIC_INLINE void DL_I2C_enableControllerClockStretching(I2C_Regs *i2c)
Enable controller clock stretching.
Definition: dl_i2c.h:2045
__STATIC_INLINE bool DL_I2C_isControllerACKOverrideEnabled(const I2C_Regs *i2c)
Checks if controller ACK override is enabled.
Definition: dl_i2c.h:1394
void DL_I2C_flushTargetTXFIFO(I2C_Regs *i2c)
Flushes/removes all elements in the target TX FIFO.
Definition: dl_i2c.h:730
DL_I2C_CONTROLLER_STOP
Definition: dl_i2c.h:609
__STATIC_INLINE void DL_I2C_disableTargetOwnAddress(I2C_Regs *i2c)
Disable target own address.
Definition: dl_i2c.h:2304
__STATIC_INLINE bool DL_I2C_isStartConditionEnabled(const I2C_Regs *i2c)
Checks if I2C START generation is enabled.
Definition: dl_i2c.h:1662
__STATIC_INLINE bool DL_I2C_isControllerReadOnTXEmptyEnabled(const I2C_Regs *i2c)
Checks if controller read on TX empty is enabled.
Definition: dl_i2c.h:1440
Definition: dl_i2c.h:451
__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:2838
__STATIC_INLINE void DL_I2C_setTimeoutBCount(I2C_Regs *i2c, uint32_t count)
Set the Timeout Counter B value.
Definition: dl_i2c.h:4005
__STATIC_INLINE void DL_I2C_disableControllerReadOnTXEmpty(I2C_Regs *i2c)
Disable controller read on TX empty.
Definition: dl_i2c.h:1425
DL_I2C_EVENT_ROUTE
Definition: dl_i2c.h:447
__STATIC_INLINE void DL_I2C_disableControllerPEC(I2C_Regs *i2c)
Disable controller SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:1506
__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:3671
Definition: dl_i2c.h:627
__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:2646
void DL_I2C_transmitTargetDataBlocking(I2C_Regs *i2c, uint8_t data)
Transmit target data, waiting until transmit request.
__STATIC_INLINE void DL_I2C_enableDefaultDeviceAddress(I2C_Regs *i2c)
Enable SMBus/PMBus default device address of 110 0001b.
Definition: dl_i2c.h:2852
Definition: dl_i2c.h:475
__STATIC_INLINE void DL_I2C_enableControllerPEC(I2C_Regs *i2c)
Enable controller SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:1543
__STATIC_INLINE void DL_I2C_disableStopCondition(I2C_Regs *i2c)
Disable I2C STOP generation.
Definition: dl_i2c.h:1682
Definition: dl_i2c.h:479
__STATIC_INLINE bool DL_I2C_isControllerRXFIFOEmpty(const I2C_Regs *i2c)
Checks if controller RX FIFO is empty.
Definition: dl_i2c.h:845
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:1368
__STATIC_INLINE uint32_t DL_I2C_getControllerStatus(const I2C_Regs *i2c)
Get status of I2C bus controller for controller.
Definition: dl_i2c.h:1793
__STATIC_INLINE void DL_I2C_enableAnalogGlitchFilter(I2C_Regs *i2c)
Enable Analog Glitch Suppression.
Definition: dl_i2c.h:1262
__STATIC_INLINE bool DL_I2C_isControllerClockStretchingEnabled(const I2C_Regs *i2c)
Checks if controller clock stretching is enabled.
Definition: dl_i2c.h:2029
Definition: dl_i2c.h:677
__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:3280
__STATIC_INLINE bool DL_I2C_isAnalogGlitchFilterEnabled(const I2C_Regs *i2c)
Checks if analog glitch suppression is enabled.
Definition: dl_i2c.h:1252
Definition: dl_i2c.h:597
__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:3733
__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:2792
__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:1838
__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:1188
__STATIC_INLINE bool DL_I2C_isControllerEnabled(const I2C_Regs *i2c)
Checks if controller is enabled.
Definition: dl_i2c.h:1987
__STATIC_INLINE void DL_I2C_disableTarget(I2C_Regs *i2c)
Disable target functionality.
Definition: dl_i2c.h:2905
__STATIC_INLINE void DL_I2C_disableAnalogGlitchFilter(I2C_Regs *i2c)
Disable Analog Glitch Suppression.
Definition: dl_i2c.h:1237
__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:3832
__STATIC_INLINE void DL_I2C_enableControllerACK(I2C_Regs *i2c)
Enable I2C controller data acknowledge (ACK or NACK)
Definition: dl_i2c.h:1751
__STATIC_INLINE void DL_I2C_disableControllerClockStretching(I2C_Regs *i2c)
Disable controller clock stretching.
Definition: dl_i2c.h:2014
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:3542
Definition: dl_i2c.h:637
__STATIC_INLINE void DL_I2C_enableACKOverrideOnPECNext(I2C_Regs *i2c)
Enable target ACK override when SMBus/PMBus PEC is next byte.
Definition: dl_i2c.h:3179
__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:1522
__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:2547
Definition: dl_i2c.h:717
__STATIC_INLINE void DL_I2C_enableTargetWakeup(I2C_Regs *i2c)
Enable target wakeup.
Definition: dl_i2c.h:2895
__STATIC_INLINE void DL_I2C_disableTimeoutA(I2C_Regs *i2c)
Disable Timeout Counter A.
Definition: dl_i2c.h:3928
__STATIC_INLINE void DL_I2C_selectClockSource(I2C_Regs *i2c, DL_I2C_CLOCK clockSource)
Set Clock Source.
Definition: dl_i2c.h:1138
Definition: dl_i2c.h:564
__STATIC_INLINE bool DL_I2C_isTargetACKOverrideEnabled(const I2C_Regs *i2c)
Checks if target ACK override is enabled.
Definition: dl_i2c.h:3037
Definition: dl_i2c.h:613
__STATIC_INLINE void DL_I2C_enableTargetPEC(I2C_Regs *i2c)
Enable target SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:3300
__STATIC_INLINE void DL_I2C_enableTargetACKOverride(I2C_Regs *i2c)
Enable target ACK override.
Definition: dl_i2c.h:3054
Definition: dl_i2c.h:459
__STATIC_INLINE void DL_I2C_enableTargetRXFullOnRXRequest(I2C_Regs *i2c)
Enable target RX full interrupt on receive request.
Definition: dl_i2c.h:2715
__STATIC_INLINE void DL_I2C_enableTargetTXTriggerInTXMode(I2C_Regs *i2c)
Enable TX trigger when target is in TX mode.
Definition: dl_i2c.h:2614
__STATIC_INLINE void DL_I2C_setTargetOwnAddress(I2C_Regs *i2c, uint32_t addr)
Set target own address.
Definition: dl_i2c.h:2264
Definition: dl_i2c.h:633
__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:875
__STATIC_INLINE void DL_I2C_enableTargetOwnAddressAlternate(I2C_Regs *i2c)
Enable usage of target own address alternate.
Definition: dl_i2c.h:2451
__STATIC_INLINE bool DL_I2C_isTimeoutAEnabled(const I2C_Regs *i2c)
Checks if Timeout Counter A is enabled.
Definition: dl_i2c.h:3943
DL_I2C_TX_FIFO_LEVEL
Definition: dl_i2c.h:625
Definition: dl_i2c.h:689
__STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternate(const I2C_Regs *i2c)
Get target own address alternate.
Definition: dl_i2c.h:2366
__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:2162
Definition: dl_i2c.h:713
DL_I2C_CLOCK clockSel
Definition: dl_i2c.h:752
Definition: dl_i2c.h:547
__STATIC_INLINE bool DL_I2C_isTargetWakeupEnabled(const I2C_Regs *i2c)
Checks if target wakeup is enabled.
Definition: dl_i2c.h:2880
__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:2201
Definition: dl_i2c.h:706
__STATIC_INLINE void DL_I2C_enableControllerBurst(I2C_Regs *i2c)
Enable I2C controller burst mode.
Definition: dl_i2c.h:1637
__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:1737
DL_I2C_TARGET_ADDRESSING_MODE
Definition: dl_i2c.h:483
__STATIC_INLINE void DL_I2C_enableStopCondition(I2C_Regs *i2c)
Enable I2C STOP generation.
Definition: dl_i2c.h:1707
__STATIC_INLINE void DL_I2C_disableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
Disable target TX empty interrupt on transmit request.
Definition: dl_i2c.h:2531
__STATIC_INLINE bool DL_I2C_isStopConditionEnabled(const I2C_Regs *i2c)
Checks if I2C STOP generation is enabled.
Definition: dl_i2c.h:1697
__STATIC_INLINE void DL_I2C_disableTargetRXFullOnRXRequest(I2C_Regs *i2c)
Disable target RX full interrupt on receive request.
Definition: dl_i2c.h:2682
__STATIC_INLINE bool DL_I2C_isControllerTXFIFOFlushActive(const I2C_Regs *i2c)
Checks if controller TX FIFO flush is active.
Definition: dl_i2c.h:2247
Definition: dl_i2c.h:631
__STATIC_INLINE void DL_I2C_disableTargetACKOverride(I2C_Regs *i2c)
Disable target ACK override.
Definition: dl_i2c.h:3022
Definition: dl_i2c.h:629
DL_I2C_IIDX
Definition: dl_i2c.h:673
DL_I2C_TARGET_PEC_CHECK_ERROR
Definition: dl_i2c.h:502
__STATIC_INLINE bool DL_I2C_isReset(const I2C_Regs *i2c)
Returns if i2c peripheral was reset.
Definition: dl_i2c.h:1122
Definition: dl_i2c.h:611
Definition: dl_i2c.h:473
__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:1095
__STATIC_INLINE DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE DL_I2C_getTargetACKOverrideValue(const I2C_Regs *i2c)
Get target acknowledge override value.
Definition: dl_i2c.h:3072
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:3436
__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:3618
__STATIC_INLINE void DL_I2C_disableTargetPEC(I2C_Regs *i2c)
Disable target SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:3264
Definition: dl_i2c.h:509
__STATIC_INLINE void DL_I2C_disableAlertResponseAddress(I2C_Regs *i2c)
Disable SMBus/PMBus Alert response address (ARA) of 000 1100b.
Definition: dl_i2c.h:2776
© Copyright 1995-2025, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale