60 #include "../inc/hw_ints.h" 61 #include "../inc/hw_memmap.h" 62 #include "../inc/hw_types.h" 63 #include "../inc/hw_spi.h" 73 #define SPI_DMA_DONE_TX SPI_IMASK_DMATX 74 #define SPI_DMA_DONE_RX SPI_IMASK_DMARX 75 #define SPI_IDLE SPI_IMASK_IDLE 76 #define SPI_TXEMPTY SPI_IMASK_TXEMPTY 77 #define SPI_TX SPI_IMASK_TX 80 #define SPI_RTOUT SPI_IMASK_RTOUT 81 #define SPI_PER SPI_IMASK_PER 82 #define SPI_RXFIFO_OVF SPI_IMASK_RXOVF 89 #define SPI_CSSEL_CS0 SPI_CTL0_CSSEL_CS0 90 #define SPI_CSSEL_CS1 SPI_CTL0_CSSEL_CS1 91 #define SPI_CSSEL_CS2 SPI_CTL0_CSSEL_CS2 92 #define SPI_CSSEL_CS3 SPI_CTL0_CSSEL_CS3 99 #define SPI_BUSY SPI_STA_BUSY_ACTIVE 100 #define SPI_RX_NOT_FULL SPI_STA_RNF_NOT_FULL 101 #define SPI_RX_EMPTY SPI_STA_RFE_EMPTY 102 #define SPI_TX_NOT_FULL SPI_STA_TNF_NOT_FULL 103 #define SPI_TX_EMPTY SPI_STA_TFE_EMPTY 104 #define SPI_STATUS_MASK 0x0000001F 112 #define SPI_FRF_MOTO_MODE_0 (SPI_CTL0_FRF_MOTOROLA_3WIRE | SPI_CTL0_SPO_LO | SPI_CTL0_SPH_FIRST) 113 #define SPI_FRF_MOTO_MODE_1 (SPI_CTL0_FRF_MOTOROLA_3WIRE | SPI_CTL0_SPO_LO | SPI_CTL0_SPH_SECOND) 115 #define SPI_FRF_MOTO_MODE_2 (SPI_CTL0_FRF_MOTOROLA_3WIRE | SPI_CTL0_SPO_HI | SPI_CTL0_SPH_FIRST) 117 #define SPI_FRF_MOTO_MODE_3 (SPI_CTL0_FRF_MOTOROLA_3WIRE | SPI_CTL0_SPO_HI | SPI_CTL0_SPH_SECOND) 119 #define SPI_FRF_MOTO_MODE_4 (SPI_CTL0_FRF_MOTOROLA_4WIRE | SPI_CTL0_SPO_LO | SPI_CTL0_SPH_FIRST) 121 #define SPI_FRF_MOTO_MODE_5 (SPI_CTL0_FRF_MOTOROLA_4WIRE | SPI_CTL0_SPO_LO | SPI_CTL0_SPH_SECOND) 123 #define SPI_FRF_MOTO_MODE_6 (SPI_CTL0_FRF_MOTOROLA_4WIRE | SPI_CTL0_SPO_HI | SPI_CTL0_SPH_FIRST) 125 #define SPI_FRF_MOTO_MODE_7 (SPI_CTL0_FRF_MOTOROLA_4WIRE | SPI_CTL0_SPO_HI | SPI_CTL0_SPH_SECOND) 128 #define SPI_FRF_TI SPI_CTL0_FRF_TI_SYNC 129 #define SPI_FRF_NMW SPI_CTL0_FRF_MICROWIRE 131 #define SPI_MODE_CONTROLLER SPI_CTL1_MS_CONTROLLER 132 #define SPI_MODE_PERIPHERAL SPI_CTL1_MS_PERIPHERAL 133 #define SPI_MODE_PERIPHERAL_OD \ 142 #define SPI_DMA_TX SPI_DMACR_TXEN 143 #define SPI_DMA_RX SPI_DMACR_RXEN 151 #ifdef DRIVERLIB_DEBUG 166 static bool SPIBaseValid(uint32_t base)
254 ASSERT(SPIBaseValid(base));
274 ASSERT(SPIBaseValid(base));
294 ASSERT(SPIBaseValid(base));
312 ASSERT(SPIBaseValid(base));
335 ASSERT(SPIBaseValid(base));
359 extern void SPIPutData(uint32_t base, uint32_t data);
403 extern void SPIGetData(uint32_t base, uint32_t *data);
448 ASSERT(SPIBaseValid(base));
475 ASSERT(SPIBaseValid(base));
505 extern void SPIRegisterInt(uint32_t base,
void (*pfnHandler)(
void));
552 ASSERT(SPIBaseValid(base));
582 ASSERT(SPIBaseValid(base));
631 ASSERT(SPIBaseValid(base));
665 ASSERT(SPIBaseValid(base));
701 ASSERT(SPIBaseValid(base));
726 ASSERT(SPIBaseValid(base));
void SPIGetData(uint32_t base, uint32_t *data)
Gets a data element from the SPI receive FIFO.
Definition: spi.c:162
void SPIUnregisterInt(uint32_t base)
Unregisters an interrupt handler for the Serial Peripheral Interface in the dynamic interrupt table...
Definition: spi.c:223
__STATIC_INLINE void SPIEnableHWCS(uint32_t base)
Enables hardware chip select.
Definition: spi.h:291
#define SPI0_BASE
Definition: hw_memmap.h:90
#define HWREG(x)
Definition: hw_types.h:78
#define __STATIC_INLINE
Definition: hw_types.h:57
#define SPI_O_RIS
Definition: hw_spi.h:51
#define SPI_CTL0_CSSEL_M
Definition: hw_spi.h:1603
#define SPI_O_ICLR
Definition: hw_spi.h:60
int32_t SPIPutDataNonBlocking(uint32_t base, uint32_t data)
Puts a data element into the SPI transmit FIFO.
Definition: spi.c:124
__STATIC_INLINE void SPIEnableInt(uint32_t base, uint32_t intFlags)
Enables individual SPI interrupt sources.
Definition: spi.h:549
__STATIC_INLINE void SPISelectCSN(uint32_t base, uint32_t csn)
Selects chip select to use.
Definition: spi.h:332
#define SPI_O_CTL1
Definition: hw_spi.h:75
#define SPI1_BASE
Definition: hw_memmap.h:91
__STATIC_INLINE void SPIDisableInt(uint32_t base, uint32_t intFlags)
Disables individual SPI interrupt sources.
Definition: spi.h:579
#define SPI_CTL1_EN_ENABLE
Definition: hw_spi.h:1632
void SPIConfigSetExpClk(uint32_t base, uint32_t spiClk, uint32_t protocol, uint32_t mode, uint32_t bitRate, uint32_t dataWidth)
Configures the serial peripheral port.
Definition: spi.c:96
__STATIC_INLINE void SPIDisableDMA(uint32_t base, uint32_t dmaFlags)
Disable SPI DMA operation.
Definition: spi.h:723
#define SPI_CTL0_HWCSN_ENABLE
Definition: hw_spi.h:1461
__STATIC_INLINE void SPIEnableDMA(uint32_t base, uint32_t dmaFlags)
Enable SPI DMA operation.
Definition: spi.h:698
#define SPI_STA_BUSY
Definition: hw_spi.h:2340
void SPIRegisterInt(uint32_t base, void(*pfnHandler)(void))
Registers an interrupt handler for the Serial Peripheral Interface in the dynamic interrupt table...
Definition: spi.c:200
__STATIC_INLINE void SPIDisableHWCS(uint32_t base)
Disables hardware chip select.
Definition: spi.h:309
__STATIC_INLINE void SPIEnable(uint32_t base)
Enables the serial peripheral port.
Definition: spi.h:251
#define ASSERT(expr)
Definition: debug.h:81
#define SPI_O_MIS
Definition: hw_spi.h:54
__STATIC_INLINE void SPIClearInt(uint32_t base, uint32_t intFlags)
Clears SPI interrupt sources.
Definition: spi.h:628
#define SPI_O_STA
Definition: hw_spi.h:117
__STATIC_INLINE uint32_t SPIStatus(uint32_t base)
Get the status of the SPI data buffers.
Definition: spi.h:472
#define SPI_O_CTL0
Definition: hw_spi.h:72
#define SPI_STATUS_MASK
Mask for bits above.
Definition: spi.h:104
__STATIC_INLINE uint32_t SPIIntStatus(uint32_t base, bool isMasked)
Gets the current interrupt status.
Definition: spi.h:662
#define SPI_O_IMASK
Definition: hw_spi.h:48
__STATIC_INLINE void SPIDisable(uint32_t base)
Disables the serial peripheral port.
Definition: spi.h:271
#define SPI_O_DMACR
Definition: hw_spi.h:87
void SPIPutData(uint32_t base, uint32_t data)
Puts a data element into the SPI transmit FIFO.
Definition: spi.c:146
__STATIC_INLINE bool SPIBusy(uint32_t base)
Determines whether the SPI transmitter is busy or not.
Definition: spi.h:445
int32_t SPIGetDataNonBlocking(uint32_t base, uint32_t *data)
Gets a data element from the SPI receive FIFO.
Definition: spi.c:178