MSPM0C1105_C1106 Driver Library  2.05.01.00
dl_spi.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_spi.h
34  * @brief SPI Driver Library
35  * @defgroup SPI Serial Peripheral Interface (SPI)
36  *
37  * @anchor ti_dl_dl_spi_Overview
38  * # Overview
39  *
40  * The Serial Peripheral Interface Driver Library allows full configuration of
41  * the MSPM0 SPI module.
42  * The serial peripheral interface (SPI) module provides a standardized
43  * serial interface to transfer data between MSPM0 devices and other external
44  * devices with SPI interface.
45  *
46  * <hr>
47  ******************************************************************************
48  */
52 #ifndef ti_dl_dl_spi__include
53 #define ti_dl_dl_spi__include
54 
55 #include <stdbool.h>
56 #include <stdint.h>
57 
58 #include <ti/devices/msp/msp.h>
59 #include <ti/driverlib/dl_common.h>
60 
61 #ifdef __MSPM0_HAS_SPI__
62 
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66 
67 /* clang-format off */
68 
75 #define DL_SPI_CD_MODE_DATA (SPI_CTL1_CDMODE_DATA >> SPI_CTL1_CDMODE_OFS)
76 
80 #define DL_SPI_CD_MODE_COMMAND (SPI_CTL1_CDMODE_COMMAND >> SPI_CTL1_CDMODE_OFS)
81 
82 
92 #define DL_SPI_INTERRUPT_DMA_DONE_TX (SPI_CPU_INT_IMASK_DMA_DONE_TX_SET)
93 
97 #define DL_SPI_INTERRUPT_DMA_DONE_RX (SPI_CPU_INT_IMASK_DMA_DONE_RX_SET)
98 
101 #define DL_SPI_INTERRUPT_IDLE (SPI_CPU_INT_IMASK_IDLE_SET)
102 
106 #define DL_SPI_INTERRUPT_TX_EMPTY (SPI_CPU_INT_IMASK_TXEMPTY_SET)
107 
111 #define DL_SPI_INTERRUPT_TX (SPI_CPU_INT_IMASK_TX_SET)
112 
116 #define DL_SPI_INTERRUPT_RX (SPI_CPU_INT_IMASK_RX_SET)
117 
121 #define DL_SPI_INTERRUPT_RX_TIMEOUT (SPI_CPU_INT_IMASK_RTOUT_SET)
122 
126 #define DL_SPI_INTERRUPT_RX_FULL (SPI_CPU_INT_IMASK_RXFULL_SET)
127 
131 #define DL_SPI_INTERRUPT_TX_UNDERFLOW (SPI_CPU_INT_IMASK_TXFIFO_UNF_SET)
132 
136 #define DL_SPI_INTERRUPT_PARITY_ERROR (SPI_CPU_INT_IMASK_PER_SET)
137 
141 #define DL_SPI_INTERRUPT_RX_OVERFLOW (SPI_CPU_INT_IMASK_RXFIFO_OVF_SET)
142 
146 typedef enum {
148  DL_SPI_DMA_IIDX_RX_TRIGGER = SPI_DMA_TRIG_RX_IIDX_STAT_RX_EVT,
150  DL_SPI_DMA_IIDX_RX_TIMEOUT_TRIGGER = SPI_DMA_TRIG_RX_IIDX_STAT_RTOUT_EVT
152 
154 typedef enum {
156  DL_SPI_DMA_IIDX_TX_TRIGGER = SPI_DMA_TRIG_TX_IIDX_STAT_TX_EVT
158 
165 #define DL_SPI_DMA_INTERRUPT_RX (SPI_DMA_TRIG_RX_IMASK_RX_SET)
166 
170 #define DL_SPI_DMA_INTERRUPT_RX_TIMEOUT (SPI_DMA_TRIG_RX_IMASK_RTOUT_SET)
171 
177 #define DL_SPI_DMA_INTERRUPT_TX (SPI_DMA_TRIG_TX_IMASK_TX_SET)
178 
179 /* clang-format on */
180 
182 typedef enum {
185  (SPI_CTL1_PES_ENABLE | SPI_CTL1_PREN_ENABLE | SPI_CTL1_PTEN_ENABLE),
188  (SPI_CTL1_PES_DISABLE | SPI_CTL1_PREN_ENABLE | SPI_CTL1_PTEN_ENABLE),
190  DL_SPI_PARITY_NONE = (SPI_CTL1_PREN_DISABLE | SPI_CTL1_PTEN_DISABLE)
191 } DL_SPI_PARITY;
192 
194 typedef enum {
197  (SPI_CTL0_SPO_LOW | SPI_CTL0_SPH_FIRST | SPI_CTL0_FRF_MOTOROLA_3WIRE),
200  (SPI_CTL0_SPO_LOW | SPI_CTL0_SPH_SECOND | SPI_CTL0_FRF_MOTOROLA_3WIRE),
203  (SPI_CTL0_SPO_HIGH | SPI_CTL0_SPH_FIRST | SPI_CTL0_FRF_MOTOROLA_3WIRE),
206  (SPI_CTL0_SPO_HIGH | SPI_CTL0_SPH_SECOND |
207  SPI_CTL0_FRF_MOTOROLA_3WIRE),
210  (SPI_CTL0_SPO_LOW | SPI_CTL0_SPH_FIRST | SPI_CTL0_FRF_MOTOROLA_4WIRE),
213  (SPI_CTL0_SPO_LOW | SPI_CTL0_SPH_SECOND | SPI_CTL0_FRF_MOTOROLA_4WIRE),
216  (SPI_CTL0_SPO_HIGH | SPI_CTL0_SPH_FIRST | SPI_CTL0_FRF_MOTOROLA_4WIRE),
219  (SPI_CTL0_SPO_HIGH | SPI_CTL0_SPH_SECOND |
220  SPI_CTL0_FRF_MOTOROLA_4WIRE),
222  DL_SPI_FRAME_FORMAT_TI_SYNC = (SPI_CTL0_FRF_TI_SYNC),
224 
226 typedef enum {
228  DL_SPI_MODE_CONTROLLER = (SPI_CTL1_CP_ENABLE),
230  DL_SPI_MODE_PERIPHERAL = (SPI_CTL1_CP_DISABLE)
231 } DL_SPI_MODE;
232 
234 typedef enum {
236  DL_SPI_BIT_ORDER_MSB_FIRST = (SPI_CTL1_MSB_ENABLE),
238  DL_SPI_BIT_ORDER_LSB_FIRST = (SPI_CTL1_MSB_DISABLE)
240 
242 typedef enum {
244  DL_SPI_DATA_SIZE_4 = (SPI_CTL0_DSS_DSS_4),
246  DL_SPI_DATA_SIZE_5 = (SPI_CTL0_DSS_DSS_5),
248  DL_SPI_DATA_SIZE_6 = (SPI_CTL0_DSS_DSS_6),
250  DL_SPI_DATA_SIZE_7 = (SPI_CTL0_DSS_DSS_7),
252  DL_SPI_DATA_SIZE_8 = (SPI_CTL0_DSS_DSS_8),
254  DL_SPI_DATA_SIZE_9 = (SPI_CTL0_DSS_DSS_9),
256  DL_SPI_DATA_SIZE_10 = (SPI_CTL0_DSS_DSS_10),
258  DL_SPI_DATA_SIZE_11 = (SPI_CTL0_DSS_DSS_11),
260  DL_SPI_DATA_SIZE_12 = (SPI_CTL0_DSS_DSS_12),
262  DL_SPI_DATA_SIZE_13 = (SPI_CTL0_DSS_DSS_13),
264  DL_SPI_DATA_SIZE_14 = (SPI_CTL0_DSS_DSS_14),
266  DL_SPI_DATA_SIZE_15 = (SPI_CTL0_DSS_DSS_15),
268  DL_SPI_DATA_SIZE_16 = (SPI_CTL0_DSS_DSS_16),
270 
272 typedef enum {
274  DL_SPI_CHIP_SELECT_0 = (SPI_CTL0_CSSEL_CSSEL_0),
276  DL_SPI_CHIP_SELECT_1 = (SPI_CTL0_CSSEL_CSSEL_1),
278  DL_SPI_CHIP_SELECT_2 = (SPI_CTL0_CSSEL_CSSEL_2),
280  DL_SPI_CHIP_SELECT_3 = (SPI_CTL0_CSSEL_CSSEL_3),
284 
286 typedef enum {
288  DL_SPI_TX_FIFO_LEVEL_3_4_EMPTY = SPI_IFLS_TXIFLSEL_LVL_3_4,
290  DL_SPI_TX_FIFO_LEVEL_1_2_EMPTY = SPI_IFLS_TXIFLSEL_LVL_1_2,
292  DL_SPI_TX_FIFO_LEVEL_1_4_EMPTY = SPI_IFLS_TXIFLSEL_LVL_1_4,
294  DL_SPI_TX_FIFO_LEVEL_EMPTY = SPI_IFLS_TXIFLSEL_LVL_EMPTY,
296  DL_SPI_TX_FIFO_LEVEL_ONE_FRAME = SPI_IFLS_TXIFLSEL_LEVEL_1
298 
300 typedef enum {
302  DL_SPI_RX_FIFO_LEVEL_ONE_FRAME = SPI_IFLS_RXIFLSEL_LEVEL_1,
304  DL_SPI_RX_FIFO_LEVEL_FULL = SPI_IFLS_RXIFLSEL_LVL_FULL,
306  DL_SPI_RX_FIFO_LEVEL_3_4_FULL = SPI_IFLS_RXIFLSEL_LVL_3_4,
308  DL_SPI_RX_FIFO_LEVEL_1_2_FULL = SPI_IFLS_RXIFLSEL_LVL_1_2,
310  DL_SPI_RX_FIFO_LEVEL_1_4_FULL = SPI_IFLS_RXIFLSEL_LVL_1_4,
312 
314 typedef enum {
315 
317  DL_SPI_IIDX_DMA_DONE_TX = SPI_CPU_INT_IIDX_STAT_DMA_DONE_TX_EVT,
319  DL_SPI_IIDX_DMA_DONE_RX = SPI_CPU_INT_IIDX_STAT_DMA_DONE_RX_EVT,
323  DL_SPI_IIDX_IDLE = SPI_CPU_INT_IIDX_STAT_IDLE_EVT,
325  DL_SPI_IIDX_TX_EMPTY = SPI_CPU_INT_IIDX_STAT_TX_EMPTY,
327  DL_SPI_IIDX_TX = SPI_CPU_INT_IIDX_STAT_TX_EVT,
329  DL_SPI_IIDX_RX = SPI_CPU_INT_IIDX_STAT_RX_EVT,
331  DL_SPI_IIDX_RX_TIMEOUT = SPI_CPU_INT_IIDX_STAT_RTOUT_EVT,
332 
334  DL_SPI_IIDX_RX_FULL = SPI_CPU_INT_IIDX_STAT_RXFULL_EVT,
336  DL_SPI_IIDX_TX_UNDERFLOW = SPI_CPU_INT_IIDX_STAT_TXFIFO_UNF_EVT,
337 
339  DL_SPI_IIDX_PARITY_ERROR = SPI_CPU_INT_IIDX_STAT_PER_EVT,
341  DL_SPI_IIDX_RX_OVERFLOW = SPI_CPU_INT_IIDX_STAT_RXFIFO_OFV_EVT
342 } DL_SPI_IIDX;
343 
345 typedef enum {
347  DL_SPI_CLOCK_DIVIDE_RATIO_1 = SPI_CLKDIV_RATIO_DIV_BY_1,
349  DL_SPI_CLOCK_DIVIDE_RATIO_2 = SPI_CLKDIV_RATIO_DIV_BY_2,
351  DL_SPI_CLOCK_DIVIDE_RATIO_3 = SPI_CLKDIV_RATIO_DIV_BY_3,
353  DL_SPI_CLOCK_DIVIDE_RATIO_4 = SPI_CLKDIV_RATIO_DIV_BY_4,
355  DL_SPI_CLOCK_DIVIDE_RATIO_5 = SPI_CLKDIV_RATIO_DIV_BY_5,
357  DL_SPI_CLOCK_DIVIDE_RATIO_6 = SPI_CLKDIV_RATIO_DIV_BY_6,
359  DL_SPI_CLOCK_DIVIDE_RATIO_7 = SPI_CLKDIV_RATIO_DIV_BY_7,
361  DL_SPI_CLOCK_DIVIDE_RATIO_8 = SPI_CLKDIV_RATIO_DIV_BY_8
363 
365 typedef enum {
367  DL_SPI_CLOCK_BUSCLK = SPI_CLKSEL_SYSCLK_SEL_ENABLE,
369  DL_SPI_CLOCK_MFCLK = SPI_CLKSEL_MFCLK_SEL_ENABLE,
371  DL_SPI_CLOCK_LFCLK = SPI_CLKSEL_LFCLK_SEL_ENABLE
372 } DL_SPI_CLOCK;
373 
377 typedef struct {
380 
386 
392 
395 
398 
404 
405 } DL_SPI_Config;
406 
410 typedef struct {
412  DL_SPI_CLOCK clockSel;
413 
415  DL_SPI_CLOCK_DIVIDE_RATIO divideRatio;
416 
418 
424 typedef struct {
429  uint32_t controlWord0;
430 
435  uint32_t controlWord1;
436 
439  uint32_t clockControl;
440 
442  uint32_t clockSel;
443 
445  uint32_t divideRatio;
446 
451 
454  uint32_t interruptMask0;
455 
458  uint32_t interruptMask1;
459 
462  uint32_t interruptMask2;
463 
466  bool backupRdy;
468 
479 void DL_SPI_init(SPI_Regs *spi, const DL_SPI_Config *config);
480 
492 __STATIC_INLINE void DL_SPI_enablePower(SPI_Regs *spi)
493 {
494  spi->GPRCM.PWREN = (SPI_PWREN_KEY_UNLOCK_W | SPI_PWREN_ENABLE_ENABLE);
495 }
496 
508 __STATIC_INLINE void DL_SPI_disablePower(SPI_Regs *spi)
509 {
510  spi->GPRCM.PWREN = (SPI_PWREN_KEY_UNLOCK_W | SPI_PWREN_ENABLE_DISABLE);
511 }
512 
529 __STATIC_INLINE bool DL_SPI_isPowerEnabled(const SPI_Regs *spi)
530 {
531  return (
532  (spi->GPRCM.PWREN & SPI_PWREN_ENABLE_MASK) == SPI_PWREN_ENABLE_ENABLE);
533 }
534 
540 __STATIC_INLINE void DL_SPI_reset(SPI_Regs *spi)
541 {
542  spi->GPRCM.RSTCTL =
543  (SPI_RSTCTL_KEY_UNLOCK_W | SPI_RSTCTL_RESETSTKYCLR_CLR |
544  SPI_RSTCTL_RESETASSERT_ASSERT);
545 }
546 
556 __STATIC_INLINE bool DL_SPI_isReset(const SPI_Regs *spi)
557 {
558  return ((spi->GPRCM.STAT & SPI_GPRCM_STAT_RESETSTKY_MASK) ==
559  SPI_GPRCM_STAT_RESETSTKY_RESET);
560 }
561 
567 __STATIC_INLINE void DL_SPI_enable(SPI_Regs *spi)
568 {
569  spi->CTL1 |= SPI_CTL1_ENABLE_ENABLE;
570 }
571 
582 __STATIC_INLINE bool DL_SPI_isEnabled(const SPI_Regs *spi)
583 {
584  return ((spi->CTL1 & SPI_CTL1_ENABLE_MASK) == SPI_CTL1_ENABLE_ENABLE);
585 }
586 
592 __STATIC_INLINE void DL_SPI_disable(SPI_Regs *spi)
593 {
594  spi->CTL1 &= ~(SPI_CTL1_ENABLE_MASK);
595 }
596 
605 void DL_SPI_setClockConfig(SPI_Regs *spi, const DL_SPI_ClockConfig *config);
606 
615 void DL_SPI_getClockConfig(const SPI_Regs *spi, DL_SPI_ClockConfig *config);
616 
627 __STATIC_INLINE bool DL_SPI_isBusy(const SPI_Regs *spi)
628 {
629  return ((spi->STAT & SPI_STAT_BUSY_MASK) == SPI_STAT_BUSY_ACTIVE);
630 }
631 
642 __STATIC_INLINE bool DL_SPI_isTXFIFOEmpty(const SPI_Regs *spi)
643 {
644  return ((spi->STAT & SPI_STAT_TFE_MASK) == SPI_STAT_TFE_EMPTY);
645 }
646 
657 __STATIC_INLINE bool DL_SPI_isTXFIFOFull(const SPI_Regs *spi)
658 {
659  return ((spi->STAT & SPI_STAT_TNF_MASK) == SPI_STAT_TNF_FULL);
660 }
661 
672 __STATIC_INLINE bool DL_SPI_isRXFIFOEmpty(const SPI_Regs *spi)
673 {
674  return ((spi->STAT & SPI_STAT_RFE_MASK) == SPI_STAT_RFE_EMPTY);
675 }
676 
687 __STATIC_INLINE bool DL_SPI_isRXFIFOFull(const SPI_Regs *spi)
688 {
689  return ((spi->STAT & SPI_STAT_RNF_MASK) == SPI_STAT_RNF_FULL);
690 }
691 
710 __STATIC_INLINE void DL_SPI_setParity(SPI_Regs *spi, DL_SPI_PARITY parity)
711 {
712  DL_Common_updateReg(&spi->CTL1, (uint32_t) parity,
713  (SPI_CTL1_PREN_MASK | SPI_CTL1_PTEN_MASK | SPI_CTL1_PES_MASK));
714 }
715 
725 __STATIC_INLINE DL_SPI_PARITY DL_SPI_getParity(const SPI_Regs *spi)
726 {
727  uint32_t parity = spi->CTL1 & (SPI_CTL1_PES_MASK | SPI_CTL1_PREN_MASK |
728  SPI_CTL1_PTEN_MASK);
729 
730  return (DL_SPI_PARITY)(parity);
731 }
732 
743 __STATIC_INLINE void DL_SPI_enableReceiveParity(SPI_Regs *spi)
744 {
745  spi->CTL1 |= SPI_CTL1_PREN_ENABLE;
746 }
747 
758 __STATIC_INLINE void DL_SPI_disableReceiveParity(SPI_Regs *spi)
759 {
760  spi->CTL1 &= ~(SPI_CTL1_PREN_MASK);
761 }
762 
773 __STATIC_INLINE bool DL_SPI_isReceiveParityEnabled(const SPI_Regs *spi)
774 {
775  return ((spi->CTL1 & SPI_CTL1_PREN_MASK) == SPI_CTL1_PREN_ENABLE);
776 }
777 
788 __STATIC_INLINE void DL_SPI_enableTransmitParity(SPI_Regs *spi)
789 {
790  spi->CTL1 |= SPI_CTL1_PTEN_ENABLE;
791 }
792 
803 __STATIC_INLINE void DL_SPI_disableTransmitParity(SPI_Regs *spi)
804 {
805  spi->CTL1 &= ~(SPI_CTL1_PTEN_MASK);
806 }
807 
818 __STATIC_INLINE bool DL_SPI_isTransmitParityEnabled(const SPI_Regs *spi)
819 {
820  return ((spi->CTL1 & SPI_CTL1_PTEN_MASK) == SPI_CTL1_PTEN_ENABLE);
821 }
822 
835 __STATIC_INLINE void DL_SPI_setFrameFormat(
836  SPI_Regs *spi, DL_SPI_FRAME_FORMAT frameFormat)
837 {
838  DL_Common_updateReg(&spi->CTL0, (uint32_t) frameFormat,
839  (SPI_CTL0_FRF_MASK | SPI_CTL0_SPO_MASK | SPI_CTL0_SPH_MASK));
840 }
841 
851 __STATIC_INLINE DL_SPI_FRAME_FORMAT DL_SPI_getFrameFormat(const SPI_Regs *spi)
852 {
853  uint32_t frameFormat = spi->CTL0 & (SPI_CTL0_FRF_MASK | SPI_CTL0_SPO_MASK |
854  SPI_CTL0_SPH_MASK);
855 
856  return (DL_SPI_FRAME_FORMAT)(frameFormat);
857 }
858 
868 __STATIC_INLINE void DL_SPI_setDataSize(
869  SPI_Regs *spi, DL_SPI_DATA_SIZE dataSize)
870 {
871  DL_Common_updateReg(&spi->CTL0, (uint32_t) dataSize, SPI_CTL0_DSS_MASK);
872 }
873 
883 __STATIC_INLINE DL_SPI_DATA_SIZE DL_SPI_getDataSize(const SPI_Regs *spi)
884 {
885  uint32_t dataSize = spi->CTL0 & SPI_CTL0_DSS_MASK;
886 
887  return (DL_SPI_DATA_SIZE)(dataSize);
888 }
889 
898 __STATIC_INLINE void DL_SPI_setMode(SPI_Regs *spi, DL_SPI_MODE mode)
899 {
900  DL_Common_updateReg(&spi->CTL1, (uint32_t) mode, SPI_CTL1_CP_MASK);
901 }
902 
912 __STATIC_INLINE DL_SPI_MODE DL_SPI_getMode(const SPI_Regs *spi)
913 {
914  uint32_t mode = spi->CTL1 & SPI_CTL1_CP_MASK;
915 
916  return (DL_SPI_MODE)(mode);
917 }
918 
928 __STATIC_INLINE void DL_SPI_setBitOrder(
929  SPI_Regs *spi, DL_SPI_BIT_ORDER bitOrder)
930 {
931  DL_Common_updateReg(&spi->CTL1, (uint32_t) bitOrder, SPI_CTL1_MSB_MASK);
932 }
933 
943 __STATIC_INLINE DL_SPI_BIT_ORDER DL_SPI_getBitOrder(const SPI_Regs *spi)
944 {
945  uint32_t bitOrder = spi->CTL1 & SPI_CTL1_MSB_MASK;
946 
947  return (DL_SPI_BIT_ORDER)(bitOrder);
948 }
949 
958 __STATIC_INLINE void DL_SPI_enableLoopbackMode(SPI_Regs *spi)
959 {
960  spi->CTL1 |= SPI_CTL1_LBM_ENABLE;
961 }
962 
971 __STATIC_INLINE void DL_SPI_disableLoopbackMode(SPI_Regs *spi)
972 {
973  spi->CTL1 &= ~(SPI_CTL1_LBM_MASK);
974 }
975 
986 __STATIC_INLINE bool DL_SPI_isLoopbackModeEnabled(const SPI_Regs *spi)
987 {
988  return ((spi->CTL1 & SPI_CTL1_LBM_MASK) == SPI_CTL1_LBM_ENABLE);
989 }
990 
1005 __STATIC_INLINE void DL_SPI_setRepeatTransmit(
1006  SPI_Regs *spi, uint32_t numRepeats)
1007 {
1008  DL_Common_updateReg(&spi->CTL1, numRepeats << SPI_CTL1_REPEATTX_OFS,
1009  SPI_CTL1_REPEATTX_MASK);
1010 }
1011 
1026 __STATIC_INLINE uint32_t DL_SPI_getRepeatTransmit(const SPI_Regs *spi)
1027 {
1028  return ((spi->CTL1 & SPI_CTL1_REPEATTX_MASK) >> SPI_CTL1_REPEATTX_OFS);
1029 }
1030 
1044  SPI_Regs *spi)
1045 {
1046  spi->CTL0 |= SPI_CTL0_CSCLR_ENABLE;
1047 }
1048 
1060  SPI_Regs *spi)
1061 {
1062  spi->CTL0 &= ~(SPI_CTL0_CSCLR_MASK);
1063 }
1064 
1076  const SPI_Regs *spi)
1077 {
1078  return ((spi->CTL0 & SPI_CTL0_CSCLR_MASK) == SPI_CTL0_CSCLR_ENABLE);
1079 }
1080 
1092 __STATIC_INLINE void DL_SPI_enablePacking(SPI_Regs *spi)
1093 {
1094  spi->CTL0 |= SPI_CTL0_PACKEN_ENABLED;
1095 }
1096 
1108 __STATIC_INLINE void DL_SPI_disablePacking(SPI_Regs *spi)
1109 {
1110  spi->CTL0 &= ~(SPI_CTL0_PACKEN_MASK);
1111 }
1112 
1123 __STATIC_INLINE bool DL_SPI_isPackingEnabled(const SPI_Regs *spi)
1124 {
1125  return ((spi->CTL0 & SPI_CTL0_PACKEN_MASK) == SPI_CTL0_PACKEN_ENABLED);
1126 }
1127 
1142 __STATIC_INLINE void DL_SPI_setChipSelect(
1143  SPI_Regs *spi, DL_SPI_CHIP_SELECT chipSelect)
1144 {
1146  &spi->CTL0, (uint32_t) chipSelect, SPI_CTL0_CSSEL_MASK);
1147 }
1148 
1160 __STATIC_INLINE DL_SPI_CHIP_SELECT DL_SPI_getChipSelect(const SPI_Regs *spi)
1161 {
1162  uint32_t chipSelect = spi->CTL0 & SPI_CTL0_CSSEL_MASK;
1163 
1164  return (DL_SPI_CHIP_SELECT)(chipSelect);
1165 }
1166 
1181  SPI_Regs *spi, uint32_t timeout)
1182 {
1183  DL_Common_updateReg(&spi->CTL1, timeout << SPI_CTL1_RXTIMEOUT_OFS,
1184  SPI_CTL1_RXTIMEOUT_MASK);
1185 }
1186 
1199 __STATIC_INLINE uint32_t DL_SPI_getPeripheralReceiveTimeout(
1200  const SPI_Regs *spi)
1201 {
1202  return ((spi->CTL1 & SPI_CTL1_RXTIMEOUT_MASK) >> SPI_CTL1_RXTIMEOUT_OFS);
1203 }
1204 
1228  SPI_Regs *spi, uint32_t config)
1229 {
1231  &spi->CTL1, config << SPI_CTL1_CDMODE_OFS, SPI_CTL1_CDMODE_MASK);
1232 }
1233 
1250  const SPI_Regs *spi)
1251 {
1252  return ((spi->CTL1 & SPI_CTL1_CDMODE_MASK) >> SPI_CTL1_CDMODE_OFS);
1253 }
1254 
1265 __STATIC_INLINE void DL_SPI_enableControllerCommandDataMode(SPI_Regs *spi)
1266 {
1267  spi->CTL1 |= SPI_CTL1_CDENABLE_ENABLE;
1268 }
1269 
1275 __STATIC_INLINE void DL_SPI_disableControllerCommandDataMode(SPI_Regs *spi)
1276 {
1277  spi->CTL1 &= ~(SPI_CTL1_CDENABLE_MASK);
1278 }
1279 
1291  const SPI_Regs *spi)
1292 {
1293  return ((spi->CTL1 & SPI_CTL1_CDENABLE_MASK) == SPI_CTL1_CDENABLE_ENABLE);
1294 }
1295 
1306 __STATIC_INLINE void DL_SPI_enablePeripheralDataOutput(SPI_Regs *spi)
1307 {
1308  spi->CTL1 &= ~(SPI_CTL1_POD_MASK);
1309 }
1310 
1322 __STATIC_INLINE void DL_SPI_disablePeripheralDataOutput(SPI_Regs *spi)
1323 {
1324  spi->CTL1 |= SPI_CTL1_POD_ENABLE;
1325 }
1326 
1339 __STATIC_INLINE bool DL_SPI_isPeripheralDataOutputEnabled(const SPI_Regs *spi)
1340 {
1341  return ((spi->CTL1 & SPI_CTL1_POD_MASK) == SPI_CTL1_POD_DISABLE);
1342 }
1343 
1356 __STATIC_INLINE void DL_SPI_setDelayedSampling(SPI_Regs *spi, uint32_t delay)
1357 {
1358  DL_Common_updateReg(&spi->CLKCTL, delay << SPI_CLKCTL_DSAMPLE_OFS,
1359  SPI_CLKCTL_DSAMPLE_MASK);
1360 }
1361 
1377 __STATIC_INLINE uint32_t DL_SPI_getDelayedSampling(const SPI_Regs *spi)
1378 {
1379  return (spi->CLKCTL & SPI_CLKCTL_DSAMPLE_MASK >> SPI_CLKCTL_DSAMPLE_OFS);
1380 }
1381 
1400 __STATIC_INLINE void DL_SPI_setFIFOThreshold(SPI_Regs *spi,
1401  DL_SPI_RX_FIFO_LEVEL rxThreshold, DL_SPI_TX_FIFO_LEVEL txThreshold)
1402 {
1403  DL_Common_updateReg(&spi->IFLS,
1404  (uint32_t) rxThreshold | (uint32_t) txThreshold,
1405  SPI_IFLS_RXIFLSEL_MASK | SPI_IFLS_TXIFLSEL_MASK);
1406 }
1407 
1417 __STATIC_INLINE DL_SPI_TX_FIFO_LEVEL DL_SPI_getTXFIFOThreshold(
1418  const SPI_Regs *spi)
1419 {
1420  uint32_t txThreshold = spi->IFLS & SPI_IFLS_TXIFLSEL_MASK;
1421 
1422  return (DL_SPI_TX_FIFO_LEVEL)(txThreshold);
1423 }
1424 
1434 __STATIC_INLINE DL_SPI_RX_FIFO_LEVEL DL_SPI_getRXFIFOThreshold(
1435  const SPI_Regs *spi)
1436 {
1437  uint32_t rxThreshold = spi->IFLS & SPI_IFLS_RXIFLSEL_MASK;
1438 
1439  return (DL_SPI_RX_FIFO_LEVEL)(rxThreshold);
1440 }
1441 
1459  SPI_Regs *spi, uint32_t SCR)
1460 {
1461  DL_Common_updateReg(&spi->CLKCTL, SCR, SPI_CLKCTL_SCR_MASK);
1462 }
1463 
1473 __STATIC_INLINE uint32_t DL_SPI_getBitRateSerialClockDivider(
1474  const SPI_Regs *spi)
1475 {
1476  return (spi->CLKCTL & SPI_CLKCTL_SCR_MASK);
1477 }
1478 
1494 __STATIC_INLINE void DL_SPI_transmitData8(SPI_Regs *spi, uint8_t data)
1495 {
1496  spi->TXDATA = data;
1497 }
1498 
1514 __STATIC_INLINE void DL_SPI_transmitData16(SPI_Regs *spi, uint16_t data)
1515 {
1516  spi->TXDATA = data;
1517 }
1518 
1540 __STATIC_INLINE void DL_SPI_transmitData32(SPI_Regs *spi, uint32_t data)
1541 {
1542  spi->TXDATA = data;
1543 }
1544 
1561 __STATIC_INLINE uint8_t DL_SPI_receiveData8(const SPI_Regs *spi)
1562 {
1563  return ((uint8_t)(spi->RXDATA));
1564 }
1565 
1582 __STATIC_INLINE uint16_t DL_SPI_receiveData16(const SPI_Regs *spi)
1583 {
1584  return ((uint16_t)(spi->RXDATA));
1585 }
1586 
1609 __STATIC_INLINE uint32_t DL_SPI_receiveData32(const SPI_Regs *spi)
1610 {
1611  return spi->RXDATA;
1612 }
1613 
1622 __STATIC_INLINE void DL_SPI_enableInterrupt(
1623  SPI_Regs *spi, uint32_t interruptMask)
1624 {
1625  spi->CPU_INT.IMASK |= interruptMask;
1626 }
1627 
1636 __STATIC_INLINE void DL_SPI_disableInterrupt(
1637  SPI_Regs *spi, uint32_t interruptMask)
1638 {
1639  spi->CPU_INT.IMASK &= ~(interruptMask);
1640 }
1641 
1654 __STATIC_INLINE uint32_t DL_SPI_getEnabledInterrupts(
1655  const SPI_Regs *spi, uint32_t interruptMask)
1656 {
1657  return (spi->CPU_INT.IMASK & interruptMask);
1658 }
1659 
1677 __STATIC_INLINE uint32_t DL_SPI_getEnabledInterruptStatus(
1678  const SPI_Regs *spi, uint32_t interruptMask)
1679 {
1680  return (spi->CPU_INT.MIS & interruptMask);
1681 }
1682 
1698 __STATIC_INLINE uint32_t DL_SPI_getRawInterruptStatus(
1699  const SPI_Regs *spi, uint32_t interruptMask)
1700 {
1701  return (spi->CPU_INT.RIS & interruptMask);
1702 }
1703 
1716 __STATIC_INLINE DL_SPI_IIDX DL_SPI_getPendingInterrupt(const SPI_Regs *spi)
1717 {
1718  return ((DL_SPI_IIDX) spi->CPU_INT.IIDX);
1719 }
1720 
1729 __STATIC_INLINE void DL_SPI_clearInterruptStatus(
1730  SPI_Regs *spi, uint32_t interruptMask)
1731 {
1732  spi->CPU_INT.ICLR = interruptMask;
1733 }
1734 
1750 void DL_SPI_transmitDataBlocking8(SPI_Regs *spi, uint8_t data);
1751 
1767 void DL_SPI_transmitDataBlocking16(SPI_Regs *spi, uint16_t data);
1768 
1790 void DL_SPI_transmitDataBlocking32(SPI_Regs *spi, uint32_t data);
1791 
1808 uint8_t DL_SPI_receiveDataBlocking8(const SPI_Regs *spi);
1809 
1826 uint16_t DL_SPI_receiveDataBlocking16(const SPI_Regs *spi);
1827 
1850 uint32_t DL_SPI_receiveDataBlocking32(const SPI_Regs *spi);
1851 
1872 bool DL_SPI_transmitDataCheck8(SPI_Regs *spi, uint8_t data);
1873 
1894 bool DL_SPI_transmitDataCheck16(SPI_Regs *spi, uint16_t data);
1895 
1922 bool DL_SPI_transmitDataCheck32(SPI_Regs *spi, uint32_t data);
1923 
1944 bool DL_SPI_receiveDataCheck8(const SPI_Regs *spi, uint8_t *buffer);
1945 
1966 bool DL_SPI_receiveDataCheck16(const SPI_Regs *spi, uint16_t *buffer);
1967 
1994 bool DL_SPI_receiveDataCheck32(const SPI_Regs *spi, uint32_t *buffer);
1995 
2005 uint32_t DL_SPI_drainRXFIFO8(
2006  const SPI_Regs *spi, uint8_t *buffer, uint32_t maxCount);
2007 
2017 uint32_t DL_SPI_drainRXFIFO16(
2018  const SPI_Regs *spi, uint16_t *buffer, uint32_t maxCount);
2019 
2036 uint32_t DL_SPI_drainRXFIFO32(
2037  const SPI_Regs *spi, uint32_t *buffer, uint32_t maxCount);
2038 
2051 uint32_t DL_SPI_fillTXFIFO8(
2052  SPI_Regs *spi, const uint8_t *buffer, uint32_t count);
2053 
2066 uint32_t DL_SPI_fillTXFIFO16(
2067  SPI_Regs *spi, const uint16_t *buffer, uint32_t count);
2068 
2088 uint32_t DL_SPI_fillTXFIFO32(
2089  SPI_Regs *spi, const uint32_t *buffer, uint32_t count);
2090 
2106 __STATIC_INLINE void DL_SPI_enableDMAReceiveEvent(
2107  SPI_Regs *spi, uint32_t interrupt)
2108 {
2109  spi->DMA_TRIG_RX.IMASK = interrupt;
2110 }
2111 
2125 __STATIC_INLINE void DL_SPI_enableDMATransmitEvent(SPI_Regs *spi)
2126 {
2127  spi->DMA_TRIG_TX.IMASK = SPI_DMA_TRIG_TX_IMASK_TX_SET;
2128 }
2129 
2143 __STATIC_INLINE void DL_SPI_disableDMAReceiveEvent(
2144  SPI_Regs *spi, uint32_t interrupt)
2145 {
2146  spi->DMA_TRIG_RX.IMASK &= ~(interrupt);
2147 }
2148 
2162 __STATIC_INLINE void DL_SPI_disableDMATransmitEvent(SPI_Regs *spi)
2163 {
2164  spi->DMA_TRIG_TX.IMASK = SPI_DMA_TRIG_TX_IMASK_TX_CLR;
2165 }
2166 
2184 __STATIC_INLINE uint32_t DL_SPI_getEnabledDMAReceiveEvent(
2185  const SPI_Regs *spi, uint32_t interruptMask)
2186 {
2187  return (spi->DMA_TRIG_RX.IMASK & interruptMask);
2188 }
2189 
2203 __STATIC_INLINE uint32_t DL_SPI_getEnabledDMATransmitEvent(const SPI_Regs *spi)
2204 {
2205  return (spi->DMA_TRIG_TX.IMASK & SPI_DMA_TRIG_TX_IMASK_TX_MASK);
2206 }
2207 
2230  const SPI_Regs *spi, uint32_t interruptMask)
2231 {
2232  return (spi->DMA_TRIG_RX.MIS & interruptMask);
2233 }
2234 
2253  const SPI_Regs *spi)
2254 {
2255  return (spi->DMA_TRIG_TX.MIS & SPI_DMA_TRIG_TX_MIS_TX_MASK);
2256 }
2257 
2275 __STATIC_INLINE uint32_t DL_SPI_getRawDMAReceiveEventStatus(
2276  const SPI_Regs *spi, uint32_t interruptMask)
2277 {
2278  return (spi->DMA_TRIG_RX.RIS & interruptMask);
2279 }
2280 
2296 __STATIC_INLINE uint32_t DL_SPI_getRawDMATransmitEventStatus(
2297  const SPI_Regs *spi)
2298 {
2299  return (spi->DMA_TRIG_TX.RIS & SPI_DMA_TRIG_TX_RIS_TX_MASK);
2300 }
2301 
2318 __STATIC_INLINE DL_SPI_DMA_IIDX_RX DL_SPI_getPendingDMAReceiveEvent(
2319  const SPI_Regs *spi)
2320 {
2321  return (DL_SPI_DMA_IIDX_RX)(spi->DMA_TRIG_RX.IIDX);
2322 }
2323 
2340 __STATIC_INLINE DL_SPI_DMA_IIDX_TX DL_SPI_getPendingDMATransmitEvent(
2341  const SPI_Regs *spi)
2342 {
2343  return (DL_SPI_DMA_IIDX_TX)(spi->DMA_TRIG_TX.IIDX);
2344 }
2345 
2358  SPI_Regs *spi, uint32_t interruptMask)
2359 {
2360  spi->DMA_TRIG_RX.ICLR = interruptMask;
2361 }
2362 
2373 __STATIC_INLINE void DL_SPI_clearDMATransmitEventStatus(SPI_Regs *spi)
2374 {
2375  spi->DMA_TRIG_TX.ICLR = SPI_DMA_TRIG_TX_ICLR_TX_CLR;
2376 }
2377 
2395 bool DL_SPI_saveConfiguration(const SPI_Regs *spi, DL_SPI_backupConfig *ptr);
2396 
2414 bool DL_SPI_restoreConfiguration(SPI_Regs *spi, DL_SPI_backupConfig *ptr);
2415 
2416 #ifdef __cplusplus
2417 }
2418 #endif
2419 
2420 #endif /* __MSPM0_HAS_SPI__ */
2421 
2422 #endif /* ti_dl_dl_spi__include */
2423 
Definition: dl_spi.h:369
__STATIC_INLINE uint32_t DL_SPI_getDelayedSampling(const SPI_Regs *spi)
Get the delay sampling.
Definition: dl_spi.h:1377
bool DL_SPI_restoreConfiguration(SPI_Regs *spi, DL_SPI_backupConfig *ptr)
Restore SPI configuration after leaving a power loss state.
void DL_SPI_setClockConfig(SPI_Regs *spi, const DL_SPI_ClockConfig *config)
Configure SPI source clock.
Definition: dl_spi.h:308
uint32_t controlWord0
Definition: dl_spi.h:429
Definition: dl_spi.h:327
DL_SPI_RX_FIFO_LEVEL
Definition: dl_spi.h:300
__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 bool DL_SPI_isTXFIFOFull(const SPI_Regs *spi)
Checks if the TX FIFO is full.
Definition: dl_spi.h:657
bool DL_SPI_receiveDataCheck32(const SPI_Regs *spi, uint32_t *buffer)
Checks the RX FIFO before trying to transmit data.
__STATIC_INLINE void DL_SPI_setFrameFormat(SPI_Regs *spi, DL_SPI_FRAME_FORMAT frameFormat)
Set the frame format to use.
Definition: dl_spi.h:835
__STATIC_INLINE bool DL_SPI_isPowerEnabled(const SPI_Regs *spi)
Returns if the Peripheral Write Enable (PWREN) register for the SPI is enabled.
Definition: dl_spi.h:529
__STATIC_INLINE DL_SPI_DMA_IIDX_RX DL_SPI_getPendingDMAReceiveEvent(const SPI_Regs *spi)
Get highest priority pending SPI interrupt for DMA receive event.
Definition: dl_spi.h:2318
__STATIC_INLINE bool DL_SPI_isEnabled(const SPI_Regs *spi)
Checks if the SPI peripheral is enabled.
Definition: dl_spi.h:582
uint32_t clockControl
Definition: dl_spi.h:439
__STATIC_INLINE uint32_t DL_SPI_getBitRateSerialClockDivider(const SPI_Regs *spi)
Get the SPI bit rate serial clock divider (SCR)
Definition: dl_spi.h:1473
__STATIC_INLINE void DL_SPI_disableLoopbackMode(SPI_Regs *spi)
Disables loopback mode.
Definition: dl_spi.h:971
__STATIC_INLINE bool DL_SPI_isRXFIFOEmpty(const SPI_Regs *spi)
Checks if the RX FIFO is empty.
Definition: dl_spi.h:672
Definition: dl_spi.h:329
Definition: dl_spi.h:258
bool DL_SPI_receiveDataCheck16(const SPI_Regs *spi, uint16_t *buffer)
Checks the RX FIFO before trying to transmit data.
Definition: dl_spi.h:278
__STATIC_INLINE void DL_SPI_setFIFOThreshold(SPI_Regs *spi, DL_SPI_RX_FIFO_LEVEL rxThreshold, DL_SPI_TX_FIFO_LEVEL txThreshold)
Set the RX and TX FIFO interrupt threshold level.
Definition: dl_spi.h:1400
__STATIC_INLINE bool DL_SPI_isTransmitParityEnabled(const SPI_Regs *spi)
Checks if transmit parity is enabled.
Definition: dl_spi.h:818
__STATIC_INLINE void DL_SPI_disableInterrupt(SPI_Regs *spi, uint32_t interruptMask)
Disable SPI interrupts.
Definition: dl_spi.h:1636
DL_SPI_DMA_IIDX_RX
Definition: dl_spi.h:146
__STATIC_INLINE uint8_t DL_SPI_receiveData8(const SPI_Regs *spi)
Reads 8-bit data from the RX FIFO.
Definition: dl_spi.h:1561
__STATIC_INLINE void DL_SPI_setRepeatTransmit(SPI_Regs *spi, uint32_t numRepeats)
Set counter for repeated transmit.
Definition: dl_spi.h:1005
__STATIC_INLINE uint32_t DL_SPI_getEnabledDMAReceiveEvent(const SPI_Regs *spi, uint32_t interruptMask)
Check which SPI interrupt for DMA receive events is enabled.
Definition: dl_spi.h:2184
__STATIC_INLINE void DL_SPI_disableDMAReceiveEvent(SPI_Regs *spi, uint32_t interrupt)
Disables SPI interrupt from triggering the DMA receive event.
Definition: dl_spi.h:2143
__STATIC_INLINE DL_SPI_DMA_IIDX_TX DL_SPI_getPendingDMATransmitEvent(const SPI_Regs *spi)
Get highest priority pending SPI interrupt for DMA transmit event.
Definition: dl_spi.h:2340
DL_SPI_BIT_ORDER
Definition: dl_spi.h:234
__STATIC_INLINE void DL_SPI_enableControllerCommandDataMode(SPI_Regs *spi)
Enables command/data mode.
Definition: dl_spi.h:1265
__STATIC_INLINE bool DL_SPI_isTXFIFOEmpty(const SPI_Regs *spi)
Checks if the TX FIFO is empty.
Definition: dl_spi.h:642
__STATIC_INLINE uint32_t DL_SPI_getRepeatTransmit(const SPI_Regs *spi)
Get counter for repeated transmit.
Definition: dl_spi.h:1026
DL_SPI_DMA_IIDX_TX
Definition: dl_spi.h:154
__STATIC_INLINE uint32_t DL_SPI_getEnabledDMAReceiveEventStatus(const SPI_Regs *spi, uint32_t interruptMask)
Check interrupt flag of enabled SPI interrupt for DMA receive event.
Definition: dl_spi.h:2229
__STATIC_INLINE DL_SPI_CHIP_SELECT DL_SPI_getChipSelect(const SPI_Regs *spi)
Get chip select used for controller or peripheral mode.
Definition: dl_spi.h:1160
__STATIC_INLINE bool DL_SPI_isReset(const SPI_Regs *spi)
Returns if spi peripheral was reset.
Definition: dl_spi.h:556
__STATIC_INLINE void DL_SPI_disableReceiveParity(SPI_Regs *spi)
Disables receive parity.
Definition: dl_spi.h:758
Definition: dl_spi.h:288
Definition: dl_spi.h:250
Definition: dl_spi.h:212
Definition: dl_spi.h:196
DL_SPI_CHIP_SELECT chipSelectPin
Definition: dl_spi.h:403
Definition: dl_spi.h:280
uint32_t DL_SPI_drainRXFIFO32(const SPI_Regs *spi, uint32_t *buffer, uint32_t maxCount)
Read all available data out of the RX FIFO using 32 bit access.
uint32_t clockSel
Definition: dl_spi.h:442
__STATIC_INLINE void DL_SPI_setBitOrder(SPI_Regs *spi, DL_SPI_BIT_ORDER bitOrder)
Set the bit order used for transfers.
Definition: dl_spi.h:928
__STATIC_INLINE void DL_SPI_clearDMAReceiveEventStatus(SPI_Regs *spi, uint32_t interruptMask)
Clear pending SPI interrupts for DMA receive event.
Definition: dl_spi.h:2357
Definition: dl_spi.h:302
__STATIC_INLINE uint32_t DL_SPI_getRawDMAReceiveEventStatus(const SPI_Regs *spi, uint32_t interruptMask)
Check interrupt flag of any SPI interrupt for DMA receive event.
Definition: dl_spi.h:2275
DL_SPI_IIDX
Definition: dl_spi.h:314
__STATIC_INLINE void DL_SPI_clearInterruptStatus(SPI_Regs *spi, uint32_t interruptMask)
Clear pending SPI interrupts.
Definition: dl_spi.h:1729
bool DL_SPI_transmitDataCheck32(SPI_Regs *spi, uint32_t data)
Checks the TX FIFO before trying to transmit data.
__STATIC_INLINE uint32_t DL_SPI_getRawInterruptStatus(const SPI_Regs *spi, uint32_t interruptMask)
Check interrupt flag of any SPI interrupt.
Definition: dl_spi.h:1698
Definition: dl_spi.h:306
__STATIC_INLINE void DL_SPI_setControllerCommandDataModeConfig(SPI_Regs *spi, uint32_t config)
Configure the command/data mode.
Definition: dl_spi.h:1227
Definition: dl_spi.h:341
Configuration struct for DL_SPI_init.
Definition: dl_spi.h:377
uint32_t DL_SPI_fillTXFIFO8(SPI_Regs *spi, const uint8_t *buffer, uint32_t count)
Fill the TX FIFO using 8 bit access.
__STATIC_INLINE void DL_SPI_setBitRateSerialClockDivider(SPI_Regs *spi, uint32_t SCR)
Set the SPI bit rate serial clock divider (SCR)
Definition: dl_spi.h:1458
__STATIC_INLINE DL_SPI_TX_FIFO_LEVEL DL_SPI_getTXFIFOThreshold(const SPI_Regs *spi)
Get the TX FIFO interrupt threshold level.
Definition: dl_spi.h:1417
bool DL_SPI_saveConfiguration(const SPI_Regs *spi, DL_SPI_backupConfig *ptr)
Save SPI configuration before entering a power loss state.
Definition: dl_spi.h:323
Definition: dl_spi.h:353
Configuration structure to backup SPI peripheral state before going to STOP/STANDBY mode...
Definition: dl_spi.h:424
__STATIC_INLINE void DL_SPI_disableControllerCommandDataMode(SPI_Regs *spi)
Disables command/data mode.
Definition: dl_spi.h:1275
void DL_SPI_transmitDataBlocking32(SPI_Regs *spi, uint32_t data)
Blocks to ensure transmit is ready before sending data.
DL_SPI_CLOCK_DIVIDE_RATIO divideRatio
Definition: dl_spi.h:415
__STATIC_INLINE void DL_SPI_clearDMATransmitEventStatus(SPI_Regs *spi)
Clear pending SPI interrupt for DMA transmit event.
Definition: dl_spi.h:2373
Definition: dl_spi.h:296
Definition: dl_spi.h:187
void DL_SPI_init(SPI_Regs *spi, const DL_SPI_Config *config)
Initialize the SPI peripheral.
Definition: dl_spi.h:184
__STATIC_INLINE void DL_SPI_setPeripheralReceiveTimeout(SPI_Regs *spi, uint32_t timeout)
Set peripheral receive timeout.
Definition: dl_spi.h:1180
Definition: dl_spi.h:236
DriverLib Common APIs.
__STATIC_INLINE void DL_SPI_setParity(SPI_Regs *spi, DL_SPI_PARITY parity)
Sets the parity configuration used for transactions.
Definition: dl_spi.h:710
Definition: dl_spi.h:266
Definition: dl_spi.h:215
Definition: dl_spi.h:349
__STATIC_INLINE void DL_SPI_enableTransmitParity(SPI_Regs *spi)
Enables transmit parity.
Definition: dl_spi.h:788
Definition: dl_spi.h:359
Definition: dl_spi.h:274
__STATIC_INLINE void DL_SPI_disablePower(SPI_Regs *spi)
Disables the Peripheral Write Enable (PWREN) register for the SPI.
Definition: dl_spi.h:508
__STATIC_INLINE void DL_SPI_enableLoopbackMode(SPI_Regs *spi)
Enables loopback mode.
Definition: dl_spi.h:958
Definition: dl_spi.h:367
Definition: dl_spi.h:218
uint32_t DL_SPI_drainRXFIFO16(const SPI_Regs *spi, uint16_t *buffer, uint32_t maxCount)
Read all available data out of the RX FIFO using 16 bit access.
Definition: dl_spi.h:248
__STATIC_INLINE DL_SPI_MODE DL_SPI_getMode(const SPI_Regs *spi)
Get the current mode for the SPI (controller/peripheral)
Definition: dl_spi.h:912
__STATIC_INLINE void DL_SPI_transmitData16(SPI_Regs *spi, uint16_t data)
Writes 16-bit data into the TX FIFO for transmit.
Definition: dl_spi.h:1514
__STATIC_INLINE DL_SPI_PARITY DL_SPI_getParity(const SPI_Regs *spi)
Get the current receive and transmit parity configuration.
Definition: dl_spi.h:725
Definition: dl_spi.h:339
__STATIC_INLINE uint32_t DL_SPI_getEnabledInterruptStatus(const SPI_Regs *spi, uint32_t interruptMask)
Check interrupt flag of enabled SPI interrupts.
Definition: dl_spi.h:1677
Definition: dl_spi.h:238
Definition: dl_spi.h:325
__STATIC_INLINE uint32_t DL_SPI_getPeripheralReceiveTimeout(const SPI_Regs *spi)
Get peripheral receive timeout.
Definition: dl_spi.h:1199
Definition: dl_spi.h:254
Definition: dl_spi.h:282
Definition: dl_spi.h:209
bool DL_SPI_transmitDataCheck8(SPI_Regs *spi, uint8_t data)
Checks the TX FIFO before trying to transmit data.
DL_SPI_PARITY
Definition: dl_spi.h:182
__STATIC_INLINE bool DL_SPI_isBusy(const SPI_Regs *spi)
Checks if the SPI is busy transmitting.
Definition: dl_spi.h:627
__STATIC_INLINE void DL_SPI_enableInterrupt(SPI_Regs *spi, uint32_t interruptMask)
Enable SPI interrupts.
Definition: dl_spi.h:1622
DL_SPI_CHIP_SELECT
Definition: dl_spi.h:272
Definition: dl_spi.h:310
__STATIC_INLINE uint32_t DL_SPI_getRawDMATransmitEventStatus(const SPI_Regs *spi)
Check interrupt flag of any SPI interrupt for DMA transmit event.
Definition: dl_spi.h:2296
bool DL_SPI_receiveDataCheck8(const SPI_Regs *spi, uint8_t *buffer)
Checks the RX FIFO before trying to transmit data.
uint32_t interruptMask1
Definition: dl_spi.h:458
uint32_t DL_SPI_fillTXFIFO32(SPI_Regs *spi, const uint32_t *buffer, uint32_t count)
Fill the TX FIFO using 32 bit access.
__STATIC_INLINE void DL_SPI_enable(SPI_Regs *spi)
Enable the SPI peripheral.
Definition: dl_spi.h:567
__STATIC_INLINE bool DL_SPI_isLoopbackModeEnabled(const SPI_Regs *spi)
Checks if the loopback mode is enabled.
Definition: dl_spi.h:986
uint8_t DL_SPI_receiveDataBlocking8(const SPI_Regs *spi)
Blocks to ensure receive is ready before reading data.
__STATIC_INLINE DL_SPI_BIT_ORDER DL_SPI_getBitOrder(const SPI_Regs *spi)
Get the current bit order used for transfers.
Definition: dl_spi.h:943
__STATIC_INLINE uint32_t DL_SPI_receiveData32(const SPI_Regs *spi)
Reads 32-bit data from the RX FIFO.
Definition: dl_spi.h:1609
Definition: dl_spi.h:334
__STATIC_INLINE void DL_SPI_enablePower(SPI_Regs *spi)
Enables the Peripheral Write Enable (PWREN) register for the SPI.
Definition: dl_spi.h:492
void DL_SPI_transmitDataBlocking8(SPI_Regs *spi, uint8_t data)
Blocks to ensure transmit is ready before sending data.
__STATIC_INLINE uint32_t DL_SPI_getEnabledDMATransmitEventStatus(const SPI_Regs *spi)
Check interrupt flag of enabled SPI interrupt for DMA transmit event.
Definition: dl_spi.h:2252
DL_SPI_CLOCK
Definition: dl_spi.h:365
__STATIC_INLINE bool DL_SPI_isReceiveParityEnabled(const SPI_Regs *spi)
Checks if receive parity is enabled.
Definition: dl_spi.h:773
Definition: dl_spi.h:336
__STATIC_INLINE DL_SPI_IIDX DL_SPI_getPendingInterrupt(const SPI_Regs *spi)
Get highest priority pending SPI interrupt.
Definition: dl_spi.h:1716
__STATIC_INLINE bool DL_SPI_isPeripheralAlignDataOnChipSelectEnabled(const SPI_Regs *spi)
Checks if data alignment on chip select for peripherals is enabled.
Definition: dl_spi.h:1075
__STATIC_INLINE DL_SPI_FRAME_FORMAT DL_SPI_getFrameFormat(const SPI_Regs *spi)
Get the frame format configuration.
Definition: dl_spi.h:851
Configuration struct for DL_SPI_setClockConfig.
Definition: dl_spi.h:410
Definition: dl_spi.h:268
Definition: dl_spi.h:292
__STATIC_INLINE void DL_SPI_setDelayedSampling(SPI_Regs *spi, uint32_t delay)
Set the delay sampling.
Definition: dl_spi.h:1356
__STATIC_INLINE uint16_t DL_SPI_receiveData16(const SPI_Regs *spi)
Reads 16-bit data from the RX FIFO.
Definition: dl_spi.h:1582
uint32_t interruptFifoLevelSelectWord
Definition: dl_spi.h:450
Definition: dl_spi.h:262
Definition: dl_spi.h:357
uint32_t interruptMask2
Definition: dl_spi.h:462
__STATIC_INLINE void DL_SPI_enableDMAReceiveEvent(SPI_Regs *spi, uint32_t interrupt)
Enable SPI interrupt for triggering the DMA receive event.
Definition: dl_spi.h:2106
__STATIC_INLINE DL_SPI_RX_FIFO_LEVEL DL_SPI_getRXFIFOThreshold(const SPI_Regs *spi)
Get the RX FIFO interrupt threshold level.
Definition: dl_spi.h:1434
DL_SPI_TX_FIFO_LEVEL
Definition: dl_spi.h:286
DL_SPI_DATA_SIZE
Definition: dl_spi.h:242
Definition: dl_spi.h:156
__STATIC_INLINE void DL_SPI_enableReceiveParity(SPI_Regs *spi)
Enables receive parity.
Definition: dl_spi.h:743
uint32_t interruptMask0
Definition: dl_spi.h:454
__STATIC_INLINE void DL_SPI_disablePeripheralDataOutput(SPI_Regs *spi)
Disables peripheral data output.
Definition: dl_spi.h:1322
DL_SPI_MODE
Definition: dl_spi.h:226
Definition: dl_spi.h:228
__STATIC_INLINE void DL_SPI_enableDMATransmitEvent(SPI_Regs *spi)
Enable SPI interrupt for triggering the DMA transmit event.
Definition: dl_spi.h:2125
Definition: dl_spi.h:230
DL_SPI_CLOCK_DIVIDE_RATIO
Definition: dl_spi.h:345
DL_SPI_DATA_SIZE dataSize
Definition: dl_spi.h:394
bool DL_SPI_transmitDataCheck16(SPI_Regs *spi, uint16_t data)
Checks the TX FIFO before trying to transmit data.
DL_SPI_BIT_ORDER bitOrder
Definition: dl_spi.h:397
__STATIC_INLINE void DL_SPI_disablePacking(SPI_Regs *spi)
Disables packing feature.
Definition: dl_spi.h:1108
Definition: dl_spi.h:148
__STATIC_INLINE void DL_SPI_enablePeripheralDataOutput(SPI_Regs *spi)
Enables peripheral data output.
Definition: dl_spi.h:1306
DL_SPI_FRAME_FORMAT frameFormat
Definition: dl_spi.h:385
Definition: dl_spi.h:371
Definition: dl_spi.h:222
Definition: dl_spi.h:317
uint32_t DL_SPI_fillTXFIFO16(SPI_Regs *spi, const uint16_t *buffer, uint32_t count)
Fill the TX FIFO using 16 bit access.
Definition: dl_spi.h:246
__STATIC_INLINE uint32_t DL_SPI_getEnabledInterrupts(const SPI_Regs *spi, uint32_t interruptMask)
Check which SPI interrupts are enabled.
Definition: dl_spi.h:1654
void DL_SPI_transmitDataBlocking16(SPI_Regs *spi, uint16_t data)
Blocks to ensure transmit is ready before sending data.
Definition: dl_spi.h:276
bool backupRdy
Definition: dl_spi.h:466
__STATIC_INLINE void DL_SPI_disableDMATransmitEvent(SPI_Regs *spi)
Disables SPI interrupt from triggering the DMA transmit event.
Definition: dl_spi.h:2162
Definition: dl_spi.h:205
__STATIC_INLINE void DL_SPI_setDataSize(SPI_Regs *spi, DL_SPI_DATA_SIZE dataSize)
Set the size for transfers.
Definition: dl_spi.h:868
uint16_t DL_SPI_receiveDataBlocking16(const SPI_Regs *spi)
Blocks to ensure receive is ready before reading data.
uint32_t controlWord1
Definition: dl_spi.h:435
__STATIC_INLINE bool DL_SPI_isRXFIFOFull(const SPI_Regs *spi)
Checks if the RX FIFO is full.
Definition: dl_spi.h:687
__STATIC_INLINE void DL_SPI_setChipSelect(SPI_Regs *spi, DL_SPI_CHIP_SELECT chipSelect)
Set chip select used for controller or peripheral mode.
Definition: dl_spi.h:1142
__STATIC_INLINE void DL_SPI_transmitData32(SPI_Regs *spi, uint32_t data)
Writes 32-bit data into the TX FIFO for transmit.
Definition: dl_spi.h:1540
__STATIC_INLINE uint32_t DL_SPI_getControllerCommandDataModeConfig(const SPI_Regs *spi)
Get the command/data mode configuration.
Definition: dl_spi.h:1249
__STATIC_INLINE bool DL_SPI_isPackingEnabled(const SPI_Regs *spi)
Checks if packing feature is enabled.
Definition: dl_spi.h:1123
Definition: dl_spi.h:331
__STATIC_INLINE DL_SPI_DATA_SIZE DL_SPI_getDataSize(const SPI_Regs *spi)
Get the configured size for transfers.
Definition: dl_spi.h:883
Definition: dl_spi.h:244
DL_SPI_FRAME_FORMAT
Definition: dl_spi.h:194
Definition: dl_spi.h:319
Definition: dl_spi.h:150
__STATIC_INLINE uint32_t DL_SPI_getEnabledDMATransmitEvent(const SPI_Regs *spi)
Check if SPI interrupt for DMA transmit event is enabled.
Definition: dl_spi.h:2203
Definition: dl_spi.h:256
uint32_t DL_SPI_drainRXFIFO8(const SPI_Regs *spi, uint8_t *buffer, uint32_t maxCount)
Read all available data out of the RX FIFO using 8 bit access.
__STATIC_INLINE void DL_SPI_reset(SPI_Regs *spi)
Resets spi peripheral.
Definition: dl_spi.h:540
Definition: dl_spi.h:304
__STATIC_INLINE bool DL_SPI_isPeripheralDataOutputEnabled(const SPI_Regs *spi)
Checks if peripheral data output is enabled.
Definition: dl_spi.h:1339
Definition: dl_spi.h:290
__STATIC_INLINE void DL_SPI_disablePeripheralAlignDataOnChipSelect(SPI_Regs *spi)
Disables data alignment on chip select for peripherals.
Definition: dl_spi.h:1059
Definition: dl_spi.h:199
Definition: dl_spi.h:264
Definition: dl_spi.h:202
__STATIC_INLINE void DL_SPI_transmitData8(SPI_Regs *spi, uint8_t data)
Writes 8-bit data into the TX FIFO for transmit.
Definition: dl_spi.h:1494
__STATIC_INLINE void DL_SPI_disableTransmitParity(SPI_Regs *spi)
Disables transmit parity.
Definition: dl_spi.h:803
__STATIC_INLINE void DL_SPI_disable(SPI_Regs *spi)
Disable the SPI peripheral.
Definition: dl_spi.h:592
Definition: dl_spi.h:361
Definition: dl_spi.h:260
DL_SPI_PARITY parity
Definition: dl_spi.h:391
__STATIC_INLINE void DL_SPI_enablePacking(SPI_Regs *spi)
Enables packing feature.
Definition: dl_spi.h:1092
DL_SPI_MODE mode
Definition: dl_spi.h:379
Definition: dl_spi.h:355
Definition: dl_spi.h:351
Definition: dl_spi.h:190
DL_SPI_CLOCK clockSel
Definition: dl_spi.h:412
uint32_t divideRatio
Definition: dl_spi.h:445
__STATIC_INLINE bool DL_SPI_isControllerCommandDataModeEnabled(const SPI_Regs *spi)
Checks if command/data mode is enabled.
Definition: dl_spi.h:1290
Definition: dl_spi.h:252
uint32_t DL_SPI_receiveDataBlocking32(const SPI_Regs *spi)
Blocks to ensure receive is ready before reading data.
__STATIC_INLINE void DL_SPI_enablePeripheralAlignDataOnChipSelect(SPI_Regs *spi)
Enables data alignment on chip select for peripherals.
Definition: dl_spi.h:1043
void DL_SPI_getClockConfig(const SPI_Regs *spi, DL_SPI_ClockConfig *config)
Get SPI source clock configuration.
Definition: dl_spi.h:294
Definition: dl_spi.h:347
__STATIC_INLINE void DL_SPI_setMode(SPI_Regs *spi, DL_SPI_MODE mode)
Set whether the device should be in controller/peripheral mode.
Definition: dl_spi.h:898
© Copyright 1995-2025, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale