MSPM0GX51X Driver Library  2.02.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, DL_I2C_ClockConfig *config);
766 
775 void DL_I2C_getClockConfig(I2C_Regs *i2c, DL_I2C_ClockConfig *config);
776 
787  I2C_Regs *i2c, 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(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(I2C_Regs *i2c)
830 {
831  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) ==
832  I2C_MFIFOSR_TXFIFOCNT_MAXIMUM);
833 }
834 
845 __STATIC_INLINE bool DL_I2C_isControllerRXFIFOEmpty(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(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(I2C_Regs *i2c)
950 {
951  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) ==
953 }
954 
965 __STATIC_INLINE bool DL_I2C_isTargetRXFIFOEmpty(I2C_Regs *i2c)
966 {
967  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFIFOCNT_MASK) ==
968  I2C_SFIFOSR_RXFIFOCNT_MINIMUM);
969 }
970 
980 uint8_t DL_I2C_fillTargetTXFIFO(I2C_Regs *i2c, uint8_t *buffer, uint8_t count);
981 
987 void DL_I2C_flushTargetTXFIFO(I2C_Regs *i2c);
988 
994 void DL_I2C_flushTargetRXFIFO(I2C_Regs *i2c);
995 
1005 void DL_I2C_transmitTargetDataBlocking(I2C_Regs *i2c, uint8_t data);
1006 
1020 bool DL_I2C_transmitTargetDataCheck(I2C_Regs *i2c, uint8_t data);
1021 
1032 uint8_t DL_I2C_receiveTargetDataBlocking(I2C_Regs *i2c);
1033 
1047 bool DL_I2C_receiveTargetDataCheck(I2C_Regs *i2c, uint8_t *buffer);
1048 
1054 __STATIC_INLINE void DL_I2C_enablePower(I2C_Regs *i2c)
1055 {
1056  i2c->GPRCM.PWREN = (I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_ENABLE);
1057 }
1058 
1064 __STATIC_INLINE void DL_I2C_disablePower(I2C_Regs *i2c)
1065 {
1066  i2c->GPRCM.PWREN = (I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_DISABLE);
1067 }
1068 
1077 __STATIC_INLINE bool DL_I2C_isPowerEnabled(I2C_Regs *i2c)
1078 {
1079  return (
1080  (i2c->GPRCM.PWREN & I2C_PWREN_ENABLE_MASK) == I2C_PWREN_ENABLE_ENABLE);
1081 }
1082 
1088 __STATIC_INLINE void DL_I2C_reset(I2C_Regs *i2c)
1089 {
1090  i2c->GPRCM.RSTCTL =
1091  (I2C_RSTCTL_KEY_UNLOCK_W | I2C_RSTCTL_RESETSTKYCLR_CLR |
1092  I2C_RSTCTL_RESETASSERT_ASSERT);
1093 }
1094 
1104 __STATIC_INLINE bool DL_I2C_isReset(I2C_Regs *i2c)
1105 {
1106  return ((i2c->GPRCM.STAT & I2C_STAT_RESETSTKY_MASK) ==
1107  I2C_STAT_RESETSTKY_RESET);
1108 }
1109 
1120 __STATIC_INLINE void DL_I2C_selectClockSource(
1121  I2C_Regs *i2c, DL_I2C_CLOCK clockSource)
1122 {
1123  DL_Common_updateReg(&i2c->CLKSEL, (uint32_t) clockSource,
1124  I2C_CLKSEL_BUSCLK_SEL_MASK | I2C_CLKSEL_MFCLK_SEL_MASK);
1125 }
1126 
1135 __STATIC_INLINE void DL_I2C_selectClockDivider(
1136  I2C_Regs *i2c, DL_I2C_CLOCK_DIVIDE clockDivider)
1137 {
1139  &i2c->CLKDIV, (uint32_t) clockDivider, I2C_CLKDIV_RATIO_MASK);
1140 }
1141 
1153 __STATIC_INLINE DL_I2C_ANALOG_GLITCH_FILTER_WIDTH
1155 {
1156  uint32_t filterWidth = i2c->GFCTL & I2C_GFCTL_AGFSEL_MASK;
1157 
1158  return (DL_I2C_ANALOG_GLITCH_FILTER_WIDTH)(filterWidth);
1159 }
1160 
1171  I2C_Regs *i2c, DL_I2C_ANALOG_GLITCH_FILTER_WIDTH filterWidth)
1172 {
1174  &i2c->GFCTL, (uint32_t) filterWidth, I2C_GFCTL_AGFSEL_MASK);
1175 }
1176 
1189 __STATIC_INLINE DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH
1191 {
1192  uint32_t filterWidth = i2c->GFCTL & I2C_GFCTL_DGFSEL_MASK;
1193 
1194  return (DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH)(filterWidth);
1195 }
1196 
1208  I2C_Regs *i2c, DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH filterWidth)
1209 {
1211  &i2c->GFCTL, (uint32_t) filterWidth, I2C_GFCTL_DGFSEL_MASK);
1212 }
1213 
1219 __STATIC_INLINE void DL_I2C_disableAnalogGlitchFilter(I2C_Regs *i2c)
1220 {
1221  i2c->GFCTL &= ~(I2C_GFCTL_AGFEN_MASK);
1222 }
1223 
1234 __STATIC_INLINE bool DL_I2C_isAnalogGlitchFilterEnabled(I2C_Regs *i2c)
1235 {
1236  return ((i2c->GFCTL & I2C_GFCTL_AGFEN_MASK) == I2C_GFCTL_AGFEN_ENABLE);
1237 }
1238 
1244 __STATIC_INLINE void DL_I2C_enableAnalogGlitchFilter(I2C_Regs *i2c)
1245 {
1246  i2c->GFCTL |= I2C_GFCTL_AGFEN_ENABLE;
1247 }
1248 
1258 __STATIC_INLINE DL_I2C_CONTROLLER_DIRECTION DL_I2C_getControllerDirection(
1259  I2C_Regs *i2c)
1260 {
1261  uint32_t direction = i2c->MASTER.MSA & I2C_MSA_DIR_MASK;
1262 
1263  return (DL_I2C_CONTROLLER_DIRECTION)(direction);
1264 }
1265 
1274 __STATIC_INLINE void DL_I2C_setControllerDirection(
1275  I2C_Regs *i2c, DL_I2C_CONTROLLER_DIRECTION direction)
1276 {
1278  &i2c->MASTER.MSA, (uint32_t) direction, I2C_MSA_DIR_MASK);
1279 }
1280 
1297 __STATIC_INLINE uint32_t DL_I2C_getTargetAddress(I2C_Regs *i2c)
1298 {
1299  return ((i2c->MASTER.MSA & I2C_MSA_SADDR_MASK) >> I2C_MSA_SADDR_OFS);
1300 }
1301 
1315 __STATIC_INLINE void DL_I2C_setTargetAddress(
1316  I2C_Regs *i2c, uint32_t targetAddress)
1317 {
1318  DL_Common_updateReg(&i2c->MASTER.MSA, (targetAddress << I2C_MSA_SADDR_OFS),
1319  I2C_MSA_SADDR_MASK);
1320 }
1321 
1332 __STATIC_INLINE DL_I2C_CONTROLLER_ADDRESSING_MODE
1334 {
1335  uint32_t mode = i2c->MASTER.MSA & I2C_MSA_MMODE_MASK;
1336 
1337  return (DL_I2C_CONTROLLER_ADDRESSING_MODE)(mode);
1338 }
1339 
1351  I2C_Regs *i2c, DL_I2C_CONTROLLER_ADDRESSING_MODE mode)
1352 {
1353  DL_Common_updateReg(&i2c->MASTER.MSA, (uint32_t) mode, I2C_MSA_MMODE_MASK);
1354 }
1355 
1361 __STATIC_INLINE void DL_I2C_disableControllerACKOverride(I2C_Regs *i2c)
1362 {
1363  i2c->MASTER.MCTR &= ~(I2C_MCTR_MACKOEN_MASK);
1364 }
1365 
1376 __STATIC_INLINE bool DL_I2C_isControllerACKOverrideEnabled(I2C_Regs *i2c)
1377 {
1378  return (
1379  (i2c->MASTER.MCTR & I2C_MCTR_MACKOEN_MASK) == I2C_MCTR_MACKOEN_ENABLE);
1380 }
1381 
1397 __STATIC_INLINE void DL_I2C_enableControllerACKOverride(I2C_Regs *i2c)
1398 {
1399  i2c->MASTER.MCTR |= I2C_MCTR_MACKOEN_ENABLE;
1400 }
1401 
1407 __STATIC_INLINE void DL_I2C_disableControllerReadOnTXEmpty(I2C_Regs *i2c)
1408 {
1409  i2c->MASTER.MCTR &= ~(I2C_MCTR_RD_ON_TXEMPTY_MASK);
1410 }
1411 
1422 __STATIC_INLINE bool DL_I2C_isControllerReadOnTXEmptyEnabled(I2C_Regs *i2c)
1423 {
1424  return ((i2c->MASTER.MCTR & I2C_MCTR_RD_ON_TXEMPTY_MASK) ==
1425  I2C_MCTR_RD_ON_TXEMPTY_ENABLE);
1426 }
1427 
1445 __STATIC_INLINE void DL_I2C_enableControllerReadOnTXEmpty(I2C_Regs *i2c)
1446 {
1447  i2c->MASTER.MCTR |= I2C_MCTR_RD_ON_TXEMPTY_ENABLE;
1448 }
1449 
1459 __STATIC_INLINE uint32_t DL_I2C_getControllerPECCountValue(I2C_Regs *i2c)
1460 {
1461  return (i2c->MASTER.CONTROLLER_I2CPECCTL &
1462  I2C_CONTROLLER_I2CPECCTL_PECCNT_MASK);
1463 }
1464 
1476  I2C_Regs *i2c, uint32_t count)
1477 {
1478  DL_Common_updateReg(&i2c->MASTER.CONTROLLER_I2CPECCTL, count,
1479  I2C_CONTROLLER_I2CPECCTL_PECCNT_MASK);
1480 }
1481 
1487 __STATIC_INLINE void DL_I2C_disableControllerPEC(I2C_Regs *i2c)
1488 {
1489  i2c->MASTER.CONTROLLER_I2CPECCTL &= ~(I2C_CONTROLLER_I2CPECCTL_PECEN_MASK);
1490 }
1491 
1503 __STATIC_INLINE bool DL_I2C_isControllerPECEnabled(I2C_Regs *i2c)
1504 {
1505  return ((i2c->MASTER.CONTROLLER_I2CPECCTL &
1506  I2C_CONTROLLER_I2CPECCTL_PECEN_MASK) ==
1507  I2C_CONTROLLER_I2CPECCTL_PECEN_ENABLE);
1508 }
1509 
1524 __STATIC_INLINE void DL_I2C_enableControllerPEC(I2C_Regs *i2c)
1525 {
1526  i2c->MASTER.CONTROLLER_I2CPECCTL |= I2C_CONTROLLER_I2CPECCTL_PECEN_ENABLE;
1527 }
1528 
1539 __STATIC_INLINE uint32_t DL_I2C_getControllerCurrentPECCount(I2C_Regs *i2c)
1540 {
1541  return (
1542  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_CHECK_MASK);
1543 }
1544 
1557 __STATIC_INLINE DL_I2C_CONTROLLER_PEC_STATUS
1559 {
1560  uint32_t status =
1561  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_CHECK_MASK;
1562 
1563  return (DL_I2C_CONTROLLER_PEC_STATUS)(status);
1564 }
1565 
1578 __STATIC_INLINE DL_I2C_CONTROLLER_PEC_CHECK_ERROR
1580 {
1581  uint32_t error =
1582  i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_ERROR_MASK;
1583 
1584  return (DL_I2C_CONTROLLER_PEC_CHECK_ERROR)(error);
1585 }
1586 
1592 __STATIC_INLINE void DL_I2C_disableControllerBurst(I2C_Regs *i2c)
1593 {
1594  i2c->MASTER.MCTR &= ~(I2C_MCTR_BURSTRUN_MASK);
1595 }
1596 
1607 __STATIC_INLINE bool DL_I2C_isControllerBurstEnabled(I2C_Regs *i2c)
1608 {
1609  return ((i2c->GFCTL & I2C_MCTR_BURSTRUN_MASK) == I2C_MCTR_BURSTRUN_ENABLE);
1610 }
1611 
1617 __STATIC_INLINE void DL_I2C_enableControllerBurst(I2C_Regs *i2c)
1618 {
1619  i2c->MASTER.MCTR |= I2C_MCTR_BURSTRUN_ENABLE;
1620 }
1621 
1627 __STATIC_INLINE void DL_I2C_disableStartCondition(I2C_Regs *i2c)
1628 {
1629  i2c->MASTER.MCTR &= ~(I2C_MCTR_START_MASK);
1630 }
1631 
1642 __STATIC_INLINE bool DL_I2C_isStartConditionEnabled(I2C_Regs *i2c)
1643 {
1644  return ((i2c->MASTER.MCTR & I2C_MCTR_START_MASK) == I2C_MCTR_START_ENABLE);
1645 }
1646 
1652 __STATIC_INLINE void DL_I2C_enableStartCondition(I2C_Regs *i2c)
1653 {
1654  i2c->MASTER.MCTR |= I2C_MCTR_START_ENABLE;
1655 }
1656 
1662 __STATIC_INLINE void DL_I2C_disableStopCondition(I2C_Regs *i2c)
1663 {
1664  i2c->MASTER.MCTR &= ~(I2C_MCTR_STOP_MASK);
1665 }
1666 
1677 __STATIC_INLINE bool DL_I2C_isStopConditionEnabled(I2C_Regs *i2c)
1678 {
1679  return ((i2c->MASTER.MCTR & I2C_MCTR_STOP_MASK) == I2C_MCTR_STOP_ENABLE);
1680 }
1681 
1687 __STATIC_INLINE void DL_I2C_enableStopCondition(I2C_Regs *i2c)
1688 {
1689  i2c->MASTER.MCTR |= I2C_MCTR_STOP_ENABLE;
1690 }
1691 
1701 __STATIC_INLINE void DL_I2C_disableControllerACK(I2C_Regs *i2c)
1702 {
1703  i2c->MASTER.MCTR &= ~(I2C_MCTR_ACK_MASK);
1704 }
1705 
1717 __STATIC_INLINE bool DL_I2C_isControllerACKEnabled(I2C_Regs *i2c)
1718 {
1719  return ((i2c->MASTER.MCTR & I2C_MCTR_ACK_MASK) == I2C_MCTR_ACK_ENABLE);
1720 }
1721 
1731 __STATIC_INLINE void DL_I2C_enableControllerACK(I2C_Regs *i2c)
1732 {
1733  i2c->MASTER.MCTR |= I2C_MCTR_ACK_MASK;
1734 }
1735 
1745 __STATIC_INLINE uint32_t DL_I2C_getTransactionLength(I2C_Regs *i2c)
1746 {
1747  return ((i2c->MASTER.MCTR & I2C_MCTR_MBLEN_MASK) >> I2C_MCTR_MBLEN_OFS);
1748 }
1749 
1757 __STATIC_INLINE void DL_I2C_setTransactionLength(
1758  I2C_Regs *i2c, uint32_t length)
1759 {
1760  DL_Common_updateReg(&i2c->MASTER.MCTR, (length << I2C_MCTR_MBLEN_OFS),
1761  I2C_MCTR_MBLEN_MASK);
1762 }
1763 
1773 __STATIC_INLINE uint32_t DL_I2C_getControllerStatus(I2C_Regs *i2c)
1774 {
1775  return (i2c->MASTER.MSR);
1776 }
1777 
1787 __STATIC_INLINE uint16_t DL_I2C_getTransactionCount(I2C_Regs *i2c)
1788 {
1789  return ((uint16_t)(
1790  (i2c->MASTER.MSR & I2C_MSR_MBCNT_MASK) >> I2C_MSR_MBCNT_OFS));
1791 }
1792 
1804 __STATIC_INLINE uint8_t DL_I2C_receiveControllerData(I2C_Regs *i2c)
1805 {
1806  return ((uint8_t)(i2c->MASTER.MRXDATA & I2C_MRXDATA_VALUE_MASK));
1807 }
1808 
1818 __STATIC_INLINE void DL_I2C_transmitControllerData(I2C_Regs *i2c, uint8_t data)
1819 {
1820  i2c->MASTER.MTXDATA = data;
1821 }
1822 
1844 __STATIC_INLINE uint8_t DL_I2C_getTimerPeriod(I2C_Regs *i2c)
1845 {
1846  return ((uint8_t)(i2c->MASTER.MTPR & I2C_MTPR_TPR_MASK));
1847 }
1848 
1868 __STATIC_INLINE void DL_I2C_setTimerPeriod(I2C_Regs *i2c, uint8_t period)
1869 {
1870  i2c->MASTER.MTPR = period;
1871 }
1872 
1878 __STATIC_INLINE void DL_I2C_disableLoopbackMode(I2C_Regs *i2c)
1879 {
1880  i2c->MASTER.MCR &= ~(I2C_MCR_LPBK_MASK);
1881 }
1882 
1893 __STATIC_INLINE bool DL_I2C_isLoopbackModeEnabled(I2C_Regs *i2c)
1894 {
1895  return ((i2c->MASTER.MCR & I2C_MCR_LPBK_MASK) == I2C_MCR_LPBK_ENABLE);
1896 }
1897 
1903 __STATIC_INLINE void DL_I2C_enableLoopbackMode(I2C_Regs *i2c)
1904 {
1905  i2c->MASTER.MCR |= I2C_MCR_LPBK_ENABLE;
1906 }
1907 
1913 __STATIC_INLINE void DL_I2C_disableMultiControllerMode(I2C_Regs *i2c)
1914 {
1915  i2c->MASTER.MCR &= ~(I2C_MCR_MMST_MASK);
1916 }
1917 
1928 __STATIC_INLINE bool DL_I2C_isMultiControllerModeEnabled(I2C_Regs *i2c)
1929 {
1930  return ((i2c->MASTER.MCR & I2C_MCR_MMST_MASK) == I2C_MCR_MMST_ENABLE);
1931 }
1932 
1942 __STATIC_INLINE void DL_I2C_enableMultiControllerMode(I2C_Regs *i2c)
1943 {
1944  i2c->MASTER.MCR |= I2C_MCR_MMST_ENABLE;
1945 }
1946 
1952 __STATIC_INLINE void DL_I2C_disableController(I2C_Regs *i2c)
1953 {
1954  i2c->MASTER.MCR &= ~(I2C_MCR_ACTIVE_MASK);
1955 }
1956 
1967 __STATIC_INLINE bool DL_I2C_isControllerEnabled(I2C_Regs *i2c)
1968 {
1969  return ((i2c->MASTER.MCR & I2C_MCR_ACTIVE_MASK) == I2C_MCR_ACTIVE_ENABLE);
1970 }
1971 
1980 __STATIC_INLINE void DL_I2C_enableController(I2C_Regs *i2c)
1981 {
1982  i2c->MASTER.MCR |= I2C_MCR_ACTIVE_ENABLE;
1983 }
1984 
1994 __STATIC_INLINE void DL_I2C_disableControllerClockStretching(I2C_Regs *i2c)
1995 {
1996  i2c->MASTER.MCR &= ~(I2C_MCR_CLKSTRETCH_MASK);
1997 }
1998 
2009 __STATIC_INLINE bool DL_I2C_isControllerClockStretchingEnabled(I2C_Regs *i2c)
2010 {
2011  return ((i2c->MASTER.MCR & I2C_MCR_CLKSTRETCH_MASK) ==
2012  I2C_MCR_CLKSTRETCH_ENABLE);
2013 }
2014 
2024 __STATIC_INLINE void DL_I2C_enableControllerClockStretching(I2C_Regs *i2c)
2025 {
2026  i2c->MASTER.MCR |= I2C_MCR_CLKSTRETCH_ENABLE;
2027 }
2028 
2038 __STATIC_INLINE DL_I2C_CONTROLLER_SCL DL_I2C_getSCLStatus(I2C_Regs *i2c)
2039 {
2040  uint32_t sclStatus = i2c->MASTER.MBMON & I2C_MBMON_SCL_MASK;
2041 
2042  return (DL_I2C_CONTROLLER_SCL)(sclStatus);
2043 }
2044 
2054 __STATIC_INLINE DL_I2C_CONTROLLER_SDA DL_I2C_getSDAStatus(I2C_Regs *i2c)
2055 {
2056  uint32_t sdaStatus = i2c->MASTER.MBMON & I2C_MBMON_SDA_MASK;
2057 
2058  return (DL_I2C_CONTROLLER_SDA)(sdaStatus);
2059 }
2060 
2070 __STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getControllerTXFIFOThreshold(
2071  I2C_Regs *i2c)
2072 {
2073  uint32_t level = i2c->MASTER.MFIFOCTL & I2C_MFIFOCTL_TXTRIG_MASK;
2074 
2075  return (DL_I2C_TX_FIFO_LEVEL)(level);
2076 }
2077 
2087  I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
2088 {
2090  &i2c->MASTER.MFIFOCTL, (uint32_t) level, I2C_MFIFOCTL_TXTRIG_MASK);
2091 }
2092 
2101 __STATIC_INLINE void DL_I2C_stopFlushControllerTXFIFO(I2C_Regs *i2c)
2102 {
2103  i2c->MASTER.MFIFOCTL &= ~(I2C_MFIFOCTL_TXFLUSH_MASK);
2104 }
2105 
2111 __STATIC_INLINE void DL_I2C_startFlushControllerTXFIFO(I2C_Regs *i2c)
2112 {
2113  i2c->MASTER.MFIFOCTL |= I2C_MFIFOCTL_TXFLUSH_MASK;
2114 }
2115 
2125 __STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getControllerRXFIFOThreshold(
2126  I2C_Regs *i2c)
2127 {
2128  uint32_t level = i2c->MASTER.MFIFOCTL & I2C_MFIFOCTL_RXTRIG_MASK;
2129 
2130  return (DL_I2C_RX_FIFO_LEVEL)(level);
2131 }
2132 
2142  I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
2143 {
2145  &i2c->MASTER.MFIFOCTL, (uint32_t) level, I2C_MFIFOCTL_RXTRIG_MASK);
2146 }
2147 
2156 __STATIC_INLINE void DL_I2C_stopFlushControllerRXFIFO(I2C_Regs *i2c)
2157 {
2158  i2c->MASTER.MFIFOCTL &= ~(I2C_MFIFOCTL_RXFLUSH_MASK);
2159 }
2160 
2166 __STATIC_INLINE void DL_I2C_startFlushControllerRXFIFO(I2C_Regs *i2c)
2167 {
2168  i2c->MASTER.MFIFOCTL |= I2C_MFIFOCTL_RXFLUSH_MASK;
2169 }
2170 
2180 __STATIC_INLINE uint32_t DL_I2C_getControllerRXFIFOCounter(I2C_Regs *i2c)
2181 {
2182  return (i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFIFOCNT_MASK);
2183 }
2184 
2194 __STATIC_INLINE uint32_t DL_I2C_getControllerTXFIFOCounter(I2C_Regs *i2c)
2195 {
2196  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) >>
2197  I2C_MFIFOSR_TXFIFOCNT_OFS);
2198 }
2199 
2210 __STATIC_INLINE bool DL_I2C_isControllerRXFIFOFlushActive(I2C_Regs *i2c)
2211 {
2212  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFLUSH_MASK) ==
2213  I2C_MFIFOSR_RXFLUSH_ACTIVE);
2214 }
2215 
2226 __STATIC_INLINE bool DL_I2C_isControllerTXFIFOFlushActive(I2C_Regs *i2c)
2227 {
2228  return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFLUSH_MASK) ==
2229  I2C_MFIFOSR_TXFLUSH_ACTIVE);
2230 }
2231 
2243 __STATIC_INLINE void DL_I2C_setTargetOwnAddress(I2C_Regs *i2c, uint32_t addr)
2244 {
2245  DL_Common_updateReg(&i2c->SLAVE.SOAR, addr, I2C_SOAR_OAR_MASK);
2246 }
2247 
2261 __STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddress(I2C_Regs *i2c)
2262 {
2263  return (i2c->SLAVE.SOAR & I2C_SOAR_OAR_MASK);
2264 }
2265 
2273 __STATIC_INLINE void DL_I2C_enableTargetOwnAddress(I2C_Regs *i2c)
2274 {
2275  i2c->SLAVE.SOAR |= I2C_SOAR_OAREN_ENABLE;
2276 }
2277 
2283 __STATIC_INLINE void DL_I2C_disableTargetOwnAddress(I2C_Regs *i2c)
2284 {
2285  i2c->SLAVE.SOAR &= ~(I2C_SOAR_OAREN_MASK);
2286 }
2287 
2298 __STATIC_INLINE bool DL_I2C_isTargetOwnAddressEnabled(I2C_Regs *i2c)
2299 {
2300  return ((i2c->SLAVE.SOAR & I2C_SOAR_OAREN_MASK) == I2C_SOAR_OAREN_ENABLE);
2301 }
2302 
2313 __STATIC_INLINE void DL_I2C_setTargetAddressingMode(
2314  I2C_Regs *i2c, DL_I2C_TARGET_ADDRESSING_MODE mode)
2315 {
2317  &i2c->SLAVE.SOAR, (uint32_t) mode, I2C_SOAR_SMODE_MASK);
2318 }
2319 
2329 __STATIC_INLINE DL_I2C_TARGET_ADDRESSING_MODE DL_I2C_getTargetAddressingMode(
2330  I2C_Regs *i2c)
2331 {
2332  uint32_t mode = i2c->SLAVE.SOAR & I2C_SOAR_SMODE_MASK;
2333 
2334  return (DL_I2C_TARGET_ADDRESSING_MODE)(mode);
2335 }
2336 
2345 __STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternate(I2C_Regs *i2c)
2346 {
2347  return (i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2_MASK);
2348 }
2349 
2357  I2C_Regs *i2c, uint32_t addr)
2358 {
2359  DL_Common_updateReg(&i2c->SLAVE.SOAR2, addr, I2C_SOAR2_OAR2_MASK);
2360 }
2361 
2372 __STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternateMask(I2C_Regs *i2c)
2373 {
2374  return ((i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2_MASK_MASK) >>
2375  I2C_SOAR2_OAR2_MASK_OFS);
2376 }
2377 
2391  I2C_Regs *i2c, uint32_t addressMask)
2392 {
2393  DL_Common_updateReg(&i2c->SLAVE.SOAR2,
2394  addressMask << I2C_SOAR2_OAR2_MASK_OFS, I2C_SOAR2_OAR2_MASK_MASK);
2395 }
2396 
2402 __STATIC_INLINE void DL_I2C_disableTargetOwnAddressAlternate(I2C_Regs *i2c)
2403 {
2404  i2c->SLAVE.SOAR2 &= ~(I2C_SOAR2_OAR2EN_MASK);
2405 }
2406 
2417 __STATIC_INLINE bool DL_I2C_isTargetOwnAddressAlternateEnabled(I2C_Regs *i2c)
2418 {
2419  return (
2420  (i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2EN_MASK) == I2C_SOAR2_OAR2EN_ENABLE);
2421 }
2422 
2428 __STATIC_INLINE void DL_I2C_enableTargetOwnAddressAlternate(I2C_Regs *i2c)
2429 {
2430  i2c->SLAVE.SOAR2 |= I2C_SOAR2_OAR2EN_ENABLE;
2431 }
2432 
2443 __STATIC_INLINE uint32_t DL_I2C_getTargetAddressMatch(I2C_Regs *i2c)
2444 {
2445  return (
2446  (i2c->SLAVE.SSR & I2C_SSR_ADDRMATCH_MASK) >> I2C_SSR_ADDRMATCH_OFS);
2447 }
2448 
2460 __STATIC_INLINE void DL_I2C_disableTargetClockStretching(I2C_Regs *i2c)
2461 {
2462  i2c->SLAVE.SCTR &= ~(I2C_SCTR_SCLKSTRETCH_MASK);
2463 }
2464 
2475 __STATIC_INLINE bool DL_I2C_isTargetClockStretchingEnabled(I2C_Regs *i2c)
2476 {
2477  return ((i2c->SLAVE.SCTR & I2C_SCTR_SCLKSTRETCH_MASK) ==
2478  I2C_SCTR_SCLKSTRETCH_ENABLE);
2479 }
2480 
2492 __STATIC_INLINE void DL_I2C_enableTargetClockStretching(I2C_Regs *i2c)
2493 {
2494  i2c->SLAVE.SCTR |= I2C_SCTR_SCLKSTRETCH_ENABLE;
2495 }
2496 
2508 __STATIC_INLINE void DL_I2C_disableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
2509 {
2510  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXEMPTY_ON_TREQ_MASK);
2511 }
2512 
2524 __STATIC_INLINE bool DL_I2C_isTargetTXEmptyOnTXRequestEnabled(I2C_Regs *i2c)
2525 {
2526  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXEMPTY_ON_TREQ_MASK) ==
2527  I2C_SCTR_TXEMPTY_ON_TREQ_ENABLE);
2528 }
2529 
2539 __STATIC_INLINE void DL_I2C_enableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
2540 {
2541  i2c->SLAVE.SCTR |= I2C_SCTR_TXEMPTY_ON_TREQ_ENABLE;
2542 }
2543 
2552 __STATIC_INLINE void DL_I2C_disableTargetTXTriggerInTXMode(I2C_Regs *i2c)
2553 {
2554  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXTRIG_TXMODE_MASK);
2555 }
2556 
2567 __STATIC_INLINE bool DL_I2C_isTargetTXTriggerInTXModeEnabled(I2C_Regs *i2c)
2568 {
2569  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXTRIG_TXMODE_MASK) ==
2570  I2C_SCTR_TXTRIG_TXMODE_ENABLE);
2571 }
2572 
2589 __STATIC_INLINE void DL_I2C_enableTargetTXTriggerInTXMode(I2C_Regs *i2c)
2590 {
2591  i2c->SLAVE.SCTR |= I2C_SCTR_TXTRIG_TXMODE_ENABLE;
2592 }
2593 
2602 __STATIC_INLINE void DL_I2C_disableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
2603 {
2604  i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXWAIT_STALE_TXFIFO_MASK);
2605 }
2606 
2621 __STATIC_INLINE bool DL_I2C_isTargetTXWaitWhenTXFIFOStaleEnabled(I2C_Regs *i2c)
2622 {
2623  return ((i2c->SLAVE.SCTR & I2C_SCTR_TXWAIT_STALE_TXFIFO_MASK) ==
2624  I2C_SCTR_TXWAIT_STALE_TXFIFO_ENABLE);
2625 }
2626 
2639 __STATIC_INLINE void DL_I2C_enableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
2640 {
2641  i2c->SLAVE.SCTR |= I2C_SCTR_TXWAIT_STALE_TXFIFO_ENABLE;
2642 }
2643 
2656 __STATIC_INLINE void DL_I2C_disableTargetRXFullOnRXRequest(I2C_Regs *i2c)
2657 {
2658  i2c->SLAVE.SCTR &= ~(I2C_SCTR_RXFULL_ON_RREQ_MASK);
2659 }
2660 
2671 __STATIC_INLINE bool DL_I2C_isTargetRXFullOnRXRequestEnabled(I2C_Regs *i2c)
2672 {
2673  return ((i2c->SLAVE.SCTR & I2C_SCTR_RXFULL_ON_RREQ_MASK) ==
2674  I2C_SCTR_RXFULL_ON_RREQ_ENABLE);
2675 }
2676 
2688 __STATIC_INLINE void DL_I2C_enableTargetRXFullOnRXRequest(I2C_Regs *i2c)
2689 {
2690  i2c->SLAVE.SCTR |= I2C_SCTR_RXFULL_ON_RREQ_ENABLE;
2691 }
2692 
2703 __STATIC_INLINE void DL_I2C_disableDefaultHostAddress(I2C_Regs *i2c)
2704 {
2705  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_DEFHOSTADR_MASK);
2706 }
2707 
2719 __STATIC_INLINE bool DL_I2C_isDefaultHostAddressEnabled(I2C_Regs *i2c)
2720 {
2721  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_DEFHOSTADR_MASK) ==
2722  I2C_SCTR_EN_DEFHOSTADR_ENABLE);
2723 }
2724 
2733 __STATIC_INLINE void DL_I2C_enableDefaultHostAddress(I2C_Regs *i2c)
2734 {
2735  i2c->SLAVE.SCTR |= I2C_SCTR_EN_DEFHOSTADR_ENABLE;
2736 }
2737 
2749 __STATIC_INLINE void DL_I2C_disableAlertResponseAddress(I2C_Regs *i2c)
2750 {
2751  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_ALRESPADR_MASK);
2752 }
2753 
2765 __STATIC_INLINE bool DL_I2C_isAlertResponseAddressEnabled(I2C_Regs *i2c)
2766 {
2767  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_ALRESPADR_MASK) ==
2768  I2C_SCTR_EN_ALRESPADR_ENABLE);
2769 }
2770 
2779 __STATIC_INLINE void DL_I2C_enableAlertResponseAddress(I2C_Regs *i2c)
2780 {
2781  i2c->SLAVE.SCTR |= I2C_SCTR_EN_ALRESPADR_ENABLE;
2782 }
2783 
2795 __STATIC_INLINE void DL_I2C_disableDefaultDeviceAddress(I2C_Regs *i2c)
2796 {
2797  i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_DEFDEVADR_MASK);
2798 }
2799 
2811 __STATIC_INLINE bool DL_I2C_isDefaultDeviceAddressEnabled(I2C_Regs *i2c)
2812 {
2813  return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_DEFDEVADR_MASK) ==
2814  I2C_SCTR_EN_DEFDEVADR_ENABLE);
2815 }
2816 
2825 __STATIC_INLINE void DL_I2C_enableDefaultDeviceAddress(I2C_Regs *i2c)
2826 {
2827  i2c->SLAVE.SCTR |= I2C_SCTR_EN_DEFDEVADR_ENABLE;
2828 }
2829 
2838 __STATIC_INLINE void DL_I2C_disableTargetWakeup(I2C_Regs *i2c)
2839 {
2840  i2c->SLAVE.SCTR &= ~(I2C_SCTR_SWUEN_MASK);
2841 }
2842 
2853 __STATIC_INLINE bool DL_I2C_isTargetWakeupEnabled(I2C_Regs *i2c)
2854 {
2855  return ((i2c->SLAVE.SCTR & I2C_SCTR_SWUEN_MASK) == I2C_SCTR_SWUEN_ENABLE);
2856 }
2857 
2868 __STATIC_INLINE void DL_I2C_enableTargetWakeup(I2C_Regs *i2c)
2869 {
2870  i2c->SLAVE.SCTR |= I2C_SCTR_SWUEN_ENABLE;
2871 }
2872 
2878 __STATIC_INLINE void DL_I2C_disableTarget(I2C_Regs *i2c)
2879 {
2880  i2c->SLAVE.SCTR &= ~(I2C_SCTR_ACTIVE_MASK);
2881 }
2882 
2893 __STATIC_INLINE bool DL_I2C_isTargetEnabled(I2C_Regs *i2c)
2894 {
2895  return (
2896  (i2c->SLAVE.SCTR & I2C_SCTR_ACTIVE_MASK) == I2C_SCTR_ACTIVE_ENABLE);
2897 }
2898 
2904 __STATIC_INLINE void DL_I2C_enableTarget(I2C_Regs *i2c)
2905 {
2906  i2c->SLAVE.SCTR |= I2C_SCTR_ACTIVE_ENABLE;
2907 }
2908 
2914 __STATIC_INLINE void DL_I2C_disableGeneralCall(I2C_Regs *i2c)
2915 {
2916  i2c->SLAVE.SCTR &= ~(I2C_SCTR_GENCALL_MASK);
2917 }
2918 
2929 __STATIC_INLINE bool DL_I2C_isGeneralCallEnabled(I2C_Regs *i2c)
2930 {
2931  return (
2932  (i2c->SLAVE.SCTR & I2C_SCTR_GENCALL_MASK) == I2C_SCTR_GENCALL_ENABLE);
2933 }
2934 
2940 __STATIC_INLINE void DL_I2C_enableGeneralCall(I2C_Regs *i2c)
2941 {
2942  i2c->SLAVE.SCTR |= I2C_SCTR_GENCALL_ENABLE;
2943 }
2944 
2954 __STATIC_INLINE uint32_t DL_I2C_getTargetStatus(I2C_Regs *i2c)
2955 {
2956  return (i2c->SLAVE.SSR);
2957 }
2958 
2970 __STATIC_INLINE uint8_t DL_I2C_receiveTargetData(I2C_Regs *i2c)
2971 {
2972  return (uint8_t)(i2c->SLAVE.SRXDATA & I2C_SRXDATA_VALUE_MASK);
2973 }
2974 
2982 __STATIC_INLINE void DL_I2C_transmitTargetData(I2C_Regs *i2c, uint8_t data)
2983 {
2984  i2c->SLAVE.STXDATA = data;
2985 }
2986 
2995 __STATIC_INLINE void DL_I2C_disableTargetACKOverride(I2C_Regs *i2c)
2996 {
2997  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_MASK);
2998 }
2999 
3010 __STATIC_INLINE bool DL_I2C_isTargetACKOverrideEnabled(I2C_Regs *i2c)
3011 {
3012  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_MASK) ==
3013  I2C_SACKCTL_ACKOEN_ENABLE);
3014 }
3015 
3027 __STATIC_INLINE void DL_I2C_enableTargetACKOverride(I2C_Regs *i2c)
3028 {
3029  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ENABLE;
3030 }
3031 
3044 __STATIC_INLINE DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE
3046 {
3047  uint32_t value = i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOVAL_MASK;
3048 
3049  return (DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE)(value);
3050 }
3051 
3065  I2C_Regs *i2c, DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE value)
3066 {
3068  &i2c->SLAVE.SACKCTL, (uint32_t) value, I2C_SACKCTL_ACKOVAL_MASK);
3069 }
3070 
3076 __STATIC_INLINE void DL_I2C_disableACKOverrideOnStart(I2C_Regs *i2c)
3077 {
3078  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_START_MASK);
3079 }
3080 
3091 __STATIC_INLINE bool DL_I2C_isACKOverrideOnStartEnabled(I2C_Regs *i2c)
3092 {
3093  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_START_MASK) ==
3094  I2C_SACKCTL_ACKOEN_ON_START_ENABLE);
3095 }
3096 
3107 __STATIC_INLINE void DL_I2C_enableACKOverrideOnStart(I2C_Regs *i2c)
3108 {
3109  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_START_ENABLE;
3110 }
3111 
3117 __STATIC_INLINE void DL_I2C_disableACKOverrideOnPECNext(I2C_Regs *i2c)
3118 {
3119  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_PECNEXT_MASK);
3120 }
3121 
3133 __STATIC_INLINE bool DL_I2C_isACKOverrideOnPECNextEnabled(I2C_Regs *i2c)
3134 {
3135  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_PECNEXT_MASK) ==
3136  I2C_SACKCTL_ACKOEN_ON_PECNEXT_ENABLE);
3137 }
3138 
3152 __STATIC_INLINE void DL_I2C_enableACKOverrideOnPECNext(I2C_Regs *i2c)
3153 {
3154  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_PECNEXT_ENABLE;
3155 }
3156 
3162 __STATIC_INLINE void DL_I2C_disableACKOverrideOnPECDone(I2C_Regs *i2c)
3163 {
3164  i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_PECDONE_MASK);
3165 }
3166 
3178 __STATIC_INLINE bool DL_I2C_isACKOverrideOnPECDoneEnabled(I2C_Regs *i2c)
3179 {
3180  return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_PECDONE_MASK) ==
3181  I2C_SACKCTL_ACKOEN_ON_PECDONE_ENABLE);
3182 }
3183 
3194 __STATIC_INLINE void DL_I2C_enableACKOverrideOnPECDone(I2C_Regs *i2c)
3195 {
3196  i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_PECDONE_ENABLE;
3197 }
3198 
3209 __STATIC_INLINE uint32_t DL_I2C_getTargetPECCountValue(I2C_Regs *i2c)
3210 {
3211  return (i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECCTL_PECCNT_MASK);
3212 }
3213 
3225 __STATIC_INLINE void DL_I2C_setTargetPECCountValue(
3226  I2C_Regs *i2c, uint32_t count)
3227 {
3229  &i2c->SLAVE.TARGET_PECCTL, count, I2C_TARGET_PECCTL_PECCNT_MASK);
3230 }
3231 
3237 __STATIC_INLINE void DL_I2C_disableTargetPEC(I2C_Regs *i2c)
3238 {
3239  i2c->SLAVE.TARGET_PECCTL &= ~(I2C_TARGET_PECCTL_PECEN_MASK);
3240 }
3241 
3253 __STATIC_INLINE bool DL_I2C_isTargetPECEnabled(I2C_Regs *i2c)
3254 {
3255  return ((i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECCTL_PECEN_MASK) ==
3256  I2C_TARGET_PECCTL_PECEN_ENABLE);
3257 }
3258 
3273 __STATIC_INLINE void DL_I2C_enableTargetPEC(I2C_Regs *i2c)
3274 {
3275  i2c->SLAVE.TARGET_PECCTL |= I2C_TARGET_PECCTL_PECEN_ENABLE;
3276 }
3277 
3288 __STATIC_INLINE uint32_t DL_I2C_getTargetCurrentPECCount(I2C_Regs *i2c)
3289 {
3290  return (i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECSR_PECBYTECNT_MASK);
3291 }
3292 
3306 __STATIC_INLINE DL_I2C_TARGET_PEC_STATUS DL_I2C_getTargetPECCheckedStatus(
3307  I2C_Regs *i2c)
3308 {
3309  uint32_t status =
3310  i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECSTS_CHECK_MASK;
3311 
3312  return (DL_I2C_TARGET_PEC_STATUS)(status);
3313 }
3314 
3327 __STATIC_INLINE DL_I2C_TARGET_PEC_CHECK_ERROR DL_I2C_getTargetPECCheckError(
3328  I2C_Regs *i2c)
3329 {
3330  uint32_t status =
3331  i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECSTS_ERROR_MASK;
3332 
3333  return (DL_I2C_TARGET_PEC_CHECK_ERROR)(status);
3334 }
3335 
3345 __STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getTargetTXFIFOThreshold(
3346  I2C_Regs *i2c)
3347 {
3348  uint32_t level = i2c->SLAVE.SFIFOCTL & I2C_SFIFOCTL_TXTRIG_MASK;
3349 
3350  return (DL_I2C_TX_FIFO_LEVEL)(level);
3351 }
3352 
3361 __STATIC_INLINE void DL_I2C_setTargetTXFIFOThreshold(
3362  I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
3363 {
3364  DL_Common_updateReg(&i2c->SLAVE.SFIFOCTL, (uint32_t) level,
3365  (uint32_t) I2C_SFIFOCTL_TXTRIG_MASK);
3366 }
3367 
3376 __STATIC_INLINE void DL_I2C_stopFlushTargetTXFIFO(I2C_Regs *i2c)
3377 {
3378  i2c->SLAVE.SFIFOCTL &= ~(I2C_SFIFOCTL_TXFLUSH_MASK);
3379 }
3380 
3386 __STATIC_INLINE void DL_I2C_startFlushTargetTXFIFO(I2C_Regs *i2c)
3387 {
3388  i2c->SLAVE.SFIFOCTL |= I2C_SFIFOCTL_TXFLUSH_MASK;
3389 }
3390 
3399 __STATIC_INLINE void DL_I2C_stopFlushTargetRXFIFO(I2C_Regs *i2c)
3400 {
3401  i2c->SLAVE.SFIFOCTL &= ~(I2C_SFIFOCTL_RXFLUSH_MASK);
3402 }
3403 
3409 __STATIC_INLINE void DL_I2C_startFlushTargetRXFIFO(I2C_Regs *i2c)
3410 {
3411  i2c->SLAVE.SFIFOCTL |= I2C_SFIFOCTL_RXFLUSH_MASK;
3412 }
3413 
3423 __STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getTargetRXFIFOThreshold(
3424  I2C_Regs *i2c)
3425 {
3426  uint32_t level = i2c->SLAVE.SFIFOCTL & I2C_SFIFOCTL_RXTRIG_MASK;
3427 
3428  return (DL_I2C_RX_FIFO_LEVEL)(level);
3429 }
3430 
3439 __STATIC_INLINE void DL_I2C_setTargetRXFIFOThreshold(
3440  I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
3441 {
3443  &i2c->SLAVE.SFIFOCTL, (uint32_t) level, I2C_SFIFOCTL_RXTRIG_MASK);
3444 }
3445 
3455 __STATIC_INLINE uint32_t DL_I2C_getTargetRXFIFOCounter(I2C_Regs *i2c)
3456 {
3457  return (i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFIFOCNT_MASK);
3458 }
3459 
3469 __STATIC_INLINE uint32_t DL_I2C_getTargetTXFIFOCounter(I2C_Regs *i2c)
3470 {
3471  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) >>
3472  I2C_SFIFOSR_TXFIFOCNT_OFS);
3473 }
3474 
3485 __STATIC_INLINE bool DL_I2C_isTargetRXFIFOFlushActive(I2C_Regs *i2c)
3486 {
3487  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFLUSH_MASK) ==
3488  I2C_SFIFOSR_RXFLUSH_ACTIVE);
3489 }
3490 
3501 __STATIC_INLINE bool DL_I2C_isTargetTXFIFOFlushActive(I2C_Regs *i2c)
3502 {
3503  return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFLUSH_MASK) ==
3504  I2C_SFIFOSR_TXFLUSH_ACTIVE);
3505 }
3506 
3515 __STATIC_INLINE void DL_I2C_enableInterrupt(
3516  I2C_Regs *i2c, uint32_t interruptMask)
3517 {
3518  i2c->CPU_INT.IMASK |= interruptMask;
3519 }
3520 
3529 __STATIC_INLINE void DL_I2C_disableInterrupt(
3530  I2C_Regs *i2c, uint32_t interruptMask)
3531 {
3532  i2c->CPU_INT.IMASK &= ~(interruptMask);
3533 }
3534 
3547 __STATIC_INLINE uint32_t DL_I2C_getEnabledInterrupts(
3548  I2C_Regs *i2c, uint32_t interruptMask)
3549 {
3550  return (i2c->CPU_INT.IMASK & interruptMask);
3551 }
3552 
3570 __STATIC_INLINE uint32_t DL_I2C_getEnabledInterruptStatus(
3571  I2C_Regs *i2c, uint32_t interruptMask)
3572 {
3573  return (i2c->CPU_INT.MIS & interruptMask);
3574 }
3575 
3591 __STATIC_INLINE uint32_t DL_I2C_getRawInterruptStatus(
3592  I2C_Regs *i2c, uint32_t interruptMask)
3593 {
3594  return (i2c->CPU_INT.RIS & interruptMask);
3595 }
3596 
3609 __STATIC_INLINE DL_I2C_IIDX DL_I2C_getPendingInterrupt(I2C_Regs *i2c)
3610 {
3611  return ((DL_I2C_IIDX) i2c->CPU_INT.IIDX);
3612 }
3613 
3622 __STATIC_INLINE void DL_I2C_clearInterruptStatus(
3623  I2C_Regs *i2c, uint32_t interruptMask)
3624 {
3625  i2c->CPU_INT.ICLR = interruptMask;
3626 }
3627 
3644 __STATIC_INLINE void DL_I2C_enableDMAEvent(
3645  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3646 {
3647  switch (index) {
3648  case DL_I2C_EVENT_ROUTE_1:
3649  i2c->DMA_TRIG1.IMASK = interrupt;
3650  break;
3651  case DL_I2C_EVENT_ROUTE_2:
3652  i2c->DMA_TRIG0.IMASK = interrupt;
3653  break;
3654  default:
3655  break;
3656  }
3657 }
3658 
3673 __STATIC_INLINE void DL_I2C_disableDMAEvent(
3674  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3675 {
3676  switch (index) {
3677  case DL_I2C_EVENT_ROUTE_1:
3678  i2c->DMA_TRIG1.IMASK &= ~(interrupt);
3679  break;
3680  case DL_I2C_EVENT_ROUTE_2:
3681  i2c->DMA_TRIG0.IMASK &= ~(interrupt);
3682  break;
3683  default:
3684  break;
3685  }
3686 }
3687 
3706 __STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEvents(
3707  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3708 {
3709  volatile uint32_t *pReg = &i2c->DMA_TRIG1.IMASK;
3710 
3711  return ((*(pReg + (uint32_t) index) & interruptMask));
3712 }
3713 
3736 __STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEventStatus(
3737  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3738 {
3739  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.MIS;
3740 
3741  return ((*(pReg + (uint32_t) index) & interruptMask));
3742 }
3743 
3762 __STATIC_INLINE uint32_t DL_I2C_getRawDMAEventStatus(
3763  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3764 {
3765  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.RIS;
3766 
3767  return ((*(pReg + (uint32_t) index) & interruptMask));
3768 }
3769 
3786 __STATIC_INLINE DL_I2C_DMA_IIDX DL_I2C_getPendingDMAEvent(
3787  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index)
3788 {
3789  const volatile uint32_t *pReg = &i2c->DMA_TRIG1.IIDX;
3790 
3791  return (DL_I2C_DMA_IIDX)((*(pReg + (uint32_t) index)));
3792 }
3793 
3805 __STATIC_INLINE void DL_I2C_clearDMAEvent(
3806  I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3807 {
3808  switch (index) {
3809  case DL_I2C_EVENT_ROUTE_1:
3810  i2c->DMA_TRIG1.ICLR |= interrupt;
3811  break;
3812  case DL_I2C_EVENT_ROUTE_2:
3813  i2c->DMA_TRIG0.ICLR |= interrupt;
3814  break;
3815  default:
3816  break;
3817  }
3818 }
3819 
3828 __STATIC_INLINE void DL_I2C_disableGlitchFilterChaining(I2C_Regs *i2c)
3829 {
3830  i2c->GFCTL &= ~(I2C_GFCTL_CHAIN_MASK);
3831 }
3832 
3843 __STATIC_INLINE bool DL_I2C_isGlitchFilterChainingEnabled(I2C_Regs *i2c)
3844 {
3845  return ((i2c->GFCTL & I2C_GFCTL_CHAIN_MASK) == I2C_GFCTL_CHAIN_ENABLE);
3846 }
3847 
3856 __STATIC_INLINE void DL_I2C_enableGlitchFilterChaining(I2C_Regs *i2c)
3857 {
3858  i2c->GFCTL |= I2C_GFCTL_CHAIN_ENABLE;
3859 }
3860 
3870 __STATIC_INLINE uint32_t DL_I2C_getTimeoutACount(I2C_Regs *i2c)
3871 {
3872  return (i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTLA_MASK);
3873 }
3874 
3891 __STATIC_INLINE void DL_I2C_setTimeoutACount(I2C_Regs *i2c, uint32_t count)
3892 {
3893  DL_Common_updateReg(&i2c->TIMEOUT_CTL, count, I2C_TIMEOUT_CTL_TCNTLA_MASK);
3894 }
3895 
3901 __STATIC_INLINE void DL_I2C_disableTimeoutA(I2C_Regs *i2c)
3902 {
3903  i2c->TIMEOUT_CTL &= ~(I2C_TIMEOUT_CTL_TCNTAEN_MASK);
3904 }
3905 
3916 __STATIC_INLINE bool DL_I2C_isTimeoutAEnabled(I2C_Regs *i2c)
3917 {
3918  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTAEN_MASK) ==
3919  I2C_TIMEOUT_CTL_TCNTAEN_ENABLE);
3920 }
3921 
3927 __STATIC_INLINE void DL_I2C_enableTimeoutA(I2C_Regs *i2c)
3928 {
3929  i2c->TIMEOUT_CTL |= I2C_TIMEOUT_CTL_TCNTAEN_ENABLE;
3930 }
3931 
3944 __STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutACounter(I2C_Regs *i2c)
3945 {
3946  return (i2c->TIMEOUT_CNT & I2C_TIMEOUT_CNT_TCNTA_MASK);
3947 }
3948 
3958 __STATIC_INLINE uint32_t DL_I2C_getTimeoutBCount(I2C_Regs *i2c)
3959 {
3960  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTLB_MASK) >>
3961  I2C_TIMEOUT_CTL_TCNTLB_OFS);
3962 }
3963 
3978 __STATIC_INLINE void DL_I2C_setTimeoutBCount(I2C_Regs *i2c, uint32_t count)
3979 {
3980  DL_Common_updateReg(&i2c->TIMEOUT_CTL,
3981  (count << I2C_TIMEOUT_CTL_TCNTLB_OFS), I2C_TIMEOUT_CTL_TCNTLB_MASK);
3982 }
3983 
3989 __STATIC_INLINE void DL_I2C_disableTimeoutB(I2C_Regs *i2c)
3990 {
3991  i2c->TIMEOUT_CTL &= ~(I2C_TIMEOUT_CTL_TCNTBEN_MASK);
3992 }
3993 
4004 __STATIC_INLINE bool DL_I2C_isTimeoutBEnabled(I2C_Regs *i2c)
4005 {
4006  return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTBEN_MASK) ==
4007  I2C_TIMEOUT_CTL_TCNTBEN_ENABLE);
4008 }
4009 
4015 __STATIC_INLINE void DL_I2C_enableTimeoutB(I2C_Regs *i2c)
4016 {
4017  i2c->TIMEOUT_CTL |= I2C_TIMEOUT_CTL_TCNTBEN_ENABLE;
4018 }
4019 
4032 __STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutBCounter(I2C_Regs *i2c)
4033 {
4034  return (i2c->TIMEOUT_CNT & I2C_TIMEOUT_CNT_TCNTB_MASK);
4035 }
4036 
4037 #ifdef __cplusplus
4038 }
4039 #endif
4040 
4041 #endif /* __MSPM0_HAS_I2C__ */
4042 
4043 #endif /* ti_dl_dl_i2c__include */
4044 
bool DL_I2C_receiveTargetDataCheck(I2C_Regs *i2c, uint8_t *buffer)
Receive target data.
__STATIC_INLINE void DL_I2C_disableController(I2C_Regs *i2c)
Disable controller.
Definition: dl_i2c.h:1952
__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:1315
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:2602
DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE
Definition: dl_i2c.h:665
__STATIC_INLINE DL_I2C_TARGET_PEC_STATUS DL_I2C_getTargetPECCheckedStatus(I2C_Regs *i2c)
Get status if SMBus/PMBus target PEC was checked in last transaction.
Definition: dl_i2c.h:3306
__STATIC_INLINE void DL_I2C_enableTargetClockStretching(I2C_Regs *i2c)
Enable target clock stretching.
Definition: dl_i2c.h:2492
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_getControllerStatus(I2C_Regs *i2c)
Get status of I2C bus controller for controller.
Definition: dl_i2c.h:1773
__STATIC_INLINE void DL_I2C_enableTimeoutB(I2C_Regs *i2c)
Enable Timeout Counter B.
Definition: dl_i2c.h:4015
Definition: dl_i2c.h:649
__STATIC_INLINE bool DL_I2C_isStartConditionEnabled(I2C_Regs *i2c)
Checks if I2C START generation is enabled.
Definition: dl_i2c.h:1642
__STATIC_INLINE void DL_I2C_enableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
Enable target TX transfer waits when stale data in TX FIFO.
Definition: dl_i2c.h:2639
__STATIC_INLINE bool DL_I2C_isLoopbackModeEnabled(I2C_Regs *i2c)
Checks if loopback mode is enabled.
Definition: dl_i2c.h:1893
Definition: dl_i2c.h:469
__STATIC_INLINE bool DL_I2C_isTargetTXWaitWhenTXFIFOStaleEnabled(I2C_Regs *i2c)
Checks if target TX transfer waits when stale data in TX FIFO is enabled.
Definition: dl_i2c.h:2621
Definition: dl_i2c.h:619
__STATIC_INLINE uint32_t DL_I2C_getEnabledInterruptStatus(I2C_Regs *i2c, uint32_t interruptMask)
Check interrupt flag of enabled I2C interrupts.
Definition: dl_i2c.h:3570
Definition: dl_i2c.h:497
__STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutACounter(I2C_Regs *i2c)
Get the current Timer Counter A value.
Definition: dl_i2c.h:3944
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:2552
Definition: dl_i2c.h:494
Definition: dl_i2c.h:485
__STATIC_INLINE void DL_I2C_startFlushControllerRXFIFO(I2C_Regs *i2c)
Start controller RX FIFO flush.
Definition: dl_i2c.h:2166
__STATIC_INLINE uint32_t DL_I2C_getTransactionLength(I2C_Regs *i2c)
Get transaction length in bytes.
Definition: dl_i2c.h:1745
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOFlushActive(I2C_Regs *i2c)
Checks if target TX FIFO flush is active.
Definition: dl_i2c.h:3501
__STATIC_INLINE void DL_I2C_disableDefaultHostAddress(I2C_Regs *i2c)
Disable SMBus/PMBus default host address of 000 1000b.
Definition: dl_i2c.h:2703
DL_I2C_TARGET_PEC_STATUS
Definition: dl_i2c.h:491
__STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEventStatus(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:3736
Definition: dl_i2c.h:603
__STATIC_INLINE bool DL_I2C_isACKOverrideOnPECNextEnabled(I2C_Regs *i2c)
Checks if target ACK override when SMBus/PMBus PEC is next byte is enabled.
Definition: dl_i2c.h:3133
__STATIC_INLINE void DL_I2C_disableGeneralCall(I2C_Regs *i2c)
Disable general call address of 000 0000b.
Definition: dl_i2c.h:2914
__STATIC_INLINE void DL_I2C_disableTimeoutB(I2C_Regs *i2c)
Disable Timeout Counter B.
Definition: dl_i2c.h:3989
Definition: dl_i2c.h:661
bool DL_I2C_transmitTargetDataCheck(I2C_Regs *i2c, uint8_t data)
Transmit target data.
__STATIC_INLINE uint32_t DL_I2C_getRawInterruptStatus(I2C_Regs *i2c, uint32_t interruptMask)
Check interrupt flag of any I2C interrupt.
Definition: dl_i2c.h:3591
__STATIC_INLINE void DL_I2C_enableACKOverrideOnStart(I2C_Regs *i2c)
Enable target ACK override on Start condition.
Definition: dl_i2c.h:3107
__STATIC_INLINE bool DL_I2C_isTargetRXFIFOFlushActive(I2C_Regs *i2c)
Checks if target RX FIFO flush is active.
Definition: dl_i2c.h:3485
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:3673
__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
uint8_t DL_I2C_receiveTargetDataBlocking(I2C_Regs *i2c)
Receive target data, waiting until receive request.
__STATIC_INLINE void DL_I2C_disableInterrupt(I2C_Regs *i2c, uint32_t interruptMask)
Disable I2C interrupts.
Definition: dl_i2c.h:3529
__STATIC_INLINE void DL_I2C_disableTargetWakeup(I2C_Regs *i2c)
Disable target wakeup.
Definition: dl_i2c.h:2838
Definition: dl_i2c.h:449
__STATIC_INLINE bool DL_I2C_isDefaultHostAddressEnabled(I2C_Regs *i2c)
Checks if SMBus/PMBus default host address of 000 1000b is enabled.
Definition: dl_i2c.h:2719
__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:1475
__STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getTargetTXFIFOThreshold(I2C_Regs *i2c)
Get target TX FIFO threshold level.
Definition: dl_i2c.h:3345
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:2111
uint16_t DL_I2C_fillControllerTXFIFO(I2C_Regs *i2c, uint8_t *buffer, uint16_t count)
Fills the controller TX FIFO with data.
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:1592
__STATIC_INLINE void DL_I2C_disableACKOverrideOnStart(I2C_Regs *i2c)
Disable target ACK override on Start Condition.
Definition: dl_i2c.h:3076
__STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getControllerTXFIFOThreshold(I2C_Regs *i2c)
Get controller TX FIFO threshold level.
Definition: dl_i2c.h:2070
__STATIC_INLINE bool DL_I2C_isControllerTXFIFOFull(I2C_Regs *i2c)
Checks if controller TX FIFO is full.
Definition: dl_i2c.h:813
__STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getTargetRXFIFOThreshold(I2C_Regs *i2c)
Get target RX FIFO threshold level.
Definition: dl_i2c.h:3423
__STATIC_INLINE void DL_I2C_disablePower(I2C_Regs *i2c)
Disables power on i2c module.
Definition: dl_i2c.h:1064
Definition: dl_i2c.h:685
__STATIC_INLINE uint8_t DL_I2C_receiveTargetData(I2C_Regs *i2c)
Get byte of data from I2C target.
Definition: dl_i2c.h:2970
void DL_I2C_flushControllerRXFIFO(I2C_Regs *i2c)
Flushes/removes all elements in the controller RX FIFO.
__STATIC_INLINE DL_I2C_CONTROLLER_ADDRESSING_MODE DL_I2C_getControllerAddressingMode(I2C_Regs *i2c)
Get controller addressing mode.
Definition: dl_i2c.h:1333
__STATIC_INLINE DL_I2C_CONTROLLER_PEC_CHECK_ERROR DL_I2C_getControllerPECCheckError(I2C_Regs *i2c)
Get the status of the controller SMBus/PMBus PEC Check error.
Definition: dl_i2c.h:1579
__STATIC_INLINE void DL_I2C_enableAlertResponseAddress(I2C_Regs *i2c)
Enable SMBus/PMBus Alert response address (ARA) of 000 1100b.
Definition: dl_i2c.h:2779
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:1652
Definition: dl_i2c.h:724
Definition: dl_i2c.h:457
__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:2982
__STATIC_INLINE void DL_I2C_disableACKOverrideOnPECDone(I2C_Regs *i2c)
Disable target ACK override when SMBus/PMBus PEC is next byte.
Definition: dl_i2c.h:3162
Definition: dl_i2c.h:587
__STATIC_INLINE void DL_I2C_setTargetOwnAddressAlternateMask(I2C_Regs *i2c, uint32_t addressMask)
Set target own address alternate mask.
Definition: dl_i2c.h:2390
Definition: dl_i2c.h:655
DL_I2C_CONTROLLER_SDA
Definition: dl_i2c.h:593
Definition: dl_i2c.h:687
__STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getControllerRXFIFOThreshold(I2C_Regs *i2c)
Get controller RX FIFO threshold level.
Definition: dl_i2c.h:2125
DL_I2C_CONTROLLER_START
Definition: dl_i2c.h:601
__STATIC_INLINE uint8_t DL_I2C_receiveControllerData(I2C_Regs *i2c)
Get byte of data from I2C controller.
Definition: dl_i2c.h:1804
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:1868
__STATIC_INLINE void DL_I2C_enableTargetOwnAddress(I2C_Regs *i2c)
Enable target own address.
Definition: dl_i2c.h:2273
__STATIC_INLINE bool DL_I2C_isControllerReadOnTXEmptyEnabled(I2C_Regs *i2c)
Checks if controller read on TX empty is enabled.
Definition: dl_i2c.h:1422
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:2940
__STATIC_INLINE void DL_I2C_enableControllerACKOverride(I2C_Regs *i2c)
Enable controller ACK override.
Definition: dl_i2c.h:1397
__STATIC_INLINE uint32_t DL_I2C_getTargetTXFIFOCounter(I2C_Regs *i2c)
Get number of bytes which can be put into TX FIFO.
Definition: dl_i2c.h:3469
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 void DL_I2C_stopFlushControllerRXFIFO(I2C_Regs *i2c)
Stop controller RX FIFO flush.
Definition: dl_i2c.h:2156
__STATIC_INLINE uint32_t DL_I2C_getTargetAddressMatch(I2C_Regs *i2c)
Get the address for which address match happened.
Definition: dl_i2c.h:2443
DL_I2C_CLOCK
Definition: dl_i2c.h:455
__STATIC_INLINE bool DL_I2C_isPowerEnabled(I2C_Regs *i2c)
Returns if power on i2c module.
Definition: dl_i2c.h:1077
__STATIC_INLINE bool DL_I2C_isTargetTXEmptyOnTXRequestEnabled(I2C_Regs *i2c)
Checks if target TX empty interrupt on transmit request is enabled.
Definition: dl_i2c.h:2524
__STATIC_INLINE bool DL_I2C_isTimeoutBEnabled(I2C_Regs *i2c)
Checks if Timeout Counter B is enabled.
Definition: dl_i2c.h:4004
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOEmpty(I2C_Regs *i2c)
Checks if target TX FIFO is empty.
Definition: dl_i2c.h:949
__STATIC_INLINE uint32_t DL_I2C_getTargetPECCountValue(I2C_Regs *i2c)
Get the target SMBus/PMBus Packet Error Checking (PEC) count value.
Definition: dl_i2c.h:3209
__STATIC_INLINE void DL_I2C_enableDefaultHostAddress(I2C_Regs *i2c)
Enable SMBus/PMBus default host address of 000 1000b.
Definition: dl_i2c.h:2733
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:2101
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:1274
Definition: dl_i2c.h:659
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:1207
__STATIC_INLINE bool DL_I2C_isAlertResponseAddressEnabled(I2C_Regs *i2c)
Checks if SMBus/PMBus Alert response address (ARA) of 000 1100b is enabled.
Definition: dl_i2c.h:2765
Definition: dl_i2c.h:735
Definition: dl_i2c.h:657
__STATIC_INLINE uint32_t DL_I2C_getControllerCurrentPECCount(I2C_Regs *i2c)
Get the current SMBus/PMBus PEC byte count of the controller state machine.
Definition: dl_i2c.h:1539
Definition: dl_i2c.h:704
DL_I2C_CONTROLLER_ADDRESSING_MODE
Definition: dl_i2c.h:553
__STATIC_INLINE uint32_t DL_I2C_getTargetAddress(I2C_Regs *i2c)
Get the address of the target being addressed when configured as an I2C controller.
Definition: dl_i2c.h:1297
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.
__STATIC_INLINE bool DL_I2C_isControllerPECEnabled(I2C_Regs *i2c)
Checks if controller SMBus/PMBus Packet Error Checking (PEC) is enabled.
Definition: dl_i2c.h:1503
__STATIC_INLINE void DL_I2C_enableControllerReadOnTXEmpty(I2C_Regs *i2c)
Enable controller read on TX empty.
Definition: dl_i2c.h:1445
Definition: dl_i2c.h:743
__STATIC_INLINE DL_I2C_CONTROLLER_SCL DL_I2C_getSCLStatus(I2C_Regs *i2c)
Get SCL signal status.
Definition: dl_i2c.h:2038
__STATIC_INLINE void DL_I2C_disableTargetClockStretching(I2C_Regs *i2c)
Disable target clock stretching.
Definition: dl_i2c.h:2460
__STATIC_INLINE bool DL_I2C_isACKOverrideOnPECDoneEnabled(I2C_Regs *i2c)
Checks if target ACK override when SMBus/PMBus PEC is next byte is enabled.
Definition: dl_i2c.h:3178
__STATIC_INLINE bool DL_I2C_isTargetWakeupEnabled(I2C_Regs *i2c)
Checks if target wakeup is enabled.
Definition: dl_i2c.h:2853
__STATIC_INLINE void DL_I2C_enableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
Enable target TX empty interrupt on transmit request.
Definition: dl_i2c.h:2539
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:3117
__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:2086
__STATIC_INLINE bool DL_I2C_isControllerBurstEnabled(I2C_Regs *i2c)
Checks if I2C controller burst mode is enabled.
Definition: dl_i2c.h:1607
__STATIC_INLINE bool DL_I2C_isTargetClockStretchingEnabled(I2C_Regs *i2c)
Checks if target clock stretching is enabled.
Definition: dl_i2c.h:2475
__STATIC_INLINE void DL_I2C_enableTarget(I2C_Regs *i2c)
Enable usage of target functionality.
Definition: dl_i2c.h:2904
__STATIC_INLINE void DL_I2C_selectClockDivider(I2C_Regs *i2c, DL_I2C_CLOCK_DIVIDE clockDivider)
Set Clock Divider.
Definition: dl_i2c.h:1135
__STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternateMask(I2C_Regs *i2c)
Get target own address alternate mask.
Definition: dl_i2c.h:2372
__STATIC_INLINE bool DL_I2C_isGlitchFilterChainingEnabled(I2C_Regs *i2c)
Checks if analog and digital glitch filter chaining is enabled.
Definition: dl_i2c.h:3843
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:3194
__STATIC_INLINE void DL_I2C_setTransactionLength(I2C_Regs *i2c, uint32_t length)
Set transaction length in bytes.
Definition: dl_i2c.h:1757
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:3828
__STATIC_INLINE void DL_I2C_enableController(I2C_Regs *i2c)
Enable controller.
Definition: dl_i2c.h:1980
__STATIC_INLINE uint32_t DL_I2C_getControllerPECCountValue(I2C_Regs *i2c)
Get the SMBus/PMBus Packet Error Checking (PEC) count value.
Definition: dl_i2c.h:1459
__STATIC_INLINE void DL_I2C_setTargetOwnAddressAlternate(I2C_Regs *i2c, uint32_t addr)
Set target own address alternate.
Definition: dl_i2c.h:2356
Definition: dl_i2c.h:605
__STATIC_INLINE DL_I2C_IIDX DL_I2C_getPendingInterrupt(I2C_Regs *i2c)
Get highest priority pending I2C interrupt.
Definition: dl_i2c.h:3609
Definition: dl_i2c.h:467
__STATIC_INLINE bool DL_I2C_isTargetPECEnabled(I2C_Regs *i2c)
Checks if target SMBus/PMBus Packet Error Checking (PEC) is enabled.
Definition: dl_i2c.h:3253
__STATIC_INLINE void DL_I2C_setTimeoutACount(I2C_Regs *i2c, uint32_t count)
Set the Timeout Counter A value.
Definition: dl_i2c.h:3891
__STATIC_INLINE uint32_t DL_I2C_getRawDMAEventStatus(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:3762
__STATIC_INLINE bool DL_I2C_isControllerACKOverrideEnabled(I2C_Regs *i2c)
Checks if controller ACK override is enabled.
Definition: dl_i2c.h:1376
__STATIC_INLINE uint32_t DL_I2C_getTargetStatus(I2C_Regs *i2c)
Get status of I2C bus controller for target.
Definition: dl_i2c.h:2954
__STATIC_INLINE bool DL_I2C_isTargetOwnAddressAlternateEnabled(I2C_Regs *i2c)
Checks if target own address alternate is enabled.
Definition: dl_i2c.h:2417
__STATIC_INLINE void DL_I2C_disableStartCondition(I2C_Regs *i2c)
Disable I2C START generation.
Definition: dl_i2c.h:1627
__STATIC_INLINE void DL_I2C_setTargetAddressingMode(I2C_Regs *i2c, DL_I2C_TARGET_ADDRESSING_MODE mode)
Set target addressing mode.
Definition: dl_i2c.h:2313
Definition: dl_i2c.h:741
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:3439
Definition: dl_i2c.h:549
__STATIC_INLINE bool DL_I2C_isMultiControllerModeEnabled(I2C_Regs *i2c)
Checks if multicontroller mode is enabled.
Definition: dl_i2c.h:1928
__STATIC_INLINE void DL_I2C_reset(I2C_Regs *i2c)
Resets i2c peripheral.
Definition: dl_i2c.h:1088
__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:3064
__STATIC_INLINE void DL_I2C_disableMultiControllerMode(I2C_Regs *i2c)
Disable multicontroller mode.
Definition: dl_i2c.h:1913
__STATIC_INLINE void DL_I2C_stopFlushTargetTXFIFO(I2C_Regs *i2c)
Stop target TX FIFO flush.
Definition: dl_i2c.h:3376
__STATIC_INLINE void DL_I2C_enableMultiControllerMode(I2C_Regs *i2c)
Enable multicontroller mode.
Definition: dl_i2c.h:1942
__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_isTargetRXFIFOEmpty(I2C_Regs *i2c)
Checks if target RX FIFO is empty.
Definition: dl_i2c.h:965
__STATIC_INLINE void DL_I2C_enableTimeoutA(I2C_Regs *i2c)
Enable Timeout Counter A.
Definition: dl_i2c.h:3927
__STATIC_INLINE bool DL_I2C_isControllerTXFIFOFlushActive(I2C_Regs *i2c)
Checks if controller TX FIFO flush is active.
Definition: dl_i2c.h:2226
__STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutBCounter(I2C_Regs *i2c)
Get the current Timer Counter B value.
Definition: dl_i2c.h:4032
DL_I2C_CONTROLLER_PEC_STATUS
Definition: dl_i2c.h:561
__STATIC_INLINE bool DL_I2C_isTargetEnabled(I2C_Regs *i2c)
Checks if target functionality is enabled.
Definition: dl_i2c.h:2893
__STATIC_INLINE void DL_I2C_enablePower(I2C_Regs *i2c)
Enables power on I2C module.
Definition: dl_i2c.h:1054
__STATIC_INLINE uint32_t DL_I2C_getTimeoutBCount(I2C_Regs *i2c)
Get the Timeout Counter B value.
Definition: dl_i2c.h:3958
Definition: dl_i2c.h:728
__STATIC_INLINE DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE DL_I2C_getTargetACKOverrideValue(I2C_Regs *i2c)
Get target acknowledge override value.
Definition: dl_i2c.h:3045
Definition: dl_i2c.h:691
__STATIC_INLINE void DL_I2C_disableLoopbackMode(I2C_Regs *i2c)
Disable loopback mode.
Definition: dl_i2c.h:1878
__STATIC_INLINE DL_I2C_DMA_IIDX DL_I2C_getPendingDMAEvent(I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index)
Get highest priority pending I2C interrupt for DMA event.
Definition: dl_i2c.h:3786
DL_I2C_CONTROLLER_PEC_CHECK_ERROR
Definition: dl_i2c.h:573
__STATIC_INLINE uint32_t DL_I2C_getEnabledInterrupts(I2C_Regs *i2c, uint32_t interruptMask)
Check which I2C interrupts are enabled.
Definition: dl_i2c.h:3547
Definition: dl_i2c.h:693
__STATIC_INLINE bool DL_I2C_isGeneralCallEnabled(I2C_Regs *i2c)
Checks if general call address of 000 0000b is enabled.
Definition: dl_i2c.h:2929
Definition: dl_i2c.h:679
DL_I2C_CONTROLLER_DIRECTION
Definition: dl_i2c.h:545
__STATIC_INLINE DL_I2C_TARGET_ADDRESSING_MODE DL_I2C_getTargetAddressingMode(I2C_Regs *i2c)
Get target addressing mode.
Definition: dl_i2c.h:2329
__STATIC_INLINE bool DL_I2C_isTargetOwnAddressEnabled(I2C_Regs *i2c)
Checks if target own address is enabled.
Definition: dl_i2c.h:2298
__STATIC_INLINE void DL_I2C_enableLoopbackMode(I2C_Regs *i2c)
Enable loopback mode.
Definition: dl_i2c.h:1903
Configuration struct for DL_I2C_setClockConfig.
Definition: dl_i2c.h:750
__STATIC_INLINE void DL_I2C_enableGlitchFilterChaining(I2C_Regs *i2c)
Enable analog and digitial glitch filter chaining.
Definition: dl_i2c.h:3856
__STATIC_INLINE void DL_I2C_clearInterruptStatus(I2C_Regs *i2c, uint32_t interruptMask)
Clear pending I2C interrupts.
Definition: dl_i2c.h:3622
__STATIC_INLINE bool DL_I2C_isTargetTXFIFOFull(I2C_Regs *i2c)
Checks if target TX FIFO is full.
Definition: dl_i2c.h:933
__STATIC_INLINE void DL_I2C_disableTargetOwnAddressAlternate(I2C_Regs *i2c)
Disable usage of target own address alternate.
Definition: dl_i2c.h:2402
__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:3225
__STATIC_INLINE void DL_I2C_disableControllerACKOverride(I2C_Regs *i2c)
Disable controller ACK override.
Definition: dl_i2c.h:1361
__STATIC_INLINE void DL_I2C_stopFlushTargetRXFIFO(I2C_Regs *i2c)
Stop target RX FIFO flush.
Definition: dl_i2c.h:3399
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:2795
Definition: dl_i2c.h:722
__STATIC_INLINE bool DL_I2C_isACKOverrideOnStartEnabled(I2C_Regs *i2c)
Checks if target ACK override on Start condition is enabled.
Definition: dl_i2c.h:3091
__STATIC_INLINE bool DL_I2C_isTimeoutAEnabled(I2C_Regs *i2c)
Checks if Timeout Counter A is enabled.
Definition: dl_i2c.h:3916
Definition: dl_i2c.h:621
__STATIC_INLINE void DL_I2C_startFlushTargetTXFIFO(I2C_Regs *i2c)
Start target TX FIFO flush.
Definition: dl_i2c.h:3386
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:3361
__STATIC_INLINE bool DL_I2C_isAnalogGlitchFilterEnabled(I2C_Regs *i2c)
Checks if analog glitch suppression is enabled.
Definition: dl_i2c.h:1234
DL_I2C_DMA_IIDX
Definition: dl_i2c.h:433
void DL_I2C_setClockConfig(I2C_Regs *i2c, DL_I2C_ClockConfig *config)
Configure I2C source clock.
__STATIC_INLINE void DL_I2C_disableControllerACK(I2C_Regs *i2c)
Disable I2C controller data acknowledge (ACK or NACK)
Definition: dl_i2c.h:1701
__STATIC_INLINE void DL_I2C_enableControllerClockStretching(I2C_Regs *i2c)
Enable controller clock stretching.
Definition: dl_i2c.h:2024
void DL_I2C_flushTargetTXFIFO(I2C_Regs *i2c)
Flushes/removes all elements in the target TX FIFO.
Definition: dl_i2c.h:730
__STATIC_INLINE DL_I2C_TARGET_PEC_CHECK_ERROR DL_I2C_getTargetPECCheckError(I2C_Regs *i2c)
Get status if SMBus/PMBus target PEC had an error.
Definition: dl_i2c.h:3327
DL_I2C_CONTROLLER_STOP
Definition: dl_i2c.h:609
__STATIC_INLINE bool DL_I2C_isTargetTXTriggerInTXModeEnabled(I2C_Regs *i2c)
Checks if target TX trigger in TX mode is enabled.
Definition: dl_i2c.h:2567
__STATIC_INLINE void DL_I2C_disableTargetOwnAddress(I2C_Regs *i2c)
Disable target own address.
Definition: dl_i2c.h:2283
__STATIC_INLINE bool DL_I2C_isTargetRXFullOnRXRequestEnabled(I2C_Regs *i2c)
Checks if target RX full interrupt on receive request is enabled.
Definition: dl_i2c.h:2671
__STATIC_INLINE bool DL_I2C_isControllerRXFIFOEmpty(I2C_Regs *i2c)
Checks if controller RX FIFO is empty.
Definition: dl_i2c.h:845
Definition: dl_i2c.h:451
__STATIC_INLINE void DL_I2C_setTimeoutBCount(I2C_Regs *i2c, uint32_t count)
Set the Timeout Counter B value.
Definition: dl_i2c.h:3978
__STATIC_INLINE void DL_I2C_disableControllerReadOnTXEmpty(I2C_Regs *i2c)
Disable controller read on TX empty.
Definition: dl_i2c.h:1407
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:1487
__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:3644
__STATIC_INLINE bool DL_I2C_isControllerRXFIFOFlushActive(I2C_Regs *i2c)
Checks if controller RX FIFO flush is active.
Definition: dl_i2c.h:2210
Definition: dl_i2c.h:627
__STATIC_INLINE uint16_t DL_I2C_getTransactionCount(I2C_Regs *i2c)
Get transaction count in bytes.
Definition: dl_i2c.h:1787
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:2825
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:1524
__STATIC_INLINE void DL_I2C_disableStopCondition(I2C_Regs *i2c)
Disable I2C STOP generation.
Definition: dl_i2c.h:1662
Definition: dl_i2c.h:479
__STATIC_INLINE uint8_t DL_I2C_getTimerPeriod(I2C_Regs *i2c)
Get timer period This field is used in the equation to configure SCL_PERIOD:
Definition: dl_i2c.h:1844
__STATIC_INLINE DL_I2C_CONTROLLER_DIRECTION DL_I2C_getControllerDirection(I2C_Regs *i2c)
Get direction of next controller operation.
Definition: dl_i2c.h:1258
__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:1350
__STATIC_INLINE void DL_I2C_enableAnalogGlitchFilter(I2C_Regs *i2c)
Enable Analog Glitch Suppression.
Definition: dl_i2c.h:1244
Definition: dl_i2c.h:677
__STATIC_INLINE bool DL_I2C_isControllerACKEnabled(I2C_Regs *i2c)
Checks if I2C controller data acknowledge (ACK or NACK) is enabled.
Definition: dl_i2c.h:1717
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:3706
__STATIC_INLINE bool DL_I2C_isTargetACKOverrideEnabled(I2C_Regs *i2c)
Checks if target ACK override is enabled.
Definition: dl_i2c.h:3010
__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:1818
__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:1170
__STATIC_INLINE bool DL_I2C_isStopConditionEnabled(I2C_Regs *i2c)
Checks if I2C STOP generation is enabled.
Definition: dl_i2c.h:1677
__STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternate(I2C_Regs *i2c)
Get target own address alternate.
Definition: dl_i2c.h:2345
__STATIC_INLINE void DL_I2C_disableTarget(I2C_Regs *i2c)
Disable target functionality.
Definition: dl_i2c.h:2878
__STATIC_INLINE void DL_I2C_disableAnalogGlitchFilter(I2C_Regs *i2c)
Disable Analog Glitch Suppression.
Definition: dl_i2c.h:1219
__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:3805
__STATIC_INLINE DL_I2C_CONTROLLER_SDA DL_I2C_getSDAStatus(I2C_Regs *i2c)
Get SDA signal status.
Definition: dl_i2c.h:2054
void DL_I2C_getClockConfig(I2C_Regs *i2c, DL_I2C_ClockConfig *config)
Get I2C source clock configuration.
__STATIC_INLINE void DL_I2C_enableControllerACK(I2C_Regs *i2c)
Enable I2C controller data acknowledge (ACK or NACK)
Definition: dl_i2c.h:1731
__STATIC_INLINE void DL_I2C_disableControllerClockStretching(I2C_Regs *i2c)
Disable controller clock stretching.
Definition: dl_i2c.h:1994
__STATIC_INLINE void DL_I2C_enableInterrupt(I2C_Regs *i2c, uint32_t interruptMask)
Enable I2C interrupts.
Definition: dl_i2c.h:3515
__STATIC_INLINE DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH DL_I2C_getDigitalGlitchFilterPulseWidth(I2C_Regs *i2c)
Get Digital Glitch Suppression Pulse Width.
Definition: dl_i2c.h:1190
__STATIC_INLINE uint32_t DL_I2C_getTargetRXFIFOCounter(I2C_Regs *i2c)
Get number of bytes which can be read from RX FIFO.
Definition: dl_i2c.h:3455
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:3152
Definition: dl_i2c.h:717
__STATIC_INLINE uint32_t DL_I2C_getControllerTXFIFOCounter(I2C_Regs *i2c)
Get number of bytes which can be put into TX FIFO.
Definition: dl_i2c.h:2194
__STATIC_INLINE void DL_I2C_enableTargetWakeup(I2C_Regs *i2c)
Enable target wakeup.
Definition: dl_i2c.h:2868
__STATIC_INLINE DL_I2C_ANALOG_GLITCH_FILTER_WIDTH DL_I2C_getAnalogGlitchFilterPulseWidth(I2C_Regs *i2c)
Get Analog Glitch Suppression Pulse Width.
Definition: dl_i2c.h:1154
__STATIC_INLINE void DL_I2C_disableTimeoutA(I2C_Regs *i2c)
Disable Timeout Counter A.
Definition: dl_i2c.h:3901
__STATIC_INLINE void DL_I2C_selectClockSource(I2C_Regs *i2c, DL_I2C_CLOCK clockSource)
Set Clock Source.
Definition: dl_i2c.h:1120
Definition: dl_i2c.h:564
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:3273
__STATIC_INLINE void DL_I2C_enableTargetACKOverride(I2C_Regs *i2c)
Enable target ACK override.
Definition: dl_i2c.h:3027
Definition: dl_i2c.h:459
__STATIC_INLINE uint32_t DL_I2C_getControllerRXFIFOCounter(I2C_Regs *i2c)
Get number of bytes which can be read from RX FIFO.
Definition: dl_i2c.h:2180
__STATIC_INLINE void DL_I2C_enableTargetRXFullOnRXRequest(I2C_Regs *i2c)
Enable target RX full interrupt on receive request.
Definition: dl_i2c.h:2688
__STATIC_INLINE void DL_I2C_enableTargetTXTriggerInTXMode(I2C_Regs *i2c)
Enable TX trigger when target is in TX mode.
Definition: dl_i2c.h:2589
__STATIC_INLINE void DL_I2C_setTargetOwnAddress(I2C_Regs *i2c, uint32_t addr)
Set target own address.
Definition: dl_i2c.h:2243
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 bool DL_I2C_isControllerTXFIFOEmpty(I2C_Regs *i2c)
Checks if controller TX FIFO is empty.
Definition: dl_i2c.h:829
__STATIC_INLINE bool DL_I2C_isReset(I2C_Regs *i2c)
Returns if i2c peripheral was reset.
Definition: dl_i2c.h:1104
__STATIC_INLINE void DL_I2C_enableTargetOwnAddressAlternate(I2C_Regs *i2c)
Enable usage of target own address alternate.
Definition: dl_i2c.h:2428
DL_I2C_TX_FIFO_LEVEL
Definition: dl_i2c.h:625
Definition: dl_i2c.h:689
__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:2141
__STATIC_INLINE bool DL_I2C_isControllerEnabled(I2C_Regs *i2c)
Checks if controller is enabled.
Definition: dl_i2c.h:1967
Definition: dl_i2c.h:713
DL_I2C_CLOCK clockSel
Definition: dl_i2c.h:752
__STATIC_INLINE bool DL_I2C_isControllerClockStretchingEnabled(I2C_Regs *i2c)
Checks if controller clock stretching is enabled.
Definition: dl_i2c.h:2009
Definition: dl_i2c.h:547
Definition: dl_i2c.h:706
__STATIC_INLINE void DL_I2C_enableControllerBurst(I2C_Regs *i2c)
Enable I2C controller burst mode.
Definition: dl_i2c.h:1617
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:1687
__STATIC_INLINE void DL_I2C_disableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
Disable target TX empty interrupt on transmit request.
Definition: dl_i2c.h:2508
__STATIC_INLINE void DL_I2C_disableTargetRXFullOnRXRequest(I2C_Regs *i2c)
Disable target RX full interrupt on receive request.
Definition: dl_i2c.h:2656
Definition: dl_i2c.h:631
__STATIC_INLINE void DL_I2C_disableTargetACKOverride(I2C_Regs *i2c)
Disable target ACK override.
Definition: dl_i2c.h:2995
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_isDefaultDeviceAddressEnabled(I2C_Regs *i2c)
Checks SMBus/PMBus default device address of 110 0001b is enabled.
Definition: dl_i2c.h:2811
__STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddress(I2C_Regs *i2c)
Get target own address.
Definition: dl_i2c.h:2261
Definition: dl_i2c.h:611
Definition: dl_i2c.h:473
uint8_t DL_I2C_fillTargetTXFIFO(I2C_Regs *i2c, uint8_t *buffer, uint8_t count)
Fills the target TX FIFO with data.
__STATIC_INLINE uint32_t DL_I2C_getTargetCurrentPECCount(I2C_Regs *i2c)
Get the current SMBus/PMBus PEC byte count of the Target state machine.
Definition: dl_i2c.h:3288
__STATIC_INLINE DL_I2C_CONTROLLER_PEC_STATUS DL_I2C_getControllerPECCheckedStatus(I2C_Regs *i2c)
If controller SMBus/PMBus PEC was checked in last transaction.
Definition: dl_i2c.h:1558
__STATIC_INLINE uint32_t DL_I2C_getTimeoutACount(I2C_Regs *i2c)
Get the Timeout Counter A value.
Definition: dl_i2c.h:3870
__STATIC_INLINE void DL_I2C_startFlushTargetRXFIFO(I2C_Regs *i2c)
Start target RX FIFO flush.
Definition: dl_i2c.h:3409
__STATIC_INLINE void DL_I2C_disableTargetPEC(I2C_Regs *i2c)
Disable target SMBus/PMBus Packet Error Checking (PEC)
Definition: dl_i2c.h:3237
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:2749
© Copyright 1995-2024, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale