51 #ifndef ti_dl_dl_i2c__include 52 #define ti_dl_dl_i2c__include 57 #include <ti/devices/msp/msp.h> 60 #ifdef __MSPM0_HAS_I2C__ 74 #define DL_I2C_TX_FIFO_COUNT_MAXIMUM ((uint32_t)I2C_SYS_FENTRIES << 8) 82 #define DL_I2C_RX_FIFO_COUNT_MAXIMUM ((uint32_t)I2C_SYS_FENTRIES) 94 #define DL_I2C_CONTROLLER_STATUS_BUSY (I2C_MSR_BUSY_MASK) 102 #define DL_I2C_CONTROLLER_STATUS_ERROR (I2C_MSR_ERR_MASK) 107 #define DL_I2C_CONTROLLER_STATUS_ADDR_ACK (I2C_MSR_ADRACK_MASK) 112 #define DL_I2C_CONTROLLER_STATUS_DATA_ACK (I2C_MSR_DATACK_MASK) 117 #define DL_I2C_CONTROLLER_STATUS_ARBITRATION_LOST (I2C_MSR_ARBLST_MASK) 122 #define DL_I2C_CONTROLLER_STATUS_IDLE (I2C_MSR_IDLE_MASK) 129 #define DL_I2C_CONTROLLER_STATUS_BUSY_BUS (I2C_MSR_BUSBSY_MASK) 141 #define DL_I2C_TARGET_STATUS_ADDRESS_MATCH (I2C_SSR_ADDRMATCH_MASK) 150 #define DL_I2C_TARGET_STATUS_STALE_TX_FIFO (I2C_SSR_STALE_TXFIFO_MASK) 160 #define DL_I2C_TARGET_STATUS_TX_MODE (I2C_SSR_TXMODE_MASK) 169 #define DL_I2C_TARGET_STATUS_BUS_BUSY (I2C_SSR_BUSBSY_MASK) 179 #define DL_I2C_TARGET_STATUS_RX_MODE (I2C_SSR_RXMODE_MASK) 188 #define DL_I2C_TARGET_STATUS_QUICK_COMMAND_READ_WRITE (I2C_SSR_QCMDRW_MASK) 196 #define DL_I2C_TARGET_STATUS_QUICK_COMMAND_STATUS (I2C_SSR_QCMDST_MASK) 201 #define DL_I2C_TARGET_STATUS_OWN_ADDR_ALTERNATE_MATCHED (I2C_SSR_OAR2SEL_MASK) 206 #define DL_I2C_TARGET_STATUS_TRANSMIT_REQUEST (I2C_SSR_TREQ_MASK) 211 #define DL_I2C_TARGET_STATUS_RECEIVE_REQUEST (I2C_SSR_RREQ_MASK) 221 #define DL_I2C_INTERRUPT_CONTROLLER_RX_DONE (I2C_CPU_INT_IMASK_MRXDONE_SET) 226 #define DL_I2C_INTERRUPT_CONTROLLER_TX_DONE (I2C_CPU_INT_IMASK_MTXDONE_SET) 231 #define DL_I2C_INTERRUPT_CONTROLLER_RXFIFO_TRIGGER \ 232 (I2C_CPU_INT_IMASK_MRXFIFOTRG_SET) 237 #define DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER \ 238 (I2C_CPU_INT_IMASK_MTXFIFOTRG_SET) 243 #define DL_I2C_INTERRUPT_CONTROLLER_RXFIFO_FULL \ 244 (I2C_CPU_INT_IMASK_MRXFIFOFULL_SET) 249 #define DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_EMPTY \ 250 (I2C_CPU_INT_IMASK_MTXEMPTY_SET) 255 #define DL_I2C_INTERRUPT_CONTROLLER_NACK (I2C_CPU_INT_IMASK_MNACK_SET) 260 #define DL_I2C_INTERRUPT_CONTROLLER_START (I2C_CPU_INT_IMASK_MSTART_SET) 265 #define DL_I2C_INTERRUPT_CONTROLLER_STOP (I2C_CPU_INT_IMASK_MSTOP_SET) 270 #define DL_I2C_INTERRUPT_CONTROLLER_ARBITRATION_LOST \ 271 (I2C_CPU_INT_IMASK_MARBLOST_SET) 276 #define DL_I2C_INTERRUPT_CONTROLLER_EVENT1_DMA_DONE \ 277 (I2C_CPU_INT_IMASK_MDMA_DONE_TX_SET) 282 #define DL_I2C_INTERRUPT_CONTROLLER_EVENT2_DMA_DONE \ 283 (I2C_CPU_INT_IMASK_MDMA_DONE_RX_SET) 289 #define DL_I2C_INTERRUPT_CONTROLLER_PEC_RX_ERROR \ 290 (I2C_CPU_INT_IMASK_MPEC_RX_ERR_SET) 296 #define DL_I2C_INTERRUPT_TARGET_RX_DONE (I2C_CPU_INT_IMASK_SRXDONE_SET) 301 #define DL_I2C_INTERRUPT_TARGET_TX_DONE (I2C_CPU_INT_IMASK_STXDONE_SET) 306 #define DL_I2C_INTERRUPT_TARGET_RXFIFO_TRIGGER \ 307 (I2C_CPU_INT_IMASK_SRXFIFOTRG_SET) 312 #define DL_I2C_INTERRUPT_TARGET_TXFIFO_TRIGGER \ 313 (I2C_CPU_INT_IMASK_STXFIFOTRG_SET) 318 #define DL_I2C_INTERRUPT_TARGET_RXFIFO_FULL \ 319 (I2C_CPU_INT_IMASK_SRXFIFOFULL_SET) 325 #define DL_I2C_INTERRUPT_TARGET_TXFIFO_EMPTY \ 326 (I2C_CPU_INT_IMASK_STXEMPTY_SET) 331 #define DL_I2C_INTERRUPT_TARGET_START \ 332 (I2C_CPU_INT_IMASK_SSTART_SET) 337 #define DL_I2C_INTERRUPT_TARGET_STOP (I2C_CPU_INT_IMASK_SSTOP_SET) 342 #define DL_I2C_INTERRUPT_TARGET_GENERAL_CALL \ 343 (I2C_CPU_INT_IMASK_SGENCALL_SET) 348 #define DL_I2C_INTERRUPT_TARGET_EVENT1_DMA_DONE \ 349 (I2C_CPU_INT_IMASK_SDMA_DONE_TX_SET) 354 #define DL_I2C_INTERRUPT_TARGET_EVENT2_DMA_DONE \ 355 (I2C_CPU_INT_IMASK_SDMA_DONE_RX_SET) 361 #define DL_I2C_INTERRUPT_TARGET_PEC_RX_ERROR \ 362 (I2C_CPU_INT_IMASK_SPEC_RX_ERR_SET) 367 #define DL_I2C_INTERRUPT_TARGET_TXFIFO_UNDERFLOW \ 368 (I2C_CPU_INT_IMASK_STX_UNFL_SET) 373 #define DL_I2C_INTERRUPT_TARGET_RXFIFO_OVERFLOW \ 374 (I2C_CPU_INT_IMASK_SRX_OVFL_SET) 379 #define DL_I2C_INTERRUPT_TARGET_ARBITRATION_LOST \ 380 (I2C_CPU_INT_IMASK_SARBLOST_SET) 386 #define DL_I2C_TARGET_INTERRUPT_OVERFLOW (I2C_CPU_INT_IMASK_INTR_OVFL_SET) 391 #define DL_I2C_INTERRUPT_TIMEOUT_A (I2C_CPU_INT_IMASK_TIMEOUTA_SET) 396 #define DL_I2C_INTERRUPT_TIMEOUT_B (I2C_CPU_INT_IMASK_TIMEOUTB_SET) 407 #define DL_I2C_DMA_INTERRUPT_TARGET_TXFIFO_TRIGGER \ 408 (I2C_DMA_TRIG1_IMASK_STXFIFOTRG_SET) 413 #define DL_I2C_DMA_INTERRUPT_TARGET_RXFIFO_TRIGGER \ 414 (I2C_DMA_TRIG1_IMASK_SRXFIFOTRG_SET) 419 #define DL_I2C_DMA_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER \ 420 (I2C_DMA_TRIG1_IMASK_MTXFIFOTRG_SET) 425 #define DL_I2C_DMA_INTERRUPT_CONTROLLER_RXFIFO_TRIGGER \ 426 (I2C_DMA_TRIG1_IMASK_MRXFIFOTRG_SET) 433 #define I2C_getTargetOwnAddressAlternateMask DL_I2C_getTargetOwnAddressAlternateMask 440 DL_I2C_DMA_IIDX_TARGET_TXFIFO_TRIGGER = I2C_DMA_TRIG1_IIDX_STAT_MTXFIFOTRG,
442 DL_I2C_DMA_IIDX_TARGET_RXFIFO_TRIGGER = I2C_DMA_TRIG1_IIDX_STAT_MRXFIFOTRG,
444 DL_I2C_DMA_IIDX_CONTROLLER_TXFIFO_TRIGGER =
445 I2C_DMA_TRIG1_IIDX_STAT_STXFIFOTRG,
447 DL_I2C_DMA_IIDX_CONTROLLER_RXFIFO_TRIGGER =
448 I2C_DMA_TRIG1_IIDX_STAT_SRXFIFOTRG
454 DL_I2C_EVENT_ROUTE_1 = 0,
456 DL_I2C_EVENT_ROUTE_2 = 12
457 } DL_I2C_EVENT_ROUTE;
462 DL_I2C_CLOCK_BUSCLK = I2C_CLKSEL_BUSCLK_SEL_ENABLE,
464 DL_I2C_CLOCK_MFCLK = I2C_CLKSEL_MFCLK_SEL_ENABLE,
470 DL_I2C_CLOCK_DIVIDE_1 = I2C_CLKDIV_RATIO_DIV_BY_1,
472 DL_I2C_CLOCK_DIVIDE_2 = I2C_CLKDIV_RATIO_DIV_BY_2,
474 DL_I2C_CLOCK_DIVIDE_3 = I2C_CLKDIV_RATIO_DIV_BY_3,
476 DL_I2C_CLOCK_DIVIDE_4 = I2C_CLKDIV_RATIO_DIV_BY_4,
478 DL_I2C_CLOCK_DIVIDE_5 = I2C_CLKDIV_RATIO_DIV_BY_5,
480 DL_I2C_CLOCK_DIVIDE_6 = I2C_CLKDIV_RATIO_DIV_BY_6,
482 DL_I2C_CLOCK_DIVIDE_7 = I2C_CLKDIV_RATIO_DIV_BY_7,
484 DL_I2C_CLOCK_DIVIDE_8 = I2C_CLKDIV_RATIO_DIV_BY_8,
485 } DL_I2C_CLOCK_DIVIDE;
490 DL_I2C_TARGET_ADDRESSING_MODE_7_BIT = I2C_SOAR_SMODE_MODE7,
492 DL_I2C_TARGET_ADDRESSING_MODE_10_BIT = I2C_SOAR_SMODE_MODE10,
493 } DL_I2C_TARGET_ADDRESSING_MODE;
499 DL_I2C_TARGET_PEC_STATUS_CHECKED = I2C_TARGET_PECSR_PECSTS_CHECK_SET,
502 DL_I2C_TARGET_PEC_STATUS_NOT_CHECKED =
503 I2C_TARGET_PECSR_PECSTS_CHECK_CLEARED,
504 } DL_I2C_TARGET_PEC_STATUS;
510 DL_I2C_TARGET_PEC_CHECK_ERROR_CLEARED =
511 I2C_TARGET_PECSR_PECSTS_ERROR_CLEARED,
514 DL_I2C_TARGET_PEC_CHECK_ERROR_SET = I2C_TARGET_PECSR_PECSTS_ERROR_SET,
515 } DL_I2C_TARGET_PEC_CHECK_ERROR;
520 DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_5NS = I2C_GFCTL_AGFSEL_AGLIT_5,
522 DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_10NS = I2C_GFCTL_AGFSEL_AGLIT_10,
524 DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_25NS = I2C_GFCTL_AGFSEL_AGLIT_25,
526 DL_I2C_ANALOG_GLITCH_FILTER_WIDTH_50NS = I2C_GFCTL_AGFSEL_AGLIT_50,
527 } DL_I2C_ANALOG_GLITCH_FILTER_WIDTH;
532 DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_DISABLED = I2C_GFCTL_DGFSEL_DISABLED,
534 DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_CLOCKS_1 = I2C_GFCTL_DGFSEL_CLK_1,
536 DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_CLOCKS_2 = I2C_GFCTL_DGFSEL_CLK_2,
538 DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_CLOCKS_3 = I2C_GFCTL_DGFSEL_CLK_3,
540 DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_CLOCKS_4 = I2C_GFCTL_DGFSEL_CLK_4,
542 DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_CLOCKS_8 = I2C_GFCTL_DGFSEL_CLK_8,
544 DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_CLOCKS_16 = I2C_GFCTL_DGFSEL_CLK_16,
546 DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH_CLOCKS_31 = I2C_GFCTL_DGFSEL_CLK_31,
547 } DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH;
552 DL_I2C_CONTROLLER_DIRECTION_TX = I2C_MSA_DIR_TRANSMIT,
554 DL_I2C_CONTROLLER_DIRECTION_RX = I2C_MSA_DIR_RECEIVE,
555 } DL_I2C_CONTROLLER_DIRECTION;
560 DL_I2C_CONTROLLER_ADDRESSING_MODE_7_BIT = I2C_MSA_MMODE_MODE7,
562 DL_I2C_CONTROLLER_ADDRESSING_MODE_10_BIT = I2C_MSA_MMODE_MODE10,
563 } DL_I2C_CONTROLLER_ADDRESSING_MODE;
569 DL_I2C_CONTROLLER_PEC_STATUS_CHECKED =
570 I2C_CONTROLLER_PECSR_PECSTS_CHECK_SET,
573 DL_I2C_CONTROLLER_PEC_STATUS_NOT_CHECKED =
574 I2C_CONTROLLER_PECSR_PECSTS_CHECK_CLEARED,
575 } DL_I2C_CONTROLLER_PEC_STATUS;
581 DL_I2C_CONTROLLER_PEC_CHECK_ERROR_SET =
582 I2C_CONTROLLER_PECSR_PECSTS_ERROR_SET,
585 DL_I2C_CONTROLLER_PEC_CHECK_ERROR_CLEARED =
586 I2C_CONTROLLER_PECSR_PECSTS_ERROR_CLEARED,
587 } DL_I2C_CONTROLLER_PEC_CHECK_ERROR;
592 DL_I2C_CONTROLLER_SCL_HIGH = I2C_MBMON_SCL_SET,
594 DL_I2C_CONTROLLER_SCL_LOW = I2C_MBMON_SCL_CLEARED,
595 } DL_I2C_CONTROLLER_SCL;
600 DL_I2C_CONTROLLER_SDA_HIGH = I2C_MBMON_SDA_SET,
602 DL_I2C_CONTROLLER_SDA_LOW = I2C_MBMON_SDA_CLEARED,
603 } DL_I2C_CONTROLLER_SDA;
608 DL_I2C_CONTROLLER_START_ENABLE = I2C_MCTR_START_ENABLE,
610 DL_I2C_CONTROLLER_START_DISABLE = I2C_MCTR_START_DISABLE,
611 } DL_I2C_CONTROLLER_START;
616 DL_I2C_CONTROLLER_STOP_ENABLE = I2C_MCTR_STOP_ENABLE,
618 DL_I2C_CONTROLLER_STOP_DISABLE = I2C_MCTR_STOP_DISABLE,
619 } DL_I2C_CONTROLLER_STOP;
624 DL_I2C_CONTROLLER_ACK_ENABLE = I2C_MCTR_ACK_ENABLE,
626 DL_I2C_CONTROLLER_ACK_DISABLE = I2C_MCTR_ACK_DISABLE,
627 } DL_I2C_CONTROLLER_ACK;
632 DL_I2C_TX_FIFO_LEVEL_EMPTY = I2C_MFIFOCTL_TXTRIG_EMPTY,
634 DL_I2C_TX_FIFO_LEVEL_BYTES_1 = I2C_MFIFOCTL_TXTRIG_LEVEL_1,
636 DL_I2C_TX_FIFO_LEVEL_BYTES_2 = I2C_MFIFOCTL_TXTRIG_LEVEL_2,
638 DL_I2C_TX_FIFO_LEVEL_BYTES_3 = I2C_MFIFOCTL_TXTRIG_LEVEL_3,
640 DL_I2C_TX_FIFO_LEVEL_BYTES_4 = I2C_MFIFOCTL_TXTRIG_LEVEL_4,
642 DL_I2C_TX_FIFO_LEVEL_BYTES_5 = I2C_MFIFOCTL_TXTRIG_LEVEL_5,
644 DL_I2C_TX_FIFO_LEVEL_BYTES_6 = I2C_MFIFOCTL_TXTRIG_LEVEL_6,
646 DL_I2C_TX_FIFO_LEVEL_BYTES_7 = I2C_MFIFOCTL_TXTRIG_LEVEL_7,
647 } DL_I2C_TX_FIFO_LEVEL;
652 DL_I2C_RX_FIFO_LEVEL_BYTES_1 = I2C_MFIFOCTL_RXTRIG_LEVEL_1,
654 DL_I2C_RX_FIFO_LEVEL_BYTES_2 = I2C_MFIFOCTL_RXTRIG_LEVEL_2,
656 DL_I2C_RX_FIFO_LEVEL_BYTES_3 = I2C_MFIFOCTL_RXTRIG_LEVEL_3,
658 DL_I2C_RX_FIFO_LEVEL_BYTES_4 = I2C_MFIFOCTL_RXTRIG_LEVEL_4,
660 DL_I2C_RX_FIFO_LEVEL_BYTES_5 = I2C_MFIFOCTL_RXTRIG_LEVEL_5,
662 DL_I2C_RX_FIFO_LEVEL_BYTES_6 = I2C_MFIFOCTL_RXTRIG_LEVEL_6,
664 DL_I2C_RX_FIFO_LEVEL_BYTES_7 = I2C_MFIFOCTL_RXTRIG_LEVEL_7,
666 DL_I2C_RX_FIFO_LEVEL_BYTES_8 = I2C_MFIFOCTL_RXTRIG_LEVEL_8,
667 } DL_I2C_RX_FIFO_LEVEL;
672 DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE_ACK = I2C_SACKCTL_ACKOVAL_DISABLE,
674 DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE_NACK = I2C_SACKCTL_ACKOVAL_ENABLE,
675 } DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE;
680 DL_I2C_IIDX_NO_INT = I2C_CPU_INT_IIDX_STAT_NO_INTR,
682 DL_I2C_IIDX_CONTROLLER_RX_DONE = I2C_CPU_INT_IIDX_STAT_MRXDONEFG,
684 DL_I2C_IIDX_CONTROLLER_TX_DONE = I2C_CPU_INT_IIDX_STAT_MTXDONEFG,
686 DL_I2C_IIDX_CONTROLLER_RXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_MRXFIFOTRG,
688 DL_I2C_IIDX_CONTROLLER_TXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_MTXFIFOTRG,
690 DL_I2C_IIDX_CONTROLLER_RXFIFO_FULL = I2C_CPU_INT_IIDX_STAT_MRXFIFOFULL,
692 DL_I2C_IIDX_CONTROLLER_TXFIFO_EMPTY = I2C_CPU_INT_IIDX_STAT_MTX_EMPTY,
694 DL_I2C_IIDX_CONTROLLER_NACK = I2C_CPU_INT_IIDX_STAT_MNACKFG,
696 DL_I2C_IIDX_CONTROLLER_START = I2C_CPU_INT_IIDX_STAT_MSTARTFG,
698 DL_I2C_IIDX_CONTROLLER_STOP = I2C_CPU_INT_IIDX_STAT_MSTOPFG,
700 DL_I2C_IIDX_CONTROLLER_ARBITRATION_LOST = I2C_CPU_INT_IIDX_STAT_MARBLOSTFG,
702 DL_I2C_IIDX_CONTROLLER_EVENT1_DMA_DONE =
703 I2C_CPU_INT_IIDX_STAT_MDMA_DONE_TX,
705 DL_I2C_IIDX_CONTROLLER_EVENT2_DMA_DONE =
706 I2C_CPU_INT_IIDX_STAT_MDMA_DONE_RX,
709 DL_I2C_IIDX_CONTROLLER_PEC_RX_ERROR = I2C_CPU_INT_IIDX_STAT_MPEC_RX_ERR,
711 DL_I2C_IIDX_TIMEOUT_A = I2C_CPU_INT_IIDX_STAT_TIMEOUTA,
713 DL_I2C_IIDX_TIMEOUT_B = I2C_CPU_INT_IIDX_STAT_TIMEOUTB,
716 DL_I2C_IIDX_TARGET_RX_DONE = I2C_CPU_INT_IIDX_STAT_SRXDONEFG,
718 DL_I2C_IIDX_TARGET_TX_DONE = I2C_CPU_INT_IIDX_STAT_STXDONEFG,
720 DL_I2C_IIDX_TARGET_RXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_SRXFIFOTRG,
722 DL_I2C_IIDX_TARGET_TXFIFO_TRIGGER = I2C_CPU_INT_IIDX_STAT_STXFIFOTRG,
724 DL_I2C_IIDX_TARGET_RXFIFO_FULL = I2C_CPU_INT_IIDX_STAT_SRXFIFOFULL,
727 DL_I2C_IIDX_TARGET_TXFIFO_EMPTY = I2C_CPU_INT_IIDX_STAT_STXEMPTY,
729 DL_I2C_IIDX_TARGET_START = I2C_CPU_INT_IIDX_STAT_SSTARTFG,
731 DL_I2C_IIDX_TARGET_STOP = I2C_CPU_INT_IIDX_STAT_SSTOPFG,
733 DL_I2C_IIDX_TARGET_GENERAL_CALL = I2C_CPU_INT_IIDX_STAT_SGENCALL,
735 DL_I2C_IIDX_TARGET_EVENT1_DMA_DONE = I2C_CPU_INT_IIDX_STAT_SDMA_DONE_TX,
737 DL_I2C_IIDX_TARGET_EVENT2_DMA_DONE = I2C_CPU_INT_IIDX_STAT_SDMA_DONE_RX,
740 DL_I2C_IIDX_TARGET_PEC_RX_ERROR = I2C_CPU_INT_IIDX_STAT_SPEC_RX_ERR,
742 DL_I2C_IIDX_TARGET_TXFIFO_UNDERFLOW = I2C_CPU_INT_IIDX_STAT_STX_UNFL,
744 DL_I2C_IIDX_TARGET_RXFIFO_OVERFLOW = I2C_CPU_INT_IIDX_STAT_SRX_OVFL,
746 DL_I2C_IIDX_TARGET_ARBITRATION_LOST = I2C_CPU_INT_IIDX_STAT_SARBLOST,
748 DL_I2C_IIDX_INTERRUPT_OVERFLOW = I2C_CPU_INT_IIDX_STAT_INTR_OVFL,
757 DL_I2C_CLOCK clockSel;
759 DL_I2C_CLOCK_DIVIDE divideRatio;
760 } DL_I2C_ClockConfig;
770 void DL_I2C_setClockConfig(I2C_Regs *i2c,
const DL_I2C_ClockConfig *config);
780 void DL_I2C_getClockConfig(
const I2C_Regs *i2c, DL_I2C_ClockConfig *config);
792 uint16_t DL_I2C_fillControllerTXFIFO(
793 I2C_Regs *i2c,
const uint8_t *buffer, uint16_t count);
800 void DL_I2C_flushControllerTXFIFO(I2C_Regs *i2c);
807 void DL_I2C_flushControllerRXFIFO(I2C_Regs *i2c);
819 __STATIC_INLINE
bool DL_I2C_isControllerTXFIFOFull(
const I2C_Regs *i2c)
821 return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) ==
822 I2C_MFIFOSR_TXFIFOCNT_MINIMUM);
835 __STATIC_INLINE
bool DL_I2C_isControllerTXFIFOEmpty(
const I2C_Regs *i2c)
837 return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) ==
838 DL_I2C_TX_FIFO_COUNT_MAXIMUM);
851 __STATIC_INLINE
bool DL_I2C_isControllerRXFIFOEmpty(
const I2C_Regs *i2c)
853 return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFIFOCNT_MASK) ==
854 I2C_MFIFOSR_RXFIFOCNT_MINIMUM);
864 __STATIC_INLINE
void DL_I2C_resetControllerTransfer(I2C_Regs *i2c)
867 i2c->MASTER.MCTR = 0x00;
882 __STATIC_INLINE
void DL_I2C_startControllerTransfer(I2C_Regs *i2c,
883 uint32_t targetAddr, DL_I2C_CONTROLLER_DIRECTION direction,
888 ((targetAddr << I2C_MSA_SADDR_OFS) | (uint32_t) direction),
889 (I2C_MSA_SADDR_MASK | I2C_MSA_DIR_MASK));
893 (((uint32_t) length << I2C_MCTR_MBLEN_OFS) | I2C_MCTR_BURSTRUN_ENABLE |
894 I2C_MCTR_START_ENABLE | I2C_MCTR_STOP_ENABLE),
895 (I2C_MCTR_MBLEN_MASK | I2C_MCTR_BURSTRUN_MASK | I2C_MCTR_START_MASK |
896 I2C_MCTR_STOP_MASK));
913 __STATIC_INLINE
void DL_I2C_startControllerTransferAdvanced(I2C_Regs *i2c,
914 uint32_t targetAddr, DL_I2C_CONTROLLER_DIRECTION direction,
915 uint16_t length, DL_I2C_CONTROLLER_START start,
916 DL_I2C_CONTROLLER_STOP stop, DL_I2C_CONTROLLER_ACK ack)
920 ((targetAddr << I2C_MSA_SADDR_OFS) | (uint32_t) direction),
921 (I2C_MSA_SADDR_MASK | I2C_MSA_DIR_MASK));
924 (((uint32_t) length << I2C_MCTR_MBLEN_OFS) | I2C_MCTR_BURSTRUN_ENABLE |
925 (uint32_t) start | (uint32_t) stop | (uint32_t) ack),
926 (I2C_MCTR_MBLEN_MASK | I2C_MCTR_BURSTRUN_MASK | I2C_MCTR_START_MASK |
927 I2C_MCTR_STOP_MASK | I2C_MCTR_ACK_MASK));
940 __STATIC_INLINE
bool DL_I2C_isTargetTXFIFOFull(
const I2C_Regs *i2c)
942 return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) ==
943 I2C_SFIFOSR_TXFIFOCNT_MINIMUM);
956 __STATIC_INLINE
bool DL_I2C_isTargetTXFIFOEmpty(
const I2C_Regs *i2c)
958 return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) ==
959 DL_I2C_TX_FIFO_COUNT_MAXIMUM);
972 __STATIC_INLINE
bool DL_I2C_isTargetRXFIFOEmpty(
const I2C_Regs *i2c)
974 return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFIFOCNT_MASK) ==
975 I2C_SFIFOSR_RXFIFOCNT_MINIMUM);
987 uint8_t DL_I2C_fillTargetTXFIFO(
988 I2C_Regs *i2c,
const uint8_t *buffer, uint8_t count);
995 void DL_I2C_flushTargetTXFIFO(I2C_Regs *i2c);
1002 void DL_I2C_flushTargetRXFIFO(I2C_Regs *i2c);
1016 void DL_I2C_transmitTargetDataBlocking(I2C_Regs *i2c, uint8_t data);
1031 bool DL_I2C_transmitTargetDataCheck(I2C_Regs *i2c, uint8_t data);
1043 uint8_t DL_I2C_receiveTargetDataBlocking(
const I2C_Regs *i2c);
1058 bool DL_I2C_receiveTargetDataCheck(
const I2C_Regs *i2c, uint8_t *buffer);
1069 __STATIC_INLINE
void DL_I2C_enablePower(I2C_Regs *i2c)
1071 i2c->GPRCM.PWREN = (I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_ENABLE);
1084 __STATIC_INLINE
void DL_I2C_disablePower(I2C_Regs *i2c)
1086 i2c->GPRCM.PWREN = (I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_DISABLE);
1105 __STATIC_INLINE
bool DL_I2C_isPowerEnabled(
const I2C_Regs *i2c)
1108 (i2c->GPRCM.PWREN & I2C_PWREN_ENABLE_MASK) == I2C_PWREN_ENABLE_ENABLE);
1116 __STATIC_INLINE
void DL_I2C_reset(I2C_Regs *i2c)
1119 (I2C_RSTCTL_KEY_UNLOCK_W | I2C_RSTCTL_RESETSTKYCLR_CLR |
1120 I2C_RSTCTL_RESETASSERT_ASSERT);
1132 __STATIC_INLINE
bool DL_I2C_isReset(
const I2C_Regs *i2c)
1134 return ((i2c->GPRCM.STAT & I2C_STAT_RESETSTKY_MASK) ==
1135 I2C_STAT_RESETSTKY_RESET);
1148 __STATIC_INLINE
void DL_I2C_selectClockSource(
1149 I2C_Regs *i2c, DL_I2C_CLOCK clockSource)
1152 I2C_CLKSEL_BUSCLK_SEL_MASK | I2C_CLKSEL_MFCLK_SEL_MASK);
1163 __STATIC_INLINE
void DL_I2C_selectClockDivider(
1164 I2C_Regs *i2c, DL_I2C_CLOCK_DIVIDE clockDivider)
1167 &i2c->CLKDIV, (uint32_t) clockDivider, I2C_CLKDIV_RATIO_MASK);
1181 __STATIC_INLINE DL_I2C_ANALOG_GLITCH_FILTER_WIDTH
1182 DL_I2C_getAnalogGlitchFilterPulseWidth(
const I2C_Regs *i2c)
1184 uint32_t filterWidth = i2c->GFCTL & I2C_GFCTL_AGFSEL_MASK;
1186 return (DL_I2C_ANALOG_GLITCH_FILTER_WIDTH)(filterWidth);
1198 __STATIC_INLINE
void DL_I2C_setAnalogGlitchFilterPulseWidth(
1199 I2C_Regs *i2c, DL_I2C_ANALOG_GLITCH_FILTER_WIDTH filterWidth)
1202 &i2c->GFCTL, (uint32_t) filterWidth, I2C_GFCTL_AGFSEL_MASK);
1217 __STATIC_INLINE DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH
1218 DL_I2C_getDigitalGlitchFilterPulseWidth(
const I2C_Regs *i2c)
1220 uint32_t filterWidth = i2c->GFCTL & I2C_GFCTL_DGFSEL_MASK;
1222 return (DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH)(filterWidth);
1235 __STATIC_INLINE
void DL_I2C_setDigitalGlitchFilterPulseWidth(
1236 I2C_Regs *i2c, DL_I2C_DIGITAL_GLITCH_FILTER_WIDTH filterWidth)
1239 &i2c->GFCTL, (uint32_t) filterWidth, I2C_GFCTL_DGFSEL_MASK);
1247 __STATIC_INLINE
void DL_I2C_disableAnalogGlitchFilter(I2C_Regs *i2c)
1249 i2c->GFCTL &= ~(I2C_GFCTL_AGFEN_MASK);
1262 __STATIC_INLINE
bool DL_I2C_isAnalogGlitchFilterEnabled(
const I2C_Regs *i2c)
1264 return ((i2c->GFCTL & I2C_GFCTL_AGFEN_MASK) == I2C_GFCTL_AGFEN_ENABLE);
1272 __STATIC_INLINE
void DL_I2C_enableAnalogGlitchFilter(I2C_Regs *i2c)
1274 i2c->GFCTL |= I2C_GFCTL_AGFEN_ENABLE;
1286 __STATIC_INLINE DL_I2C_CONTROLLER_DIRECTION DL_I2C_getControllerDirection(
1287 const I2C_Regs *i2c)
1289 uint32_t direction = i2c->MASTER.MSA & I2C_MSA_DIR_MASK;
1291 return (DL_I2C_CONTROLLER_DIRECTION)(direction);
1302 __STATIC_INLINE
void DL_I2C_setControllerDirection(
1303 I2C_Regs *i2c, DL_I2C_CONTROLLER_DIRECTION direction)
1306 &i2c->MASTER.MSA, (uint32_t) direction, I2C_MSA_DIR_MASK);
1325 __STATIC_INLINE uint32_t DL_I2C_getTargetAddress(
const I2C_Regs *i2c)
1327 return ((i2c->MASTER.MSA & I2C_MSA_SADDR_MASK) >> I2C_MSA_SADDR_OFS);
1343 __STATIC_INLINE
void DL_I2C_setTargetAddress(
1344 I2C_Regs *i2c, uint32_t targetAddress)
1347 I2C_MSA_SADDR_MASK);
1360 __STATIC_INLINE DL_I2C_CONTROLLER_ADDRESSING_MODE
1361 DL_I2C_getControllerAddressingMode(
const I2C_Regs *i2c)
1363 uint32_t mode = i2c->MASTER.MSA & I2C_MSA_MMODE_MASK;
1365 return (DL_I2C_CONTROLLER_ADDRESSING_MODE)(mode);
1378 __STATIC_INLINE
void DL_I2C_setControllerAddressingMode(
1379 I2C_Regs *i2c, DL_I2C_CONTROLLER_ADDRESSING_MODE mode)
1389 __STATIC_INLINE
void DL_I2C_disableControllerACKOverride(I2C_Regs *i2c)
1391 i2c->MASTER.MCTR &= ~(I2C_MCTR_MACKOEN_MASK);
1404 __STATIC_INLINE
bool DL_I2C_isControllerACKOverrideEnabled(
const I2C_Regs *i2c)
1407 (i2c->MASTER.MCTR & I2C_MCTR_MACKOEN_MASK) == I2C_MCTR_MACKOEN_ENABLE);
1425 __STATIC_INLINE
void DL_I2C_enableControllerACKOverride(I2C_Regs *i2c)
1427 i2c->MASTER.MCTR |= I2C_MCTR_MACKOEN_ENABLE;
1435 __STATIC_INLINE
void DL_I2C_disableControllerReadOnTXEmpty(I2C_Regs *i2c)
1437 i2c->MASTER.MCTR &= ~(I2C_MCTR_RD_ON_TXEMPTY_MASK);
1450 __STATIC_INLINE
bool DL_I2C_isControllerReadOnTXEmptyEnabled(
1451 const I2C_Regs *i2c)
1453 return ((i2c->MASTER.MCTR & I2C_MCTR_RD_ON_TXEMPTY_MASK) ==
1454 I2C_MCTR_RD_ON_TXEMPTY_ENABLE);
1474 __STATIC_INLINE
void DL_I2C_enableControllerReadOnTXEmpty(I2C_Regs *i2c)
1476 i2c->MASTER.MCTR |= I2C_MCTR_RD_ON_TXEMPTY_ENABLE;
1488 __STATIC_INLINE uint32_t DL_I2C_getControllerPECCountValue(
const I2C_Regs *i2c)
1490 return (i2c->MASTER.CONTROLLER_I2CPECCTL &
1491 I2C_CONTROLLER_I2CPECCTL_PECCNT_MASK);
1504 __STATIC_INLINE
void DL_I2C_setControllerPECCountValue(
1505 I2C_Regs *i2c, uint32_t count)
1508 I2C_CONTROLLER_I2CPECCTL_PECCNT_MASK);
1516 __STATIC_INLINE
void DL_I2C_disableControllerPEC(I2C_Regs *i2c)
1518 i2c->MASTER.CONTROLLER_I2CPECCTL &= ~(I2C_CONTROLLER_I2CPECCTL_PECEN_MASK);
1532 __STATIC_INLINE
bool DL_I2C_isControllerPECEnabled(
const I2C_Regs *i2c)
1534 return ((i2c->MASTER.CONTROLLER_I2CPECCTL &
1535 I2C_CONTROLLER_I2CPECCTL_PECEN_MASK) ==
1536 I2C_CONTROLLER_I2CPECCTL_PECEN_ENABLE);
1553 __STATIC_INLINE
void DL_I2C_enableControllerPEC(I2C_Regs *i2c)
1555 i2c->MASTER.CONTROLLER_I2CPECCTL |= I2C_CONTROLLER_I2CPECCTL_PECEN_ENABLE;
1568 __STATIC_INLINE uint32_t DL_I2C_getControllerCurrentPECCount(
1569 const I2C_Regs *i2c)
1572 i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_CHECK_MASK);
1587 __STATIC_INLINE DL_I2C_CONTROLLER_PEC_STATUS
1588 DL_I2C_getControllerPECCheckedStatus(
const I2C_Regs *i2c)
1591 i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_CHECK_MASK;
1593 return (DL_I2C_CONTROLLER_PEC_STATUS)(status);
1608 __STATIC_INLINE DL_I2C_CONTROLLER_PEC_CHECK_ERROR
1609 DL_I2C_getControllerPECCheckError(
const I2C_Regs *i2c)
1612 i2c->MASTER.CONTROLLER_PECSR & I2C_CONTROLLER_PECSR_PECSTS_ERROR_MASK;
1614 return (DL_I2C_CONTROLLER_PEC_CHECK_ERROR)(error);
1622 __STATIC_INLINE
void DL_I2C_disableControllerBurst(I2C_Regs *i2c)
1624 i2c->MASTER.MCTR &= ~(I2C_MCTR_BURSTRUN_MASK);
1637 __STATIC_INLINE
bool DL_I2C_isControllerBurstEnabled(
const I2C_Regs *i2c)
1639 return ((i2c->GFCTL & I2C_MCTR_BURSTRUN_MASK) == I2C_MCTR_BURSTRUN_ENABLE);
1647 __STATIC_INLINE
void DL_I2C_enableControllerBurst(I2C_Regs *i2c)
1649 i2c->MASTER.MCTR |= I2C_MCTR_BURSTRUN_ENABLE;
1657 __STATIC_INLINE
void DL_I2C_disableStartCondition(I2C_Regs *i2c)
1659 i2c->MASTER.MCTR &= ~(I2C_MCTR_START_MASK);
1672 __STATIC_INLINE
bool DL_I2C_isStartConditionEnabled(
const I2C_Regs *i2c)
1674 return ((i2c->MASTER.MCTR & I2C_MCTR_START_MASK) == I2C_MCTR_START_ENABLE);
1682 __STATIC_INLINE
void DL_I2C_enableStartCondition(I2C_Regs *i2c)
1684 i2c->MASTER.MCTR |= I2C_MCTR_START_ENABLE;
1692 __STATIC_INLINE
void DL_I2C_disableStopCondition(I2C_Regs *i2c)
1694 i2c->MASTER.MCTR &= ~(I2C_MCTR_STOP_MASK);
1707 __STATIC_INLINE
bool DL_I2C_isStopConditionEnabled(
const I2C_Regs *i2c)
1709 return ((i2c->MASTER.MCTR & I2C_MCTR_STOP_MASK) == I2C_MCTR_STOP_ENABLE);
1717 __STATIC_INLINE
void DL_I2C_enableStopCondition(I2C_Regs *i2c)
1719 i2c->MASTER.MCTR |= I2C_MCTR_STOP_ENABLE;
1731 __STATIC_INLINE
void DL_I2C_disableControllerACK(I2C_Regs *i2c)
1733 i2c->MASTER.MCTR &= ~(I2C_MCTR_ACK_MASK);
1747 __STATIC_INLINE
bool DL_I2C_isControllerACKEnabled(
const I2C_Regs *i2c)
1749 return ((i2c->MASTER.MCTR & I2C_MCTR_ACK_MASK) == I2C_MCTR_ACK_ENABLE);
1761 __STATIC_INLINE
void DL_I2C_enableControllerACK(I2C_Regs *i2c)
1763 i2c->MASTER.MCTR |= I2C_MCTR_ACK_MASK;
1775 __STATIC_INLINE uint32_t DL_I2C_getTransactionLength(
const I2C_Regs *i2c)
1777 return ((i2c->MASTER.MCTR & I2C_MCTR_MBLEN_MASK) >> I2C_MCTR_MBLEN_OFS);
1787 __STATIC_INLINE
void DL_I2C_setTransactionLength(
1788 I2C_Regs *i2c, uint32_t length)
1791 I2C_MCTR_MBLEN_MASK);
1803 __STATIC_INLINE uint32_t DL_I2C_getControllerStatus(
const I2C_Regs *i2c)
1805 return (i2c->MASTER.MSR);
1817 __STATIC_INLINE uint16_t DL_I2C_getTransactionCount(
const I2C_Regs *i2c)
1820 (i2c->MASTER.MSR & I2C_MSR_MBCNT_MASK) >> I2C_MSR_MBCNT_OFS));
1834 __STATIC_INLINE uint8_t DL_I2C_receiveControllerData(
const I2C_Regs *i2c)
1836 return ((uint8_t)(i2c->MASTER.MRXDATA & I2C_MRXDATA_VALUE_MASK));
1848 __STATIC_INLINE
void DL_I2C_transmitControllerData(I2C_Regs *i2c, uint8_t data)
1850 i2c->MASTER.MTXDATA = data;
1874 __STATIC_INLINE uint8_t DL_I2C_getTimerPeriod(
const I2C_Regs *i2c)
1876 return ((uint8_t)(i2c->MASTER.MTPR & I2C_MTPR_TPR_MASK));
1898 __STATIC_INLINE
void DL_I2C_setTimerPeriod(I2C_Regs *i2c, uint8_t period)
1900 i2c->MASTER.MTPR = period;
1908 __STATIC_INLINE
void DL_I2C_disableLoopbackMode(I2C_Regs *i2c)
1910 i2c->MASTER.MCR &= ~(I2C_MCR_LPBK_MASK);
1923 __STATIC_INLINE
bool DL_I2C_isLoopbackModeEnabled(
const I2C_Regs *i2c)
1925 return ((i2c->MASTER.MCR & I2C_MCR_LPBK_MASK) == I2C_MCR_LPBK_ENABLE);
1933 __STATIC_INLINE
void DL_I2C_enableLoopbackMode(I2C_Regs *i2c)
1935 i2c->MASTER.MCR |= I2C_MCR_LPBK_ENABLE;
1943 __STATIC_INLINE
void DL_I2C_disableMultiControllerMode(I2C_Regs *i2c)
1945 i2c->MASTER.MCR &= ~(I2C_MCR_MMST_MASK);
1958 __STATIC_INLINE
bool DL_I2C_isMultiControllerModeEnabled(
const I2C_Regs *i2c)
1960 return ((i2c->MASTER.MCR & I2C_MCR_MMST_MASK) == I2C_MCR_MMST_ENABLE);
1972 __STATIC_INLINE
void DL_I2C_enableMultiControllerMode(I2C_Regs *i2c)
1974 i2c->MASTER.MCR |= I2C_MCR_MMST_ENABLE;
1982 __STATIC_INLINE
void DL_I2C_disableController(I2C_Regs *i2c)
1984 i2c->MASTER.MCR &= ~(I2C_MCR_ACTIVE_MASK);
1997 __STATIC_INLINE
bool DL_I2C_isControllerEnabled(
const I2C_Regs *i2c)
1999 return ((i2c->MASTER.MCR & I2C_MCR_ACTIVE_MASK) == I2C_MCR_ACTIVE_ENABLE);
2010 __STATIC_INLINE
void DL_I2C_enableController(I2C_Regs *i2c)
2012 i2c->MASTER.MCR |= I2C_MCR_ACTIVE_ENABLE;
2024 __STATIC_INLINE
void DL_I2C_disableControllerClockStretching(I2C_Regs *i2c)
2026 i2c->MASTER.MCR &= ~(I2C_MCR_CLKSTRETCH_MASK);
2039 __STATIC_INLINE
bool DL_I2C_isControllerClockStretchingEnabled(
2040 const I2C_Regs *i2c)
2042 return ((i2c->MASTER.MCR & I2C_MCR_CLKSTRETCH_MASK) ==
2043 I2C_MCR_CLKSTRETCH_ENABLE);
2055 __STATIC_INLINE
void DL_I2C_enableControllerClockStretching(I2C_Regs *i2c)
2057 i2c->MASTER.MCR |= I2C_MCR_CLKSTRETCH_ENABLE;
2069 __STATIC_INLINE DL_I2C_CONTROLLER_SCL DL_I2C_getSCLStatus(
const I2C_Regs *i2c)
2071 uint32_t sclStatus = i2c->MASTER.MBMON & I2C_MBMON_SCL_MASK;
2073 return (DL_I2C_CONTROLLER_SCL)(sclStatus);
2085 __STATIC_INLINE DL_I2C_CONTROLLER_SDA DL_I2C_getSDAStatus(
const I2C_Regs *i2c)
2087 uint32_t sdaStatus = i2c->MASTER.MBMON & I2C_MBMON_SDA_MASK;
2089 return (DL_I2C_CONTROLLER_SDA)(sdaStatus);
2101 __STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getControllerTXFIFOThreshold(
2102 const I2C_Regs *i2c)
2104 uint32_t level = i2c->MASTER.MFIFOCTL & I2C_MFIFOCTL_TXTRIG_MASK;
2106 return (DL_I2C_TX_FIFO_LEVEL)(level);
2117 __STATIC_INLINE
void DL_I2C_setControllerTXFIFOThreshold(
2118 I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
2121 &i2c->MASTER.MFIFOCTL, (uint32_t) level, I2C_MFIFOCTL_TXTRIG_MASK);
2132 __STATIC_INLINE
void DL_I2C_stopFlushControllerTXFIFO(I2C_Regs *i2c)
2134 i2c->MASTER.MFIFOCTL &= ~(I2C_MFIFOCTL_TXFLUSH_MASK);
2142 __STATIC_INLINE
void DL_I2C_startFlushControllerTXFIFO(I2C_Regs *i2c)
2144 i2c->MASTER.MFIFOCTL |= I2C_MFIFOCTL_TXFLUSH_MASK;
2156 __STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getControllerRXFIFOThreshold(
2157 const I2C_Regs *i2c)
2159 uint32_t level = i2c->MASTER.MFIFOCTL & I2C_MFIFOCTL_RXTRIG_MASK;
2161 return (DL_I2C_RX_FIFO_LEVEL)(level);
2172 __STATIC_INLINE
void DL_I2C_setControllerRXFIFOThreshold(
2173 I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
2176 &i2c->MASTER.MFIFOCTL, (uint32_t) level, I2C_MFIFOCTL_RXTRIG_MASK);
2187 __STATIC_INLINE
void DL_I2C_stopFlushControllerRXFIFO(I2C_Regs *i2c)
2189 i2c->MASTER.MFIFOCTL &= ~(I2C_MFIFOCTL_RXFLUSH_MASK);
2197 __STATIC_INLINE
void DL_I2C_startFlushControllerRXFIFO(I2C_Regs *i2c)
2199 i2c->MASTER.MFIFOCTL |= I2C_MFIFOCTL_RXFLUSH_MASK;
2211 __STATIC_INLINE uint32_t DL_I2C_getControllerRXFIFOCounter(
const I2C_Regs *i2c)
2213 return (i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFIFOCNT_MASK);
2225 __STATIC_INLINE uint32_t DL_I2C_getControllerTXFIFOCounter(
const I2C_Regs *i2c)
2227 return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFIFOCNT_MASK) >>
2228 I2C_MFIFOSR_TXFIFOCNT_OFS);
2241 __STATIC_INLINE
bool DL_I2C_isControllerRXFIFOFlushActive(
const I2C_Regs *i2c)
2243 return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_RXFLUSH_MASK) ==
2244 I2C_MFIFOSR_RXFLUSH_ACTIVE);
2257 __STATIC_INLINE
bool DL_I2C_isControllerTXFIFOFlushActive(
const I2C_Regs *i2c)
2259 return ((i2c->MASTER.MFIFOSR & I2C_MFIFOSR_TXFLUSH_MASK) ==
2260 I2C_MFIFOSR_TXFLUSH_ACTIVE);
2274 __STATIC_INLINE
void DL_I2C_setTargetOwnAddress(I2C_Regs *i2c, uint32_t addr)
2292 __STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddress(
const I2C_Regs *i2c)
2294 return (i2c->SLAVE.SOAR & I2C_SOAR_OAR_MASK);
2304 __STATIC_INLINE
void DL_I2C_enableTargetOwnAddress(I2C_Regs *i2c)
2306 i2c->SLAVE.SOAR |= I2C_SOAR_OAREN_ENABLE;
2314 __STATIC_INLINE
void DL_I2C_disableTargetOwnAddress(I2C_Regs *i2c)
2316 i2c->SLAVE.SOAR &= ~(I2C_SOAR_OAREN_MASK);
2329 __STATIC_INLINE
bool DL_I2C_isTargetOwnAddressEnabled(
const I2C_Regs *i2c)
2331 return ((i2c->SLAVE.SOAR & I2C_SOAR_OAREN_MASK) == I2C_SOAR_OAREN_ENABLE);
2344 __STATIC_INLINE
void DL_I2C_setTargetAddressingMode(
2345 I2C_Regs *i2c, DL_I2C_TARGET_ADDRESSING_MODE mode)
2348 &i2c->SLAVE.SOAR, (uint32_t) mode, I2C_SOAR_SMODE_MASK);
2360 __STATIC_INLINE DL_I2C_TARGET_ADDRESSING_MODE DL_I2C_getTargetAddressingMode(
2361 const I2C_Regs *i2c)
2363 uint32_t mode = i2c->SLAVE.SOAR & I2C_SOAR_SMODE_MASK;
2365 return (DL_I2C_TARGET_ADDRESSING_MODE)(mode);
2376 __STATIC_INLINE uint32_t I2C_getTargetOwnAddressAlternate(
const I2C_Regs *i2c)
2378 return (i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2_MASK);
2387 __STATIC_INLINE
void DL_I2C_setTargetOwnAddressAlternate(
2388 I2C_Regs *i2c, uint32_t addr)
2403 __STATIC_INLINE uint32_t DL_I2C_getTargetOwnAddressAlternateMask(
2404 const I2C_Regs *i2c)
2406 return ((i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2_MASK_MASK) >>
2407 I2C_SOAR2_OAR2_MASK_OFS);
2422 __STATIC_INLINE
void DL_I2C_setTargetOwnAddressAlternateMask(
2423 I2C_Regs *i2c, uint32_t addressMask)
2426 addressMask << I2C_SOAR2_OAR2_MASK_OFS, I2C_SOAR2_OAR2_MASK_MASK);
2434 __STATIC_INLINE
void DL_I2C_disableTargetOwnAddressAlternate(I2C_Regs *i2c)
2436 i2c->SLAVE.SOAR2 &= ~(I2C_SOAR2_OAR2EN_MASK);
2449 __STATIC_INLINE
bool DL_I2C_isTargetOwnAddressAlternateEnabled(
2450 const I2C_Regs *i2c)
2453 (i2c->SLAVE.SOAR2 & I2C_SOAR2_OAR2EN_MASK) == I2C_SOAR2_OAR2EN_ENABLE);
2461 __STATIC_INLINE
void DL_I2C_enableTargetOwnAddressAlternate(I2C_Regs *i2c)
2463 i2c->SLAVE.SOAR2 |= I2C_SOAR2_OAR2EN_ENABLE;
2476 __STATIC_INLINE uint32_t DL_I2C_getTargetAddressMatch(
const I2C_Regs *i2c)
2479 (i2c->SLAVE.SSR & I2C_SSR_ADDRMATCH_MASK) >> I2C_SSR_ADDRMATCH_OFS);
2493 __STATIC_INLINE
void DL_I2C_disableTargetClockStretching(I2C_Regs *i2c)
2495 i2c->SLAVE.SCTR &= ~(I2C_SCTR_SCLKSTRETCH_MASK);
2508 __STATIC_INLINE
bool DL_I2C_isTargetClockStretchingEnabled(
const I2C_Regs *i2c)
2510 return ((i2c->SLAVE.SCTR & I2C_SCTR_SCLKSTRETCH_MASK) ==
2511 I2C_SCTR_SCLKSTRETCH_ENABLE);
2525 __STATIC_INLINE
void DL_I2C_enableTargetClockStretching(I2C_Regs *i2c)
2527 i2c->SLAVE.SCTR |= I2C_SCTR_SCLKSTRETCH_ENABLE;
2541 __STATIC_INLINE
void DL_I2C_disableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
2543 i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXEMPTY_ON_TREQ_MASK);
2557 __STATIC_INLINE
bool DL_I2C_isTargetTXEmptyOnTXRequestEnabled(
2558 const I2C_Regs *i2c)
2560 return ((i2c->SLAVE.SCTR & I2C_SCTR_TXEMPTY_ON_TREQ_MASK) ==
2561 I2C_SCTR_TXEMPTY_ON_TREQ_ENABLE);
2573 __STATIC_INLINE
void DL_I2C_enableTargetTXEmptyOnTXRequest(I2C_Regs *i2c)
2575 i2c->SLAVE.SCTR |= I2C_SCTR_TXEMPTY_ON_TREQ_ENABLE;
2586 __STATIC_INLINE
void DL_I2C_disableTargetTXTriggerInTXMode(I2C_Regs *i2c)
2588 i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXTRIG_TXMODE_MASK);
2601 __STATIC_INLINE
bool DL_I2C_isTargetTXTriggerInTXModeEnabled(
2602 const I2C_Regs *i2c)
2604 return ((i2c->SLAVE.SCTR & I2C_SCTR_TXTRIG_TXMODE_MASK) ==
2605 I2C_SCTR_TXTRIG_TXMODE_ENABLE);
2624 __STATIC_INLINE
void DL_I2C_enableTargetTXTriggerInTXMode(I2C_Regs *i2c)
2626 i2c->SLAVE.SCTR |= I2C_SCTR_TXTRIG_TXMODE_ENABLE;
2637 __STATIC_INLINE
void DL_I2C_disableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
2639 i2c->SLAVE.SCTR &= ~(I2C_SCTR_TXWAIT_STALE_TXFIFO_MASK);
2656 __STATIC_INLINE
bool DL_I2C_isTargetTXWaitWhenTXFIFOStaleEnabled(
2657 const I2C_Regs *i2c)
2659 return ((i2c->SLAVE.SCTR & I2C_SCTR_TXWAIT_STALE_TXFIFO_MASK) ==
2660 I2C_SCTR_TXWAIT_STALE_TXFIFO_ENABLE);
2675 __STATIC_INLINE
void DL_I2C_enableTargetTXWaitWhenTXFIFOStale(I2C_Regs *i2c)
2677 i2c->SLAVE.SCTR |= I2C_SCTR_TXWAIT_STALE_TXFIFO_ENABLE;
2692 __STATIC_INLINE
void DL_I2C_disableTargetRXFullOnRXRequest(I2C_Regs *i2c)
2694 i2c->SLAVE.SCTR &= ~(I2C_SCTR_RXFULL_ON_RREQ_MASK);
2707 __STATIC_INLINE
bool DL_I2C_isTargetRXFullOnRXRequestEnabled(
2708 const I2C_Regs *i2c)
2710 return ((i2c->SLAVE.SCTR & I2C_SCTR_RXFULL_ON_RREQ_MASK) ==
2711 I2C_SCTR_RXFULL_ON_RREQ_ENABLE);
2725 __STATIC_INLINE
void DL_I2C_enableTargetRXFullOnRXRequest(I2C_Regs *i2c)
2727 i2c->SLAVE.SCTR |= I2C_SCTR_RXFULL_ON_RREQ_ENABLE;
2740 __STATIC_INLINE
void DL_I2C_disableDefaultHostAddress(I2C_Regs *i2c)
2742 i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_DEFHOSTADR_MASK);
2756 __STATIC_INLINE
bool DL_I2C_isDefaultHostAddressEnabled(
const I2C_Regs *i2c)
2758 return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_DEFHOSTADR_MASK) ==
2759 I2C_SCTR_EN_DEFHOSTADR_ENABLE);
2770 __STATIC_INLINE
void DL_I2C_enableDefaultHostAddress(I2C_Regs *i2c)
2772 i2c->SLAVE.SCTR |= I2C_SCTR_EN_DEFHOSTADR_ENABLE;
2786 __STATIC_INLINE
void DL_I2C_disableAlertResponseAddress(I2C_Regs *i2c)
2788 i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_ALRESPADR_MASK);
2802 __STATIC_INLINE
bool DL_I2C_isAlertResponseAddressEnabled(
const I2C_Regs *i2c)
2804 return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_ALRESPADR_MASK) ==
2805 I2C_SCTR_EN_ALRESPADR_ENABLE);
2816 __STATIC_INLINE
void DL_I2C_enableAlertResponseAddress(I2C_Regs *i2c)
2818 i2c->SLAVE.SCTR |= I2C_SCTR_EN_ALRESPADR_ENABLE;
2832 __STATIC_INLINE
void DL_I2C_disableDefaultDeviceAddress(I2C_Regs *i2c)
2834 i2c->SLAVE.SCTR &= ~(I2C_SCTR_EN_DEFDEVADR_MASK);
2848 __STATIC_INLINE
bool DL_I2C_isDefaultDeviceAddressEnabled(
const I2C_Regs *i2c)
2850 return ((i2c->SLAVE.SCTR & I2C_SCTR_EN_DEFDEVADR_MASK) ==
2851 I2C_SCTR_EN_DEFDEVADR_ENABLE);
2862 __STATIC_INLINE
void DL_I2C_enableDefaultDeviceAddress(I2C_Regs *i2c)
2864 i2c->SLAVE.SCTR |= I2C_SCTR_EN_DEFDEVADR_ENABLE;
2875 __STATIC_INLINE
void DL_I2C_disableTargetWakeup(I2C_Regs *i2c)
2877 i2c->SLAVE.SCTR &= ~(I2C_SCTR_SWUEN_MASK);
2890 __STATIC_INLINE
bool DL_I2C_isTargetWakeupEnabled(
const I2C_Regs *i2c)
2892 return ((i2c->SLAVE.SCTR & I2C_SCTR_SWUEN_MASK) == I2C_SCTR_SWUEN_ENABLE);
2905 __STATIC_INLINE
void DL_I2C_enableTargetWakeup(I2C_Regs *i2c)
2907 i2c->SLAVE.SCTR |= I2C_SCTR_SWUEN_ENABLE;
2915 __STATIC_INLINE
void DL_I2C_disableTarget(I2C_Regs *i2c)
2917 i2c->SLAVE.SCTR &= ~(I2C_SCTR_ACTIVE_MASK);
2930 __STATIC_INLINE
bool DL_I2C_isTargetEnabled(
const I2C_Regs *i2c)
2933 (i2c->SLAVE.SCTR & I2C_SCTR_ACTIVE_MASK) == I2C_SCTR_ACTIVE_ENABLE);
2941 __STATIC_INLINE
void DL_I2C_enableTarget(I2C_Regs *i2c)
2943 i2c->SLAVE.SCTR |= I2C_SCTR_ACTIVE_ENABLE;
2951 __STATIC_INLINE
void DL_I2C_disableGeneralCall(I2C_Regs *i2c)
2953 i2c->SLAVE.SCTR &= ~(I2C_SCTR_GENCALL_MASK);
2966 __STATIC_INLINE
bool DL_I2C_isGeneralCallEnabled(
const I2C_Regs *i2c)
2969 (i2c->SLAVE.SCTR & I2C_SCTR_GENCALL_MASK) == I2C_SCTR_GENCALL_ENABLE);
2977 __STATIC_INLINE
void DL_I2C_enableGeneralCall(I2C_Regs *i2c)
2979 i2c->SLAVE.SCTR |= I2C_SCTR_GENCALL_ENABLE;
2991 __STATIC_INLINE uint32_t DL_I2C_getTargetStatus(
const I2C_Regs *i2c)
2993 return (i2c->SLAVE.SSR);
3007 __STATIC_INLINE uint8_t DL_I2C_receiveTargetData(
const I2C_Regs *i2c)
3009 return (uint8_t)(i2c->SLAVE.SRXDATA & I2C_SRXDATA_VALUE_MASK);
3019 __STATIC_INLINE
void DL_I2C_transmitTargetData(I2C_Regs *i2c, uint8_t data)
3021 i2c->SLAVE.STXDATA = data;
3032 __STATIC_INLINE
void DL_I2C_disableTargetACKOverride(I2C_Regs *i2c)
3034 i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_MASK);
3047 __STATIC_INLINE
bool DL_I2C_isTargetACKOverrideEnabled(
const I2C_Regs *i2c)
3049 return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_MASK) ==
3050 I2C_SACKCTL_ACKOEN_ENABLE);
3064 __STATIC_INLINE
void DL_I2C_enableTargetACKOverride(I2C_Regs *i2c)
3066 i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ENABLE;
3081 __STATIC_INLINE DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE
3082 DL_I2C_getTargetACKOverrideValue(
const I2C_Regs *i2c)
3084 uint32_t value = i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOVAL_MASK;
3086 return (DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE)(value);
3101 __STATIC_INLINE
void DL_I2C_setTargetACKOverrideValue(
3102 I2C_Regs *i2c, DL_I2C_TARGET_RESPONSE_OVERRIDE_VALUE value)
3105 &i2c->SLAVE.SACKCTL, (uint32_t) value, I2C_SACKCTL_ACKOVAL_MASK);
3113 __STATIC_INLINE
void DL_I2C_disableACKOverrideOnStart(I2C_Regs *i2c)
3115 i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_START_MASK);
3128 __STATIC_INLINE
bool DL_I2C_isACKOverrideOnStartEnabled(
const I2C_Regs *i2c)
3130 return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_START_MASK) ==
3131 I2C_SACKCTL_ACKOEN_ON_START_ENABLE);
3144 __STATIC_INLINE
void DL_I2C_enableACKOverrideOnStart(I2C_Regs *i2c)
3146 i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_START_ENABLE;
3154 __STATIC_INLINE
void DL_I2C_disableACKOverrideOnPECNext(I2C_Regs *i2c)
3156 i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_PECNEXT_MASK);
3170 __STATIC_INLINE
bool DL_I2C_isACKOverrideOnPECNextEnabled(
const I2C_Regs *i2c)
3172 return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_PECNEXT_MASK) ==
3173 I2C_SACKCTL_ACKOEN_ON_PECNEXT_ENABLE);
3189 __STATIC_INLINE
void DL_I2C_enableACKOverrideOnPECNext(I2C_Regs *i2c)
3191 i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_PECNEXT_ENABLE;
3199 __STATIC_INLINE
void DL_I2C_disableACKOverrideOnPECDone(I2C_Regs *i2c)
3201 i2c->SLAVE.SACKCTL &= ~(I2C_SACKCTL_ACKOEN_ON_PECDONE_MASK);
3215 __STATIC_INLINE
bool DL_I2C_isACKOverrideOnPECDoneEnabled(
const I2C_Regs *i2c)
3217 return ((i2c->SLAVE.SACKCTL & I2C_SACKCTL_ACKOEN_ON_PECDONE_MASK) ==
3218 I2C_SACKCTL_ACKOEN_ON_PECDONE_ENABLE);
3231 __STATIC_INLINE
void DL_I2C_enableACKOverrideOnPECDone(I2C_Regs *i2c)
3233 i2c->SLAVE.SACKCTL |= I2C_SACKCTL_ACKOEN_ON_PECDONE_ENABLE;
3246 __STATIC_INLINE uint32_t DL_I2C_getTargetPECCountValue(
const I2C_Regs *i2c)
3248 return (i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECCTL_PECCNT_MASK);
3262 __STATIC_INLINE
void DL_I2C_setTargetPECCountValue(
3263 I2C_Regs *i2c, uint32_t count)
3266 &i2c->SLAVE.TARGET_PECCTL, count, I2C_TARGET_PECCTL_PECCNT_MASK);
3274 __STATIC_INLINE
void DL_I2C_disableTargetPEC(I2C_Regs *i2c)
3276 i2c->SLAVE.TARGET_PECCTL &= ~(I2C_TARGET_PECCTL_PECEN_MASK);
3290 __STATIC_INLINE
bool DL_I2C_isTargetPECEnabled(
const I2C_Regs *i2c)
3292 return ((i2c->SLAVE.TARGET_PECCTL & I2C_TARGET_PECCTL_PECEN_MASK) ==
3293 I2C_TARGET_PECCTL_PECEN_ENABLE);
3310 __STATIC_INLINE
void DL_I2C_enableTargetPEC(I2C_Regs *i2c)
3312 i2c->SLAVE.TARGET_PECCTL |= I2C_TARGET_PECCTL_PECEN_ENABLE;
3325 __STATIC_INLINE uint32_t DL_I2C_getTargetCurrentPECCount(
const I2C_Regs *i2c)
3327 return (i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECBYTECNT_MASK);
3343 __STATIC_INLINE DL_I2C_TARGET_PEC_STATUS DL_I2C_getTargetPECCheckedStatus(
3344 const I2C_Regs *i2c)
3347 i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECSTS_CHECK_MASK;
3349 return (DL_I2C_TARGET_PEC_STATUS)(status);
3364 __STATIC_INLINE DL_I2C_TARGET_PEC_CHECK_ERROR DL_I2C_getTargetPECCheckError(
3365 const I2C_Regs *i2c)
3368 i2c->SLAVE.TARGET_PECSR & I2C_TARGET_PECSR_PECSTS_ERROR_MASK;
3370 return (DL_I2C_TARGET_PEC_CHECK_ERROR)(status);
3382 __STATIC_INLINE DL_I2C_TX_FIFO_LEVEL DL_I2C_getTargetTXFIFOThreshold(
3383 const I2C_Regs *i2c)
3385 uint32_t level = i2c->SLAVE.SFIFOCTL & I2C_SFIFOCTL_TXTRIG_MASK;
3387 return (DL_I2C_TX_FIFO_LEVEL)(level);
3398 __STATIC_INLINE
void DL_I2C_setTargetTXFIFOThreshold(
3399 I2C_Regs *i2c, DL_I2C_TX_FIFO_LEVEL level)
3402 (uint32_t) I2C_SFIFOCTL_TXTRIG_MASK);
3413 __STATIC_INLINE
void DL_I2C_stopFlushTargetTXFIFO(I2C_Regs *i2c)
3415 i2c->SLAVE.SFIFOCTL &= ~(I2C_SFIFOCTL_TXFLUSH_MASK);
3423 __STATIC_INLINE
void DL_I2C_startFlushTargetTXFIFO(I2C_Regs *i2c)
3425 i2c->SLAVE.SFIFOCTL |= I2C_SFIFOCTL_TXFLUSH_MASK;
3436 __STATIC_INLINE
void DL_I2C_stopFlushTargetRXFIFO(I2C_Regs *i2c)
3438 i2c->SLAVE.SFIFOCTL &= ~(I2C_SFIFOCTL_RXFLUSH_MASK);
3446 __STATIC_INLINE
void DL_I2C_startFlushTargetRXFIFO(I2C_Regs *i2c)
3448 i2c->SLAVE.SFIFOCTL |= I2C_SFIFOCTL_RXFLUSH_MASK;
3460 __STATIC_INLINE DL_I2C_RX_FIFO_LEVEL DL_I2C_getTargetRXFIFOThreshold(
3461 const I2C_Regs *i2c)
3463 uint32_t level = i2c->SLAVE.SFIFOCTL & I2C_SFIFOCTL_RXTRIG_MASK;
3465 return (DL_I2C_RX_FIFO_LEVEL)(level);
3476 __STATIC_INLINE
void DL_I2C_setTargetRXFIFOThreshold(
3477 I2C_Regs *i2c, DL_I2C_RX_FIFO_LEVEL level)
3480 &i2c->SLAVE.SFIFOCTL, (uint32_t) level, I2C_SFIFOCTL_RXTRIG_MASK);
3492 __STATIC_INLINE uint32_t DL_I2C_getTargetRXFIFOCounter(
const I2C_Regs *i2c)
3494 return (i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFIFOCNT_MASK);
3506 __STATIC_INLINE uint32_t DL_I2C_getTargetTXFIFOCounter(
const I2C_Regs *i2c)
3508 return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFIFOCNT_MASK) >>
3509 I2C_SFIFOSR_TXFIFOCNT_OFS);
3522 __STATIC_INLINE
bool DL_I2C_isTargetRXFIFOFlushActive(
const I2C_Regs *i2c)
3524 return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_RXFLUSH_MASK) ==
3525 I2C_SFIFOSR_RXFLUSH_ACTIVE);
3538 __STATIC_INLINE
bool DL_I2C_isTargetTXFIFOFlushActive(
const I2C_Regs *i2c)
3540 return ((i2c->SLAVE.SFIFOSR & I2C_SFIFOSR_TXFLUSH_MASK) ==
3541 I2C_SFIFOSR_TXFLUSH_ACTIVE);
3552 __STATIC_INLINE
void DL_I2C_enableInterrupt(
3553 I2C_Regs *i2c, uint32_t interruptMask)
3555 i2c->CPU_INT.IMASK |= interruptMask;
3566 __STATIC_INLINE
void DL_I2C_disableInterrupt(
3567 I2C_Regs *i2c, uint32_t interruptMask)
3569 i2c->CPU_INT.IMASK &= ~(interruptMask);
3584 __STATIC_INLINE uint32_t DL_I2C_getEnabledInterrupts(
3585 const I2C_Regs *i2c, uint32_t interruptMask)
3587 return (i2c->CPU_INT.IMASK & interruptMask);
3607 __STATIC_INLINE uint32_t DL_I2C_getEnabledInterruptStatus(
3608 const I2C_Regs *i2c, uint32_t interruptMask)
3610 return (i2c->CPU_INT.MIS & interruptMask);
3628 __STATIC_INLINE uint32_t DL_I2C_getRawInterruptStatus(
3629 const I2C_Regs *i2c, uint32_t interruptMask)
3631 return (i2c->CPU_INT.RIS & interruptMask);
3646 __STATIC_INLINE DL_I2C_IIDX DL_I2C_getPendingInterrupt(
const I2C_Regs *i2c)
3648 return ((DL_I2C_IIDX) i2c->CPU_INT.IIDX);
3659 __STATIC_INLINE
void DL_I2C_clearInterruptStatus(
3660 I2C_Regs *i2c, uint32_t interruptMask)
3662 i2c->CPU_INT.ICLR = interruptMask;
3681 __STATIC_INLINE
void DL_I2C_enableDMAEvent(
3682 I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3685 case DL_I2C_EVENT_ROUTE_1:
3686 i2c->DMA_TRIG1.IMASK = interrupt;
3688 case DL_I2C_EVENT_ROUTE_2:
3689 i2c->DMA_TRIG0.IMASK = interrupt;
3710 __STATIC_INLINE
void DL_I2C_disableDMAEvent(
3711 I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3714 case DL_I2C_EVENT_ROUTE_1:
3715 i2c->DMA_TRIG1.IMASK &= ~(interrupt);
3717 case DL_I2C_EVENT_ROUTE_2:
3718 i2c->DMA_TRIG0.IMASK &= ~(interrupt);
3743 __STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEvents(
3744 I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3746 volatile uint32_t *pReg = &i2c->DMA_TRIG1.IMASK;
3748 return ((*(pReg + (uint32_t) index) & interruptMask));
3773 __STATIC_INLINE uint32_t DL_I2C_getEnabledDMAEventStatus(
3774 const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3776 const volatile uint32_t *pReg = &i2c->DMA_TRIG1.MIS;
3778 return ((*(pReg + (uint32_t) index) & interruptMask));
3799 __STATIC_INLINE uint32_t DL_I2C_getRawDMAEventStatus(
3800 const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interruptMask)
3802 const volatile uint32_t *pReg = &i2c->DMA_TRIG1.RIS;
3804 return ((*(pReg + (uint32_t) index) & interruptMask));
3823 __STATIC_INLINE DL_I2C_DMA_IIDX DL_I2C_getPendingDMAEvent(
3824 const I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index)
3826 const volatile uint32_t *pReg = &i2c->DMA_TRIG1.IIDX;
3828 return (DL_I2C_DMA_IIDX)((*(pReg + (uint32_t) index)));
3842 __STATIC_INLINE
void DL_I2C_clearDMAEvent(
3843 I2C_Regs *i2c, DL_I2C_EVENT_ROUTE index, uint32_t interrupt)
3846 case DL_I2C_EVENT_ROUTE_1:
3847 i2c->DMA_TRIG1.ICLR |= interrupt;
3849 case DL_I2C_EVENT_ROUTE_2:
3850 i2c->DMA_TRIG0.ICLR |= interrupt;
3865 __STATIC_INLINE
void DL_I2C_disableGlitchFilterChaining(I2C_Regs *i2c)
3867 i2c->GFCTL &= ~(I2C_GFCTL_CHAIN_MASK);
3880 __STATIC_INLINE
bool DL_I2C_isGlitchFilterChainingEnabled(
const I2C_Regs *i2c)
3882 return ((i2c->GFCTL & I2C_GFCTL_CHAIN_MASK) == I2C_GFCTL_CHAIN_ENABLE);
3893 __STATIC_INLINE
void DL_I2C_enableGlitchFilterChaining(I2C_Regs *i2c)
3895 i2c->GFCTL |= I2C_GFCTL_CHAIN_ENABLE;
3907 __STATIC_INLINE uint32_t DL_I2C_getTimeoutACount(
const I2C_Regs *i2c)
3909 return (i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTLA_MASK);
3928 __STATIC_INLINE
void DL_I2C_setTimeoutACount(I2C_Regs *i2c, uint32_t count)
3938 __STATIC_INLINE
void DL_I2C_disableTimeoutA(I2C_Regs *i2c)
3940 i2c->TIMEOUT_CTL &= ~(I2C_TIMEOUT_CTL_TCNTAEN_MASK);
3953 __STATIC_INLINE
bool DL_I2C_isTimeoutAEnabled(
const I2C_Regs *i2c)
3955 return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTAEN_MASK) ==
3956 I2C_TIMEOUT_CTL_TCNTAEN_ENABLE);
3964 __STATIC_INLINE
void DL_I2C_enableTimeoutA(I2C_Regs *i2c)
3966 i2c->TIMEOUT_CTL |= I2C_TIMEOUT_CTL_TCNTAEN_ENABLE;
3981 __STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutACounter(
const I2C_Regs *i2c)
3983 return (i2c->TIMEOUT_CNT & I2C_TIMEOUT_CNT_TCNTA_MASK);
3995 __STATIC_INLINE uint32_t DL_I2C_getTimeoutBCount(
const I2C_Regs *i2c)
3997 return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTLB_MASK) >>
3998 I2C_TIMEOUT_CTL_TCNTLB_OFS);
4015 __STATIC_INLINE
void DL_I2C_setTimeoutBCount(I2C_Regs *i2c, uint32_t count)
4018 (count << I2C_TIMEOUT_CTL_TCNTLB_OFS), I2C_TIMEOUT_CTL_TCNTLB_MASK);
4026 __STATIC_INLINE
void DL_I2C_disableTimeoutB(I2C_Regs *i2c)
4028 i2c->TIMEOUT_CTL &= ~(I2C_TIMEOUT_CTL_TCNTBEN_MASK);
4041 __STATIC_INLINE
bool DL_I2C_isTimeoutBEnabled(
const I2C_Regs *i2c)
4043 return ((i2c->TIMEOUT_CTL & I2C_TIMEOUT_CTL_TCNTBEN_MASK) ==
4044 I2C_TIMEOUT_CTL_TCNTBEN_ENABLE);
4052 __STATIC_INLINE
void DL_I2C_enableTimeoutB(I2C_Regs *i2c)
4054 i2c->TIMEOUT_CTL |= I2C_TIMEOUT_CTL_TCNTBEN_ENABLE;
4069 __STATIC_INLINE uint32_t DL_I2C_getCurrentTimeoutBCounter(
const I2C_Regs *i2c)
4071 return (i2c->TIMEOUT_CNT & I2C_TIMEOUT_CNT_TCNTB_MASK);
__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