MSPM0G1X0X_G3X0X Driver Library  1.10.01.05
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)
76 
80 #define DL_SPI_CD_MODE_COMMAND (SPI_CTL1_CDMODE_COMMAND)
81 
91 #define DL_SPI_INTERRUPT_DMA_DONE_TX (SPI_CPU_INT_IMASK_DMA_DONE_TX_SET)
92 
96 #define DL_SPI_INTERRUPT_DMA_DONE_RX (SPI_CPU_INT_IMASK_DMA_DONE_RX_SET)
97 
100 #define DL_SPI_INTERRUPT_IDLE (SPI_CPU_INT_IMASK_IDLE_SET)
101 
105 #define DL_SPI_INTERRUPT_TX_EMPTY (SPI_CPU_INT_IMASK_TXEMPTY_SET)
106 
110 #define DL_SPI_INTERRUPT_TX (SPI_CPU_INT_IMASK_TX_SET)
111 
115 #define DL_SPI_INTERRUPT_RX (SPI_CPU_INT_IMASK_RX_SET)
116 
120 #define DL_SPI_INTERRUPT_RX_TIMEOUT (SPI_CPU_INT_IMASK_RTOUT_SET)
121 
125 #define DL_SPI_INTERRUPT_RX_FULL (SPI_CPU_INT_IMASK_RXFULL_SET)
126 
130 #define DL_SPI_INTERRUPT_TX_UNDERFLOW (SPI_CPU_INT_IMASK_TXFIFO_UNF_SET)
131 
135 #define DL_SPI_INTERRUPT_PARITY_ERROR (SPI_CPU_INT_IMASK_PER_SET)
136 
140 #define DL_SPI_INTERRUPT_RX_OVERFLOW (SPI_CPU_INT_IMASK_RXFIFO_OVF_SET)
141 
145 typedef enum {
147  DL_SPI_DMA_IIDX_RX_TRIGGER = SPI_DMA_TRIG_RX_IIDX_STAT_RX_EVT,
149  DL_SPI_DMA_IIDX_RX_TIMEOUT_TRIGGER = SPI_DMA_TRIG_RX_IIDX_STAT_RTOUT_EVT
151 
153 typedef enum {
155  DL_SPI_DMA_IIDX_TX_TRIGGER = SPI_DMA_TRIG_TX_IIDX_STAT_TX_EVT
157 
164 #define DL_SPI_DMA_INTERRUPT_RX (SPI_DMA_TRIG_RX_IMASK_RX_SET)
165 
169 #define DL_SPI_DMA_INTERRUPT_RX_TIMEOUT (SPI_DMA_TRIG_RX_IMASK_RTOUT_SET)
170 
176 #define DL_SPI_DMA_INTERRUPT_TX (SPI_DMA_TRIG_TX_IMASK_TX_SET)
177 
178 /* clang-format on */
179 
181 typedef enum {
184  (SPI_CTL1_PES_ENABLE | SPI_CTL1_PREN_ENABLE | SPI_CTL1_PTEN_ENABLE),
187  (SPI_CTL1_PES_DISABLE | SPI_CTL1_PREN_ENABLE | SPI_CTL1_PTEN_ENABLE),
189  DL_SPI_PARITY_NONE = (SPI_CTL1_PREN_DISABLE | SPI_CTL1_PTEN_DISABLE)
190 } DL_SPI_PARITY;
191 
193 typedef enum {
196  (SPI_CTL0_SPO_LOW | SPI_CTL0_SPH_FIRST | SPI_CTL0_FRF_MOTOROLA_3WIRE),
199  (SPI_CTL0_SPO_LOW | SPI_CTL0_SPH_SECOND | SPI_CTL0_FRF_MOTOROLA_3WIRE),
202  (SPI_CTL0_SPO_HIGH | SPI_CTL0_SPH_FIRST | SPI_CTL0_FRF_MOTOROLA_3WIRE),
205  (SPI_CTL0_SPO_HIGH | SPI_CTL0_SPH_SECOND |
206  SPI_CTL0_FRF_MOTOROLA_3WIRE),
209  (SPI_CTL0_SPO_LOW | SPI_CTL0_SPH_FIRST | SPI_CTL0_FRF_MOTOROLA_4WIRE),
212  (SPI_CTL0_SPO_LOW | SPI_CTL0_SPH_SECOND | SPI_CTL0_FRF_MOTOROLA_4WIRE),
215  (SPI_CTL0_SPO_HIGH | SPI_CTL0_SPH_FIRST | SPI_CTL0_FRF_MOTOROLA_4WIRE),
218  (SPI_CTL0_SPO_HIGH | SPI_CTL0_SPH_SECOND |
219  SPI_CTL0_FRF_MOTOROLA_4WIRE),
221  DL_SPI_FRAME_FORMAT_TI_SYNC = (SPI_CTL0_FRF_TI_SYNC),
223 
225 typedef enum {
227  DL_SPI_MODE_CONTROLLER = (SPI_CTL1_CP_ENABLE),
229  DL_SPI_MODE_PERIPHERAL = (SPI_CTL1_CP_DISABLE)
230 } DL_SPI_MODE;
231 
233 typedef enum {
235  DL_SPI_BIT_ORDER_MSB_FIRST = (SPI_CTL1_MSB_ENABLE),
237  DL_SPI_BIT_ORDER_LSB_FIRST = (SPI_CTL1_MSB_DISABLE)
239 
241 typedef enum {
243  DL_SPI_DATA_SIZE_4 = (SPI_CTL0_DSS_DSS_4),
245  DL_SPI_DATA_SIZE_5 = (SPI_CTL0_DSS_DSS_5),
247  DL_SPI_DATA_SIZE_6 = (SPI_CTL0_DSS_DSS_6),
249  DL_SPI_DATA_SIZE_7 = (SPI_CTL0_DSS_DSS_7),
251  DL_SPI_DATA_SIZE_8 = (SPI_CTL0_DSS_DSS_8),
253  DL_SPI_DATA_SIZE_9 = (SPI_CTL0_DSS_DSS_9),
255  DL_SPI_DATA_SIZE_10 = (SPI_CTL0_DSS_DSS_10),
257  DL_SPI_DATA_SIZE_11 = (SPI_CTL0_DSS_DSS_11),
259  DL_SPI_DATA_SIZE_12 = (SPI_CTL0_DSS_DSS_12),
261  DL_SPI_DATA_SIZE_13 = (SPI_CTL0_DSS_DSS_13),
263  DL_SPI_DATA_SIZE_14 = (SPI_CTL0_DSS_DSS_14),
265  DL_SPI_DATA_SIZE_15 = (SPI_CTL0_DSS_DSS_15),
267  DL_SPI_DATA_SIZE_16 = (SPI_CTL0_DSS_DSS_16),
269 
271 typedef enum {
273  DL_SPI_CHIP_SELECT_0 = (SPI_CTL0_CSSEL_CSSEL_0),
275  DL_SPI_CHIP_SELECT_1 = (SPI_CTL0_CSSEL_CSSEL_1),
277  DL_SPI_CHIP_SELECT_2 = (SPI_CTL0_CSSEL_CSSEL_2),
279  DL_SPI_CHIP_SELECT_3 = (SPI_CTL0_CSSEL_CSSEL_3),
283 
285 typedef enum {
287  DL_SPI_TX_FIFO_LEVEL_3_4_EMPTY = SPI_IFLS_TXIFLSEL_LVL_3_4,
289  DL_SPI_TX_FIFO_LEVEL_1_2_EMPTY = SPI_IFLS_TXIFLSEL_LVL_1_2,
291  DL_SPI_TX_FIFO_LEVEL_1_4_EMPTY = SPI_IFLS_TXIFLSEL_LVL_1_4,
293  DL_SPI_TX_FIFO_LEVEL_EMPTY = SPI_IFLS_TXIFLSEL_LVL_EMPTY,
295  DL_SPI_TX_FIFO_LEVEL_ONE_FRAME = SPI_IFLS_TXIFLSEL_LEVEL_1
297 
299 typedef enum {
301  DL_SPI_RX_FIFO_LEVEL_ONE_FRAME = SPI_IFLS_RXIFLSEL_LEVEL_1,
303  DL_SPI_RX_FIFO_LEVEL_FULL = SPI_IFLS_RXIFLSEL_LVL_FULL,
305  DL_SPI_RX_FIFO_LEVEL_3_4_FULL = SPI_IFLS_RXIFLSEL_LVL_3_4,
307  DL_SPI_RX_FIFO_LEVEL_1_2_FULL = SPI_IFLS_RXIFLSEL_LVL_1_2,
309  DL_SPI_RX_FIFO_LEVEL_1_4_FULL = SPI_IFLS_RXIFLSEL_LVL_1_4,
311 
313 typedef enum {
314 
316  DL_SPI_IIDX_DMA_DONE_TX = SPI_CPU_INT_IIDX_STAT_DMA_DONE_TX_EVT,
318  DL_SPI_IIDX_DMA_DONE_RX = SPI_CPU_INT_IIDX_STAT_DMA_DONE_RX_EVT,
322  DL_SPI_IIDX_IDLE = SPI_CPU_INT_IIDX_STAT_IDLE_EVT,
324  DL_SPI_IIDX_TX_EMPTY = SPI_CPU_INT_IIDX_STAT_TX_EMPTY,
326  DL_SPI_IIDX_TX = SPI_CPU_INT_IIDX_STAT_TX_EVT,
328  DL_SPI_IIDX_RX = SPI_CPU_INT_IIDX_STAT_RX_EVT,
330  DL_SPI_IIDX_RX_TIMEOUT = SPI_CPU_INT_IIDX_STAT_RTOUT_EVT,
331 
333  DL_SPI_IIDX_RX_FULL = SPI_CPU_INT_IIDX_STAT_RXFULL_EVT,
335  DL_SPI_IIDX_TX_UNDERFLOW = SPI_CPU_INT_IIDX_STAT_TXFIFO_UNF_EVT,
336 
338  DL_SPI_IIDX_PARITY_ERROR = SPI_CPU_INT_IIDX_STAT_PER_EVT,
340  DL_SPI_IIDX_RX_OVERFLOW = SPI_CPU_INT_IIDX_STAT_RXFIFO_OFV_EVT
341 } DL_SPI_IIDX;
342 
344 typedef enum {
346  DL_SPI_CLOCK_DIVIDE_RATIO_1 = SPI_CLKDIV_RATIO_DIV_BY_1,
348  DL_SPI_CLOCK_DIVIDE_RATIO_2 = SPI_CLKDIV_RATIO_DIV_BY_2,
350  DL_SPI_CLOCK_DIVIDE_RATIO_3 = SPI_CLKDIV_RATIO_DIV_BY_3,
352  DL_SPI_CLOCK_DIVIDE_RATIO_4 = SPI_CLKDIV_RATIO_DIV_BY_4,
354  DL_SPI_CLOCK_DIVIDE_RATIO_5 = SPI_CLKDIV_RATIO_DIV_BY_5,
356  DL_SPI_CLOCK_DIVIDE_RATIO_6 = SPI_CLKDIV_RATIO_DIV_BY_6,
358  DL_SPI_CLOCK_DIVIDE_RATIO_7 = SPI_CLKDIV_RATIO_DIV_BY_7,
360  DL_SPI_CLOCK_DIVIDE_RATIO_8 = SPI_CLKDIV_RATIO_DIV_BY_8
362 
364 typedef enum {
366  DL_SPI_CLOCK_BUSCLK = SPI_CLKSEL_SYSCLK_SEL_ENABLE,
368  DL_SPI_CLOCK_MFCLK = SPI_CLKSEL_MFCLK_SEL_ENABLE,
370  DL_SPI_CLOCK_LFCLK = SPI_CLKSEL_LFCLK_SEL_ENABLE
371 } DL_SPI_CLOCK;
372 
376 typedef struct {
379 
385 
391 
394 
397 
403 
404 } DL_SPI_Config;
405 
409 typedef struct {
411  DL_SPI_CLOCK clockSel;
412 
414  DL_SPI_CLOCK_DIVIDE_RATIO divideRatio;
415 
417 
423 typedef struct {
428  uint32_t controlWord0;
429 
434  uint32_t controlWord1;
435 
438  uint32_t clockControl;
439 
441  uint32_t clockSel;
442 
444  uint32_t divideRatio;
445 
450 
453  uint32_t interruptMask0;
454 
457  uint32_t interruptMask1;
458 
461  uint32_t interruptMask2;
462 
465  bool backupRdy;
467 
478 void DL_SPI_init(SPI_Regs *spi, DL_SPI_Config *config);
479 
485 __STATIC_INLINE void DL_SPI_enablePower(SPI_Regs *spi)
486 {
487  spi->GPRCM.PWREN = (SPI_PWREN_KEY_UNLOCK_W | SPI_PWREN_ENABLE_ENABLE);
488 }
489 
495 __STATIC_INLINE void DL_SPI_disablePower(SPI_Regs *spi)
496 {
497  spi->GPRCM.PWREN = (SPI_PWREN_KEY_UNLOCK_W | SPI_PWREN_ENABLE_DISABLE);
498 }
499 
508 __STATIC_INLINE bool DL_SPI_isPowerEnabled(SPI_Regs *spi)
509 {
510  return (
511  (spi->GPRCM.PWREN & SPI_PWREN_ENABLE_MASK) == SPI_PWREN_ENABLE_ENABLE);
512 }
513 
519 __STATIC_INLINE void DL_SPI_reset(SPI_Regs *spi)
520 {
521  spi->GPRCM.RSTCTL =
522  (SPI_RSTCTL_KEY_UNLOCK_W | SPI_RSTCTL_RESETSTKYCLR_CLR |
523  SPI_RSTCTL_RESETASSERT_ASSERT);
524 }
525 
535 __STATIC_INLINE bool DL_SPI_isReset(SPI_Regs *spi)
536 {
537  return ((spi->GPRCM.STAT & SPI_GPRCM_STAT_RESETSTKY_MASK) ==
538  SPI_GPRCM_STAT_RESETSTKY_RESET);
539 }
540 
546 __STATIC_INLINE void DL_SPI_enable(SPI_Regs *spi)
547 {
548  spi->CTL1 |= SPI_CTL1_ENABLE_ENABLE;
549 }
550 
561 __STATIC_INLINE bool DL_SPI_isEnabled(SPI_Regs *spi)
562 {
563  return ((spi->CTL1 & SPI_CTL1_ENABLE_MASK) == SPI_CTL1_ENABLE_ENABLE);
564 }
565 
571 __STATIC_INLINE void DL_SPI_disable(SPI_Regs *spi)
572 {
573  spi->CTL1 &= ~(SPI_CTL1_ENABLE_MASK);
574 }
575 
584 void DL_SPI_setClockConfig(SPI_Regs *spi, DL_SPI_ClockConfig *config);
585 
594 void DL_SPI_getClockConfig(SPI_Regs *spi, DL_SPI_ClockConfig *config);
595 
606 __STATIC_INLINE bool DL_SPI_isBusy(SPI_Regs *spi)
607 {
608  return ((spi->STAT & SPI_STAT_BUSY_MASK) == SPI_STAT_BUSY_ACTIVE);
609 }
610 
621 __STATIC_INLINE bool DL_SPI_isTXFIFOEmpty(SPI_Regs *spi)
622 {
623  return ((spi->STAT & SPI_STAT_TFE_MASK) == SPI_STAT_TFE_EMPTY);
624 }
625 
636 __STATIC_INLINE bool DL_SPI_isTXFIFOFull(SPI_Regs *spi)
637 {
638  return ((spi->STAT & SPI_STAT_TNF_MASK) == SPI_STAT_TNF_FULL);
639 }
640 
651 __STATIC_INLINE bool DL_SPI_isRXFIFOEmpty(SPI_Regs *spi)
652 {
653  return ((spi->STAT & SPI_STAT_RFE_MASK) == SPI_STAT_RFE_EMPTY);
654 }
655 
666 __STATIC_INLINE bool DL_SPI_isRXFIFOFull(SPI_Regs *spi)
667 {
668  return ((spi->STAT & SPI_STAT_RNF_MASK) == SPI_STAT_RNF_FULL);
669 }
670 
689 __STATIC_INLINE void DL_SPI_setParity(SPI_Regs *spi, DL_SPI_PARITY parity)
690 {
691  DL_Common_updateReg(&spi->CTL1, (uint32_t) parity,
692  (SPI_CTL1_PREN_MASK | SPI_CTL1_PTEN_MASK | SPI_CTL1_PES_MASK));
693 }
694 
704 __STATIC_INLINE DL_SPI_PARITY DL_SPI_getParity(SPI_Regs *spi)
705 {
706  uint32_t parity = spi->CTL1 & (SPI_CTL1_PES_MASK | SPI_CTL1_PREN_MASK |
707  SPI_CTL1_PTEN_MASK);
708 
709  return (DL_SPI_PARITY)(parity);
710 }
711 
722 __STATIC_INLINE void DL_SPI_enableReceiveParity(SPI_Regs *spi)
723 {
724  spi->CTL1 |= SPI_CTL1_PREN_ENABLE;
725 }
726 
737 __STATIC_INLINE void DL_SPI_disableReceiveParity(SPI_Regs *spi)
738 {
739  spi->CTL1 &= ~(SPI_CTL1_PREN_MASK);
740 }
741 
752 __STATIC_INLINE bool DL_SPI_isReceiveParityEnabled(SPI_Regs *spi)
753 {
754  return ((spi->CTL1 & SPI_CTL1_PREN_MASK) == SPI_CTL1_PREN_ENABLE);
755 }
756 
767 __STATIC_INLINE void DL_SPI_enableTransmitParity(SPI_Regs *spi)
768 {
769  spi->CTL1 |= SPI_CTL1_PTEN_ENABLE;
770 }
771 
782 __STATIC_INLINE void DL_SPI_disableTransmitParity(SPI_Regs *spi)
783 {
784  spi->CTL1 &= ~(SPI_CTL1_PTEN_MASK);
785 }
786 
797 __STATIC_INLINE bool DL_SPI_isTransmitParityEnabled(SPI_Regs *spi)
798 {
799  return ((spi->CTL1 & SPI_CTL1_PTEN_MASK) == SPI_CTL1_PTEN_ENABLE);
800 }
801 
814 __STATIC_INLINE void DL_SPI_setFrameFormat(
815  SPI_Regs *spi, DL_SPI_FRAME_FORMAT frameFormat)
816 {
817  DL_Common_updateReg(&spi->CTL0, (uint32_t) frameFormat,
818  (SPI_CTL0_FRF_MASK | SPI_CTL0_SPO_MASK | SPI_CTL0_SPH_MASK));
819 }
820 
830 __STATIC_INLINE DL_SPI_FRAME_FORMAT DL_SPI_getFrameFormat(SPI_Regs *spi)
831 {
832  uint32_t frameFormat = spi->CTL0 & (SPI_CTL0_FRF_MASK | SPI_CTL0_SPO_MASK |
833  SPI_CTL0_SPH_MASK);
834 
835  return (DL_SPI_FRAME_FORMAT)(frameFormat);
836 }
837 
847 __STATIC_INLINE void DL_SPI_setDataSize(
848  SPI_Regs *spi, DL_SPI_DATA_SIZE dataSize)
849 {
850  DL_Common_updateReg(&spi->CTL0, (uint32_t) dataSize, SPI_CTL0_DSS_MASK);
851 }
852 
862 __STATIC_INLINE DL_SPI_DATA_SIZE DL_SPI_getDataSize(SPI_Regs *spi)
863 {
864  uint32_t dataSize = spi->CTL0 & SPI_CTL0_DSS_MASK;
865 
866  return (DL_SPI_DATA_SIZE)(dataSize);
867 }
868 
877 __STATIC_INLINE void DL_SPI_setMode(SPI_Regs *spi, DL_SPI_MODE mode)
878 {
879  DL_Common_updateReg(&spi->CTL1, SPI_CTL1_CP_ENABLE, SPI_CTL1_CP_MASK);
880 }
881 
891 __STATIC_INLINE DL_SPI_MODE DL_SPI_getMode(SPI_Regs *spi)
892 {
893  uint32_t mode = spi->CTL1 & SPI_CTL1_CP_MASK;
894 
895  return (DL_SPI_MODE)(mode);
896 }
897 
907 __STATIC_INLINE void DL_SPI_setBitOrder(
908  SPI_Regs *spi, DL_SPI_BIT_ORDER bitOrder)
909 {
910  DL_Common_updateReg(&spi->CTL1, (uint32_t) bitOrder, SPI_CTL1_MSB_MASK);
911 }
912 
922 __STATIC_INLINE DL_SPI_BIT_ORDER DL_SPI_getBitOrder(SPI_Regs *spi)
923 {
924  uint32_t bitOrder = spi->CTL1 & SPI_CTL1_MSB_MASK;
925 
926  return (DL_SPI_BIT_ORDER)(bitOrder);
927 }
928 
937 __STATIC_INLINE void DL_SPI_enableLoopbackMode(SPI_Regs *spi)
938 {
939  spi->CTL1 |= SPI_CTL1_LBM_ENABLE;
940 }
941 
950 __STATIC_INLINE void DL_SPI_disableLoopbackMode(SPI_Regs *spi)
951 {
952  spi->CTL1 &= ~(SPI_CTL1_LBM_MASK);
953 }
954 
965 __STATIC_INLINE bool DL_SPI_isLoopbackModeEnabled(SPI_Regs *spi)
966 {
967  return ((spi->CTL1 & SPI_CTL1_LBM_MASK) == SPI_CTL1_LBM_ENABLE);
968 }
969 
984 __STATIC_INLINE void DL_SPI_setRepeatTransmit(
985  SPI_Regs *spi, uint32_t numRepeats)
986 {
987  DL_Common_updateReg(&spi->CTL1, numRepeats << SPI_CTL1_REPEATTX_OFS,
988  SPI_CTL1_REPEATTX_MASK);
989 }
990 
1005 __STATIC_INLINE uint32_t DL_SPI_getRepeatTransmit(SPI_Regs *spi)
1006 {
1007  return ((spi->CTL1 & SPI_CTL1_REPEATTX_MASK) >> SPI_CTL1_REPEATTX_OFS);
1008 }
1009 
1023  SPI_Regs *spi)
1024 {
1025  spi->CTL0 |= SPI_CTL0_CSCLR_ENABLE;
1026 }
1027 
1039  SPI_Regs *spi)
1040 {
1041  spi->CTL0 &= ~(SPI_CTL0_CSCLR_MASK);
1042 }
1043 
1055  SPI_Regs *spi)
1056 {
1057  return ((spi->CTL0 & SPI_CTL0_CSCLR_MASK) == SPI_CTL0_CSCLR_ENABLE);
1058 }
1059 
1071 __STATIC_INLINE void DL_SPI_enablePacking(SPI_Regs *spi)
1072 {
1073  spi->CTL0 |= SPI_CTL0_PACKEN_ENABLED;
1074 }
1075 
1087 __STATIC_INLINE void DL_SPI_disablePacking(SPI_Regs *spi)
1088 {
1089  spi->CTL0 &= ~(SPI_CTL0_PACKEN_MASK);
1090 }
1091 
1102 __STATIC_INLINE bool DL_SPI_isPackingEnabled(SPI_Regs *spi)
1103 {
1104  return ((spi->CTL0 & SPI_CTL0_PACKEN_MASK) == SPI_CTL0_PACKEN_ENABLED);
1105 }
1106 
1121 __STATIC_INLINE void DL_SPI_setChipSelect(
1122  SPI_Regs *spi, DL_SPI_CHIP_SELECT chipSelect)
1123 {
1125  &spi->CTL0, (uint32_t) chipSelect, SPI_CTL0_CSSEL_MASK);
1126 }
1127 
1139 __STATIC_INLINE DL_SPI_CHIP_SELECT DL_SPI_getChipSelect(SPI_Regs *spi)
1140 {
1141  uint32_t chipSelect = spi->CTL0 & SPI_CTL0_CSSEL_MASK;
1142 
1143  return (DL_SPI_CHIP_SELECT)(chipSelect);
1144 }
1145 
1160  SPI_Regs *spi, uint32_t timeout)
1161 {
1162  DL_Common_updateReg(&spi->CTL1, timeout << SPI_CTL1_RXTIMEOUT_OFS,
1163  SPI_CTL1_RXTIMEOUT_MASK);
1164 }
1165 
1178 __STATIC_INLINE uint32_t DL_SPI_getPeripheralReceiveTimeout(SPI_Regs *spi)
1179 {
1180  return ((spi->CTL1 & SPI_CTL1_RXTIMEOUT_MASK) >> SPI_CTL1_RXTIMEOUT_OFS);
1181 }
1182 
1206  SPI_Regs *spi, uint32_t config)
1207 {
1209  &spi->CTL1, config << SPI_CTL1_CDMODE_OFS, SPI_CTL1_CDMODE_MASK);
1210 }
1211 
1228  SPI_Regs *spi)
1229 {
1230  return ((spi->CTL1 & SPI_CTL1_CDMODE_MASK) >> SPI_CTL1_CDMODE_OFS);
1231 }
1232 
1243 __STATIC_INLINE void DL_SPI_enableControllerCommandDataMode(SPI_Regs *spi)
1244 {
1245  spi->CTL1 |= SPI_CTL1_CDENABLE_ENABLE;
1246 }
1247 
1253 __STATIC_INLINE void DL_SPI_disableControllerCommandDataMode(SPI_Regs *spi)
1254 {
1255  spi->CTL1 &= ~(SPI_CTL1_CDENABLE_MASK);
1256 }
1257 
1268 __STATIC_INLINE bool DL_SPI_isControllerCommandDataModeEnabled(SPI_Regs *spi)
1269 {
1270  return ((spi->CTL1 & SPI_CTL1_CDENABLE_MASK) == SPI_CTL1_CDENABLE_ENABLE);
1271 }
1272 
1283 __STATIC_INLINE void DL_SPI_enablePeripheralDataOutput(SPI_Regs *spi)
1284 {
1285  spi->CTL1 &= ~(SPI_CTL1_POD_MASK);
1286 }
1287 
1299 __STATIC_INLINE void DL_SPI_disablePeripheralDataOutput(SPI_Regs *spi)
1300 {
1301  spi->CTL1 |= SPI_CTL1_POD_ENABLE;
1302 }
1303 
1316 __STATIC_INLINE bool DL_SPI_isPeripheralDataOutputEnabled(SPI_Regs *spi)
1317 {
1318  return ((spi->CTL1 & SPI_CTL1_POD_MASK) == SPI_CTL1_POD_DISABLE);
1319 }
1320 
1333 __STATIC_INLINE void DL_SPI_setDelayedSampling(SPI_Regs *spi, uint32_t delay)
1334 {
1335  DL_Common_updateReg(&spi->CLKCTL, delay << SPI_CLKCTL_DSAMPLE_OFS,
1336  SPI_CLKCTL_DSAMPLE_MASK);
1337 }
1338 
1354 __STATIC_INLINE uint32_t DL_SPI_getDelayedSampling(SPI_Regs *spi)
1355 {
1356  return (spi->CLKCTL & SPI_CLKCTL_DSAMPLE_MASK >> SPI_CLKCTL_DSAMPLE_OFS);
1357 }
1358 
1377 __STATIC_INLINE void DL_SPI_setFIFOThreshold(SPI_Regs *spi,
1378  DL_SPI_RX_FIFO_LEVEL rxThreshold, DL_SPI_TX_FIFO_LEVEL txThreshold)
1379 {
1380  DL_Common_updateReg(&spi->IFLS,
1381  (uint32_t) rxThreshold | (uint32_t) txThreshold,
1382  SPI_IFLS_RXIFLSEL_MASK | SPI_IFLS_TXIFLSEL_MASK);
1383 }
1384 
1394 __STATIC_INLINE DL_SPI_TX_FIFO_LEVEL DL_SPI_getTXFIFOThreshold(SPI_Regs *spi)
1395 {
1396  uint32_t txThreshold = spi->IFLS & SPI_IFLS_TXIFLSEL_MASK;
1397 
1398  return (DL_SPI_TX_FIFO_LEVEL)(txThreshold);
1399 }
1400 
1410 __STATIC_INLINE DL_SPI_RX_FIFO_LEVEL DL_SPI_getRXFIFOThreshold(SPI_Regs *spi)
1411 {
1412  uint32_t rxThreshold = spi->IFLS & SPI_IFLS_RXIFLSEL_MASK;
1413 
1414  return (DL_SPI_RX_FIFO_LEVEL)(rxThreshold);
1415 }
1416 
1434  SPI_Regs *spi, uint32_t SCR)
1435 {
1436  DL_Common_updateReg(&spi->CLKCTL, SCR, SPI_CLKCTL_SCR_MASK);
1437 }
1438 
1448 __STATIC_INLINE uint32_t DL_SPI_getBitRateSerialClockDivider(SPI_Regs *spi)
1449 {
1450  return (spi->CLKCTL & SPI_CLKCTL_SCR_MASK);
1451 }
1452 
1468 __STATIC_INLINE void DL_SPI_transmitData8(SPI_Regs *spi, uint8_t data)
1469 {
1470  spi->TXDATA = data;
1471 }
1472 
1488 __STATIC_INLINE void DL_SPI_transmitData16(SPI_Regs *spi, uint16_t data)
1489 {
1490  spi->TXDATA = data;
1491 }
1492 
1514 __STATIC_INLINE void DL_SPI_transmitData32(SPI_Regs *spi, uint32_t data)
1515 {
1516  spi->TXDATA = data;
1517 }
1518 
1535 __STATIC_INLINE uint8_t DL_SPI_receiveData8(SPI_Regs *spi)
1536 {
1537  return ((uint8_t)(spi->RXDATA));
1538 }
1539 
1556 __STATIC_INLINE uint16_t DL_SPI_receiveData16(SPI_Regs *spi)
1557 {
1558  return ((uint16_t)(spi->RXDATA));
1559 }
1560 
1583 __STATIC_INLINE uint32_t DL_SPI_receiveData32(SPI_Regs *spi)
1584 {
1585  return spi->RXDATA;
1586 }
1587 
1596 __STATIC_INLINE void DL_SPI_enableInterrupt(
1597  SPI_Regs *spi, uint32_t interruptMask)
1598 {
1599  spi->CPU_INT.IMASK |= interruptMask;
1600 }
1601 
1610 __STATIC_INLINE void DL_SPI_disableInterrupt(
1611  SPI_Regs *spi, uint32_t interruptMask)
1612 {
1613  spi->CPU_INT.IMASK &= ~(interruptMask);
1614 }
1615 
1628 __STATIC_INLINE uint32_t DL_SPI_getEnabledInterrupts(
1629  SPI_Regs *spi, uint32_t interruptMask)
1630 {
1631  return (spi->CPU_INT.IMASK & interruptMask);
1632 }
1633 
1651 __STATIC_INLINE uint32_t DL_SPI_getEnabledInterruptStatus(
1652  SPI_Regs *spi, uint32_t interruptMask)
1653 {
1654  return (spi->CPU_INT.MIS & interruptMask);
1655 }
1656 
1672 __STATIC_INLINE uint32_t DL_SPI_getRawInterruptStatus(
1673  SPI_Regs *spi, uint32_t interruptMask)
1674 {
1675  return (spi->CPU_INT.RIS & interruptMask);
1676 }
1677 
1690 __STATIC_INLINE DL_SPI_IIDX DL_SPI_getPendingInterrupt(SPI_Regs *spi)
1691 {
1692  return ((DL_SPI_IIDX) spi->CPU_INT.IIDX);
1693 }
1694 
1703 __STATIC_INLINE void DL_SPI_clearInterruptStatus(
1704  SPI_Regs *spi, uint32_t interruptMask)
1705 {
1706  spi->CPU_INT.ICLR = interruptMask;
1707 }
1708 
1724 void DL_SPI_transmitDataBlocking8(SPI_Regs *spi, uint8_t data);
1725 
1741 void DL_SPI_transmitDataBlocking16(SPI_Regs *spi, uint16_t data);
1742 
1764 void DL_SPI_transmitDataBlocking32(SPI_Regs *spi, uint32_t data);
1765 
1782 uint8_t DL_SPI_receiveDataBlocking8(SPI_Regs *spi);
1783 
1800 uint16_t DL_SPI_receiveDataBlocking16(SPI_Regs *spi);
1801 
1824 uint32_t DL_SPI_receiveDataBlocking32(SPI_Regs *spi);
1825 
1846 bool DL_SPI_transmitDataCheck8(SPI_Regs *spi, uint8_t data);
1847 
1868 bool DL_SPI_transmitDataCheck16(SPI_Regs *spi, uint16_t data);
1869 
1896 bool DL_SPI_transmitDataCheck32(SPI_Regs *spi, uint32_t data);
1897 
1918 bool DL_SPI_receiveDataCheck8(SPI_Regs *spi, uint8_t *buffer);
1919 
1940 bool DL_SPI_receiveDataCheck16(SPI_Regs *spi, uint16_t *buffer);
1941 
1968 bool DL_SPI_receiveDataCheck32(SPI_Regs *spi, uint32_t *buffer);
1969 
1979 uint32_t DL_SPI_drainRXFIFO8(
1980  SPI_Regs *spi, uint8_t *buffer, uint32_t maxCount);
1981 
1991 uint32_t DL_SPI_drainRXFIFO16(
1992  SPI_Regs *spi, uint16_t *buffer, uint32_t maxCount);
1993 
2010 uint32_t DL_SPI_drainRXFIFO32(
2011  SPI_Regs *spi, uint32_t *buffer, uint32_t maxCount);
2012 
2025 uint32_t DL_SPI_fillTXFIFO8(SPI_Regs *spi, uint8_t *buffer, uint32_t count);
2026 
2039 uint32_t DL_SPI_fillTXFIFO16(SPI_Regs *spi, uint16_t *buffer, uint32_t count);
2040 
2060 uint32_t DL_SPI_fillTXFIFO32(SPI_Regs *spi, uint32_t *buffer, uint32_t count);
2061 
2077 __STATIC_INLINE void DL_SPI_enableDMAReceiveEvent(
2078  SPI_Regs *spi, uint32_t interrupt)
2079 {
2080  spi->DMA_TRIG_RX.IMASK = interrupt;
2081 }
2082 
2096 __STATIC_INLINE void DL_SPI_enableDMATransmitEvent(SPI_Regs *spi)
2097 {
2098  spi->DMA_TRIG_TX.IMASK = SPI_DMA_TRIG_TX_IMASK_TX_SET;
2099 }
2100 
2114 __STATIC_INLINE void DL_SPI_disableDMAReceiveEvent(
2115  SPI_Regs *spi, uint32_t interrupt)
2116 {
2117  spi->DMA_TRIG_RX.IMASK &= ~(interrupt);
2118 }
2119 
2133 __STATIC_INLINE void DL_SPI_disableDMATransmitEvent(SPI_Regs *spi)
2134 {
2135  spi->DMA_TRIG_TX.IMASK = SPI_DMA_TRIG_TX_IMASK_TX_CLR;
2136 }
2137 
2155 __STATIC_INLINE uint32_t DL_SPI_getEnabledDMAReceiveEvent(
2156  SPI_Regs *spi, uint32_t interruptMask)
2157 {
2158  return (spi->DMA_TRIG_RX.IMASK & interruptMask);
2159 }
2160 
2174 __STATIC_INLINE uint32_t DL_SPI_getEnabledDMATransmitEvent(SPI_Regs *spi)
2175 {
2176  return (spi->DMA_TRIG_TX.IMASK & SPI_DMA_TRIG_TX_IMASK_TX_MASK);
2177 }
2178 
2201  SPI_Regs *spi, uint32_t interruptMask)
2202 {
2203  return (spi->DMA_TRIG_RX.MIS & interruptMask);
2204 }
2205 
2223 __STATIC_INLINE uint32_t DL_SPI_getEnabledDMATransmitEventStatus(SPI_Regs *spi)
2224 {
2225  return (spi->DMA_TRIG_TX.MIS & SPI_DMA_TRIG_TX_MIS_TX_MASK);
2226 }
2227 
2245 __STATIC_INLINE uint32_t DL_SPI_getRawDMAReceiveEventStatus(
2246  SPI_Regs *spi, uint32_t interruptMask)
2247 {
2248  return (spi->DMA_TRIG_RX.RIS & interruptMask);
2249 }
2250 
2266 __STATIC_INLINE uint32_t DL_SPI_getRawDMATransmitEventStatus(SPI_Regs *spi)
2267 {
2268  return (spi->DMA_TRIG_TX.RIS & SPI_DMA_TRIG_TX_RIS_TX_MASK);
2269 }
2270 
2287 __STATIC_INLINE DL_SPI_DMA_IIDX_RX DL_SPI_getPendingDMAReceiveEvent(
2288  SPI_Regs *spi)
2289 {
2290  return (DL_SPI_DMA_IIDX_RX)(spi->DMA_TRIG_RX.IIDX);
2291 }
2292 
2309 __STATIC_INLINE DL_SPI_DMA_IIDX_TX DL_SPI_getPendingDMATransmitEvent(
2310  SPI_Regs *spi)
2311 {
2312  return (DL_SPI_DMA_IIDX_TX)(spi->DMA_TRIG_TX.IIDX);
2313 }
2314 
2327  SPI_Regs *spi, uint32_t interruptMask)
2328 {
2329  spi->DMA_TRIG_RX.ICLR = interruptMask;
2330 }
2331 
2342 __STATIC_INLINE void DL_SPI_clearDMATransmitEventStatus(SPI_Regs *spi)
2343 {
2344  spi->DMA_TRIG_TX.ICLR = SPI_DMA_TRIG_TX_ICLR_TX_CLR;
2345 }
2346 
2364 bool DL_SPI_saveConfiguration(SPI_Regs *spi, DL_SPI_backupConfig *ptr);
2365 
2383 bool DL_SPI_restoreConfiguration(SPI_Regs *spi, DL_SPI_backupConfig *ptr);
2384 
2385 #ifdef __cplusplus
2386 }
2387 #endif
2388 
2389 #endif /* __MSPM0_HAS_SPI__ */
2390 
2391 #endif /* ti_dl_dl_spi__include */
2392 
Definition: dl_spi.h:368
bool DL_SPI_restoreConfiguration(SPI_Regs *spi, DL_SPI_backupConfig *ptr)
Restore SPI configuration after leaving a power loss state.
__STATIC_INLINE DL_SPI_TX_FIFO_LEVEL DL_SPI_getTXFIFOThreshold(SPI_Regs *spi)
Get the TX FIFO interrupt threshold level.
Definition: dl_spi.h:1394
Definition: dl_spi.h:307
uint32_t controlWord0
Definition: dl_spi.h:428
Definition: dl_spi.h:326
DL_SPI_RX_FIFO_LEVEL
Definition: dl_spi.h:299
__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_SPI_getEnabledDMAReceiveEventStatus(SPI_Regs *spi, uint32_t interruptMask)
Check interrupt flag of enabled SPI interrupt for DMA receive event.
Definition: dl_spi.h:2200
__STATIC_INLINE DL_SPI_DMA_IIDX_RX DL_SPI_getPendingDMAReceiveEvent(SPI_Regs *spi)
Get highest priority pending SPI interrupt for DMA receive event.
Definition: dl_spi.h:2287
__STATIC_INLINE void DL_SPI_setFrameFormat(SPI_Regs *spi, DL_SPI_FRAME_FORMAT frameFormat)
Set the frame format to use.
Definition: dl_spi.h:814
bool DL_SPI_receiveDataCheck16(SPI_Regs *spi, uint16_t *buffer)
Checks the RX FIFO before trying to transmit data.
__STATIC_INLINE uint32_t DL_SPI_getDelayedSampling(SPI_Regs *spi)
Get the delay sampling.
Definition: dl_spi.h:1354
uint32_t DL_SPI_fillTXFIFO16(SPI_Regs *spi, uint16_t *buffer, uint32_t count)
Fill the TX FIFO using 16 bit access.
uint32_t clockControl
Definition: dl_spi.h:438
__STATIC_INLINE void DL_SPI_disableLoopbackMode(SPI_Regs *spi)
Disables loopback mode.
Definition: dl_spi.h:950
Definition: dl_spi.h:328
Definition: dl_spi.h:257
Definition: dl_spi.h:277
__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:1377
__STATIC_INLINE void DL_SPI_disableInterrupt(SPI_Regs *spi, uint32_t interruptMask)
Disable SPI interrupts.
Definition: dl_spi.h:1610
DL_SPI_DMA_IIDX_RX
Definition: dl_spi.h:145
__STATIC_INLINE void DL_SPI_setRepeatTransmit(SPI_Regs *spi, uint32_t numRepeats)
Set counter for repeated transmit.
Definition: dl_spi.h:984
__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:2114
__STATIC_INLINE bool DL_SPI_isReset(SPI_Regs *spi)
Returns if spi peripheral was reset.
Definition: dl_spi.h:535
uint32_t DL_SPI_fillTXFIFO8(SPI_Regs *spi, uint8_t *buffer, uint32_t count)
Fill the TX FIFO using 8 bit access.
DL_SPI_BIT_ORDER
Definition: dl_spi.h:233
__STATIC_INLINE void DL_SPI_enableControllerCommandDataMode(SPI_Regs *spi)
Enables command/data mode.
Definition: dl_spi.h:1243
void DL_SPI_setClockConfig(SPI_Regs *spi, DL_SPI_ClockConfig *config)
Configure SPI source clock.
DL_SPI_DMA_IIDX_TX
Definition: dl_spi.h:153
__STATIC_INLINE void DL_SPI_disableReceiveParity(SPI_Regs *spi)
Disables receive parity.
Definition: dl_spi.h:737
Definition: dl_spi.h:287
Definition: dl_spi.h:249
__STATIC_INLINE uint32_t DL_SPI_getControllerCommandDataModeConfig(SPI_Regs *spi)
Get the command/data mode configuration.
Definition: dl_spi.h:1227
Definition: dl_spi.h:211
Definition: dl_spi.h:195
DL_SPI_CHIP_SELECT chipSelectPin
Definition: dl_spi.h:402
Definition: dl_spi.h:279
__STATIC_INLINE uint32_t DL_SPI_getEnabledInterruptStatus(SPI_Regs *spi, uint32_t interruptMask)
Check interrupt flag of enabled SPI interrupts.
Definition: dl_spi.h:1651
uint32_t clockSel
Definition: dl_spi.h:441
__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:907
__STATIC_INLINE void DL_SPI_clearDMAReceiveEventStatus(SPI_Regs *spi, uint32_t interruptMask)
Clear pending SPI interrupts for DMA receive event.
Definition: dl_spi.h:2326
Definition: dl_spi.h:301
DL_SPI_IIDX
Definition: dl_spi.h:313
__STATIC_INLINE DL_SPI_IIDX DL_SPI_getPendingInterrupt(SPI_Regs *spi)
Get highest priority pending SPI interrupt.
Definition: dl_spi.h:1690
__STATIC_INLINE void DL_SPI_clearInterruptStatus(SPI_Regs *spi, uint32_t interruptMask)
Clear pending SPI interrupts.
Definition: dl_spi.h:1703
bool DL_SPI_transmitDataCheck32(SPI_Regs *spi, uint32_t data)
Checks the TX FIFO before trying to transmit data.
Definition: dl_spi.h:305
__STATIC_INLINE void DL_SPI_setControllerCommandDataModeConfig(SPI_Regs *spi, uint32_t config)
Configure the command/data mode.
Definition: dl_spi.h:1205
Definition: dl_spi.h:340
__STATIC_INLINE uint32_t DL_SPI_getRawInterruptStatus(SPI_Regs *spi, uint32_t interruptMask)
Check interrupt flag of any SPI interrupt.
Definition: dl_spi.h:1672
bool DL_SPI_receiveDataCheck32(SPI_Regs *spi, uint32_t *buffer)
Checks the RX FIFO before trying to transmit data.
Configuration struct for DL_SPI_init.
Definition: dl_spi.h:376
__STATIC_INLINE uint32_t DL_SPI_getRawDMAReceiveEventStatus(SPI_Regs *spi, uint32_t interruptMask)
Check interrupt flag of any SPI interrupt for DMA receive event.
Definition: dl_spi.h:2245
__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:1433
__STATIC_INLINE bool DL_SPI_isEnabled(SPI_Regs *spi)
Checks if the SPI peripheral is enabled.
Definition: dl_spi.h:561
__STATIC_INLINE DL_SPI_PARITY DL_SPI_getParity(SPI_Regs *spi)
Get the current receive and transmit parity configuration.
Definition: dl_spi.h:704
Definition: dl_spi.h:322
Definition: dl_spi.h:352
Configuration structure to backup SPI peripheral state before going to STOP/STANDBY mode...
Definition: dl_spi.h:423
void DL_SPI_init(SPI_Regs *spi, DL_SPI_Config *config)
Initialize the SPI peripheral.
__STATIC_INLINE void DL_SPI_disableControllerCommandDataMode(SPI_Regs *spi)
Disables command/data mode.
Definition: dl_spi.h:1253
void DL_SPI_transmitDataBlocking32(SPI_Regs *spi, uint32_t data)
Blocks to ensure transmit is ready before sending data.
__STATIC_INLINE bool DL_SPI_isPeripheralDataOutputEnabled(SPI_Regs *spi)
Checks if peripheral data output is enabled.
Definition: dl_spi.h:1316
DL_SPI_CLOCK_DIVIDE_RATIO divideRatio
Definition: dl_spi.h:414
__STATIC_INLINE void DL_SPI_clearDMATransmitEventStatus(SPI_Regs *spi)
Clear pending SPI interrupt for DMA transmit event.
Definition: dl_spi.h:2342
Definition: dl_spi.h:295
Definition: dl_spi.h:186
Definition: dl_spi.h:183
__STATIC_INLINE void DL_SPI_setPeripheralReceiveTimeout(SPI_Regs *spi, uint32_t timeout)
Set peripheral receive timeout.
Definition: dl_spi.h:1159
Definition: dl_spi.h:235
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:689
__STATIC_INLINE bool DL_SPI_isRXFIFOEmpty(SPI_Regs *spi)
Checks if the RX FIFO is empty.
Definition: dl_spi.h:651
Definition: dl_spi.h:265
Definition: dl_spi.h:214
Definition: dl_spi.h:348
__STATIC_INLINE uint32_t DL_SPI_getEnabledInterrupts(SPI_Regs *spi, uint32_t interruptMask)
Check which SPI interrupts are enabled.
Definition: dl_spi.h:1628
__STATIC_INLINE void DL_SPI_enableTransmitParity(SPI_Regs *spi)
Enables transmit parity.
Definition: dl_spi.h:767
Definition: dl_spi.h:358
bool DL_SPI_saveConfiguration(SPI_Regs *spi, DL_SPI_backupConfig *ptr)
Save SPI configuration before entering a power loss state.
Definition: dl_spi.h:273
__STATIC_INLINE bool DL_SPI_isLoopbackModeEnabled(SPI_Regs *spi)
Checks if the loopback mode is enabled.
Definition: dl_spi.h:965
__STATIC_INLINE void DL_SPI_disablePower(SPI_Regs *spi)
Disables power on spi module.
Definition: dl_spi.h:495
__STATIC_INLINE void DL_SPI_enableLoopbackMode(SPI_Regs *spi)
Enables loopback mode.
Definition: dl_spi.h:937
__STATIC_INLINE DL_SPI_DATA_SIZE DL_SPI_getDataSize(SPI_Regs *spi)
Get the configured size for transfers.
Definition: dl_spi.h:862
Definition: dl_spi.h:366
Definition: dl_spi.h:217
Definition: dl_spi.h:247
__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:1488
__STATIC_INLINE bool DL_SPI_isTXFIFOFull(SPI_Regs *spi)
Checks if the TX FIFO is full.
Definition: dl_spi.h:636
__STATIC_INLINE uint32_t DL_SPI_getPeripheralReceiveTimeout(SPI_Regs *spi)
Get peripheral receive timeout.
Definition: dl_spi.h:1178
Definition: dl_spi.h:338
__STATIC_INLINE uint32_t DL_SPI_receiveData32(SPI_Regs *spi)
Reads 32-bit data from the RX FIFO.
Definition: dl_spi.h:1583
__STATIC_INLINE uint32_t DL_SPI_getRawDMATransmitEventStatus(SPI_Regs *spi)
Check interrupt flag of any SPI interrupt for DMA transmit event.
Definition: dl_spi.h:2266
Definition: dl_spi.h:237
__STATIC_INLINE uint32_t DL_SPI_getEnabledDMATransmitEvent(SPI_Regs *spi)
Check if SPI interrupt for DMA transmit event is enabled.
Definition: dl_spi.h:2174
Definition: dl_spi.h:324
Definition: dl_spi.h:253
Definition: dl_spi.h:281
Definition: dl_spi.h:208
bool DL_SPI_transmitDataCheck8(SPI_Regs *spi, uint8_t data)
Checks the TX FIFO before trying to transmit data.
__STATIC_INLINE uint32_t DL_SPI_getRepeatTransmit(SPI_Regs *spi)
Get counter for repeated transmit.
Definition: dl_spi.h:1005
DL_SPI_PARITY
Definition: dl_spi.h:181
__STATIC_INLINE void DL_SPI_enableInterrupt(SPI_Regs *spi, uint32_t interruptMask)
Enable SPI interrupts.
Definition: dl_spi.h:1596
DL_SPI_CHIP_SELECT
Definition: dl_spi.h:271
Definition: dl_spi.h:309
uint32_t interruptMask1
Definition: dl_spi.h:457
__STATIC_INLINE void DL_SPI_enable(SPI_Regs *spi)
Enable the SPI peripheral.
Definition: dl_spi.h:546
__STATIC_INLINE DL_SPI_RX_FIFO_LEVEL DL_SPI_getRXFIFOThreshold(SPI_Regs *spi)
Get the RX FIFO interrupt threshold level.
Definition: dl_spi.h:1410
uint32_t DL_SPI_drainRXFIFO16(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:333
__STATIC_INLINE void DL_SPI_enablePower(SPI_Regs *spi)
Enables power on SPI module.
Definition: dl_spi.h:485
void DL_SPI_transmitDataBlocking8(SPI_Regs *spi, uint8_t data)
Blocks to ensure transmit is ready before sending data.
__STATIC_INLINE DL_SPI_DMA_IIDX_TX DL_SPI_getPendingDMATransmitEvent(SPI_Regs *spi)
Get highest priority pending SPI interrupt for DMA transmit event.
Definition: dl_spi.h:2309
DL_SPI_CLOCK
Definition: dl_spi.h:364
Definition: dl_spi.h:335
__STATIC_INLINE uint32_t DL_SPI_getEnabledDMATransmitEventStatus(SPI_Regs *spi)
Check interrupt flag of enabled SPI interrupt for DMA transmit event.
Definition: dl_spi.h:2223
uint32_t DL_SPI_drainRXFIFO8(SPI_Regs *spi, uint8_t *buffer, uint32_t maxCount)
Read all available data out of the RX FIFO using 8 bit access.
Configuration struct for DL_SPI_setClockConfig.
Definition: dl_spi.h:409
Definition: dl_spi.h:267
Definition: dl_spi.h:291
__STATIC_INLINE void DL_SPI_setDelayedSampling(SPI_Regs *spi, uint32_t delay)
Set the delay sampling.
Definition: dl_spi.h:1333
uint32_t interruptFifoLevelSelectWord
Definition: dl_spi.h:449
__STATIC_INLINE bool DL_SPI_isBusy(SPI_Regs *spi)
Checks if the SPI is busy transmitting.
Definition: dl_spi.h:606
Definition: dl_spi.h:261
Definition: dl_spi.h:356
__STATIC_INLINE bool DL_SPI_isControllerCommandDataModeEnabled(SPI_Regs *spi)
Checks if command/data mode is enabled.
Definition: dl_spi.h:1268
uint32_t interruptMask2
Definition: dl_spi.h:461
__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:2077
DL_SPI_TX_FIFO_LEVEL
Definition: dl_spi.h:285
DL_SPI_DATA_SIZE
Definition: dl_spi.h:241
Definition: dl_spi.h:155
__STATIC_INLINE void DL_SPI_enableReceiveParity(SPI_Regs *spi)
Enables receive parity.
Definition: dl_spi.h:722
uint32_t interruptMask0
Definition: dl_spi.h:453
__STATIC_INLINE void DL_SPI_disablePeripheralDataOutput(SPI_Regs *spi)
Disables peripheral data output.
Definition: dl_spi.h:1299
DL_SPI_MODE
Definition: dl_spi.h:225
Definition: dl_spi.h:227
__STATIC_INLINE void DL_SPI_enableDMATransmitEvent(SPI_Regs *spi)
Enable SPI interrupt for triggering the DMA transmit event.
Definition: dl_spi.h:2096
Definition: dl_spi.h:229
DL_SPI_CLOCK_DIVIDE_RATIO
Definition: dl_spi.h:344
DL_SPI_DATA_SIZE dataSize
Definition: dl_spi.h:393
bool DL_SPI_transmitDataCheck16(SPI_Regs *spi, uint16_t data)
Checks the TX FIFO before trying to transmit data.
__STATIC_INLINE bool DL_SPI_isReceiveParityEnabled(SPI_Regs *spi)
Checks if receive parity is enabled.
Definition: dl_spi.h:752
__STATIC_INLINE DL_SPI_CHIP_SELECT DL_SPI_getChipSelect(SPI_Regs *spi)
Get chip select used for controller or peripheral mode.
Definition: dl_spi.h:1139
DL_SPI_BIT_ORDER bitOrder
Definition: dl_spi.h:396
__STATIC_INLINE void DL_SPI_disablePacking(SPI_Regs *spi)
Disables packing feature.
Definition: dl_spi.h:1087
Definition: dl_spi.h:147
__STATIC_INLINE uint8_t DL_SPI_receiveData8(SPI_Regs *spi)
Reads 8-bit data from the RX FIFO.
Definition: dl_spi.h:1535
__STATIC_INLINE void DL_SPI_enablePeripheralDataOutput(SPI_Regs *spi)
Enables peripheral data output.
Definition: dl_spi.h:1283
DL_SPI_FRAME_FORMAT frameFormat
Definition: dl_spi.h:384
Definition: dl_spi.h:370
Definition: dl_spi.h:221
Definition: dl_spi.h:316
bool DL_SPI_receiveDataCheck8(SPI_Regs *spi, uint8_t *buffer)
Checks the RX FIFO before trying to transmit data.
Definition: dl_spi.h:245
void DL_SPI_getClockConfig(SPI_Regs *spi, DL_SPI_ClockConfig *config)
Get SPI source clock configuration.
void DL_SPI_transmitDataBlocking16(SPI_Regs *spi, uint16_t data)
Blocks to ensure transmit is ready before sending data.
__STATIC_INLINE bool DL_SPI_isPackingEnabled(SPI_Regs *spi)
Checks if packing feature is enabled.
Definition: dl_spi.h:1102
Definition: dl_spi.h:275
bool backupRdy
Definition: dl_spi.h:465
__STATIC_INLINE void DL_SPI_disableDMATransmitEvent(SPI_Regs *spi)
Disables SPI interrupt from triggering the DMA transmit event.
Definition: dl_spi.h:2133
Definition: dl_spi.h:204
uint16_t DL_SPI_receiveDataBlocking16(SPI_Regs *spi)
Blocks to ensure receive is ready before reading data.
__STATIC_INLINE void DL_SPI_setDataSize(SPI_Regs *spi, DL_SPI_DATA_SIZE dataSize)
Set the size for transfers.
Definition: dl_spi.h:847
uint32_t DL_SPI_fillTXFIFO32(SPI_Regs *spi, uint32_t *buffer, uint32_t count)
Fill the TX FIFO using 32 bit access.
__STATIC_INLINE DL_SPI_FRAME_FORMAT DL_SPI_getFrameFormat(SPI_Regs *spi)
Get the frame format configuration.
Definition: dl_spi.h:830
uint32_t controlWord1
Definition: dl_spi.h:434
__STATIC_INLINE uint32_t DL_SPI_getBitRateSerialClockDivider(SPI_Regs *spi)
Get the SPI bit rate serial clock divider (SCR)
Definition: dl_spi.h:1448
__STATIC_INLINE bool DL_SPI_isPeripheralAlignDataOnChipSelectEnabled(SPI_Regs *spi)
Checks if data alignment on chip select for peripherals is enabled.
Definition: dl_spi.h:1054
__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:1121
__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:1514
__STATIC_INLINE bool DL_SPI_isTransmitParityEnabled(SPI_Regs *spi)
Checks if transmit parity is enabled.
Definition: dl_spi.h:797
Definition: dl_spi.h:330
uint32_t DL_SPI_drainRXFIFO32(SPI_Regs *spi, uint32_t *buffer, uint32_t maxCount)
Read all available data out of the RX FIFO using 32 bit access.
Definition: dl_spi.h:243
DL_SPI_FRAME_FORMAT
Definition: dl_spi.h:193
__STATIC_INLINE uint16_t DL_SPI_receiveData16(SPI_Regs *spi)
Reads 16-bit data from the RX FIFO.
Definition: dl_spi.h:1556
Definition: dl_spi.h:318
__STATIC_INLINE bool DL_SPI_isRXFIFOFull(SPI_Regs *spi)
Checks if the RX FIFO is full.
Definition: dl_spi.h:666
Definition: dl_spi.h:149
Definition: dl_spi.h:255
__STATIC_INLINE void DL_SPI_reset(SPI_Regs *spi)
Resets spi peripheral.
Definition: dl_spi.h:519
__STATIC_INLINE bool DL_SPI_isPowerEnabled(SPI_Regs *spi)
Returns if power on spi module.
Definition: dl_spi.h:508
Definition: dl_spi.h:303
__STATIC_INLINE DL_SPI_MODE DL_SPI_getMode(SPI_Regs *spi)
Get the current mode for the SPI (controller/peripheral)
Definition: dl_spi.h:891
Definition: dl_spi.h:289
uint8_t DL_SPI_receiveDataBlocking8(SPI_Regs *spi)
Blocks to ensure receive is ready before reading data.
__STATIC_INLINE void DL_SPI_disablePeripheralAlignDataOnChipSelect(SPI_Regs *spi)
Disables data alignment on chip select for peripherals.
Definition: dl_spi.h:1038
__STATIC_INLINE bool DL_SPI_isTXFIFOEmpty(SPI_Regs *spi)
Checks if the TX FIFO is empty.
Definition: dl_spi.h:621
Definition: dl_spi.h:198
Definition: dl_spi.h:263
Definition: dl_spi.h:201
uint32_t DL_SPI_receiveDataBlocking32(SPI_Regs *spi)
Blocks to ensure receive is ready before reading data.
__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:1468
__STATIC_INLINE void DL_SPI_disableTransmitParity(SPI_Regs *spi)
Disables transmit parity.
Definition: dl_spi.h:782
__STATIC_INLINE void DL_SPI_disable(SPI_Regs *spi)
Disable the SPI peripheral.
Definition: dl_spi.h:571
Definition: dl_spi.h:360
Definition: dl_spi.h:259
DL_SPI_PARITY parity
Definition: dl_spi.h:390
__STATIC_INLINE void DL_SPI_enablePacking(SPI_Regs *spi)
Enables packing feature.
Definition: dl_spi.h:1071
__STATIC_INLINE DL_SPI_BIT_ORDER DL_SPI_getBitOrder(SPI_Regs *spi)
Get the current bit order used for transfers.
Definition: dl_spi.h:922
DL_SPI_MODE mode
Definition: dl_spi.h:378
__STATIC_INLINE uint32_t DL_SPI_getEnabledDMAReceiveEvent(SPI_Regs *spi, uint32_t interruptMask)
Check which SPI interrupt for DMA receive events is enabled.
Definition: dl_spi.h:2155
Definition: dl_spi.h:354
Definition: dl_spi.h:350
Definition: dl_spi.h:189
DL_SPI_CLOCK clockSel
Definition: dl_spi.h:411
uint32_t divideRatio
Definition: dl_spi.h:444
Definition: dl_spi.h:251
__STATIC_INLINE void DL_SPI_enablePeripheralAlignDataOnChipSelect(SPI_Regs *spi)
Enables data alignment on chip select for peripherals.
Definition: dl_spi.h:1022
Definition: dl_spi.h:293
Definition: dl_spi.h:346
__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:877
© Copyright 1995-2023, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale