64 #include <inc/hw_ints.h>
65 #include <inc/hw_memmap.h>
66 #include <inc/hw_types.h>
67 #include <inc/hw_ssi.h>
85 #define SSIConfigSetExpClk NOROM_SSIConfigSetExpClk
86 #define SSIDataPut NOROM_SSIDataPut
87 #define SSIDataPutNonBlocking NOROM_SSIDataPutNonBlocking
88 #define SSIDataGet NOROM_SSIDataGet
89 #define SSIDataGetNonBlocking NOROM_SSIDataGetNonBlocking
90 #define SSIIntRegister NOROM_SSIIntRegister
91 #define SSIIntUnregister NOROM_SSIIntUnregister
100 #define SSI_TXFF 0x00000008 // TX FIFO half full or less
101 #define SSI_RXFF 0x00000004 // RX FIFO half full or more
102 #define SSI_RXTO 0x00000002 // RX timeout
103 #define SSI_RXOR 0x00000001 // RX overrun
110 #define SSI_RX_FULL 0x00000008 // Receive FIFO full
111 #define SSI_RX_NOT_EMPTY 0x00000004 // Receive FIFO not empty
112 #define SSI_TX_NOT_FULL 0x00000002 // Transmit FIFO not full
113 #define SSI_TX_EMPTY 0x00000001 // Transmit FIFO empty
114 #define SSI_STATUS_MASK 0x0000000F
121 #define SSI_FRF_MOTO_MODE_0 0x00000000 // Moto fmt, polarity 0, phase 0
122 #define SSI_FRF_MOTO_MODE_1 0x00000002 // Moto fmt, polarity 0, phase 1
123 #define SSI_FRF_MOTO_MODE_2 0x00000001 // Moto fmt, polarity 1, phase 0
124 #define SSI_FRF_MOTO_MODE_3 0x00000003 // Moto fmt, polarity 1, phase 1
125 #define SSI_FRF_TI 0x00000010 // TI frame format
126 #define SSI_FRF_NMW 0x00000020 // National MicroWire frame format
128 #define SSI_MODE_MASTER 0x00000000 // SSI master
129 #define SSI_MODE_SLAVE 0x00000001 // SSI slave
130 #define SSI_MODE_SLAVE_OD 0x00000002 // SSI slave with output disabled
137 #define SSI_DMA_TX 0x00000002 // Enable DMA for transmit
138 #define SSI_DMA_RX 0x00000001 // Enable DMA for receive
146 #ifdef DRIVERLIB_DEBUG
162 SSIBaseValid(uint32_t ui32Base)
226 uint32_t ui32Protocol, uint32_t ui32Mode,
227 uint32_t ui32BitRate, uint32_t ui32DataWidth);
247 ASSERT(SSIBaseValid(ui32Base));
272 ASSERT(SSIBaseValid(ui32Base));
298 extern void SSIDataPut(uint32_t ui32Base, uint32_t ui32Data);
342 extern void SSIDataGet(uint32_t ui32Base, uint32_t *pui32Data);
390 ASSERT(SSIBaseValid(ui32Base));
415 __STATIC_INLINE uint32_t
421 ASSERT(SSIBaseValid(ui32Base));
449 extern void SSIIntRegister(uint32_t ui32Base,
void (*pfnHandler)(
void));
493 ASSERT(SSIBaseValid(ui32Base));
523 ASSERT(SSIBaseValid(ui32Base));
528 HWREG(ui32Base +
SSI_O_IMSC) &= ~(ui32IntFlags);
569 ASSERT(SSIBaseValid(ui32Base));
574 HWREG(ui32Base +
SSI_O_ICR) = ui32IntFlags;
597 __STATIC_INLINE uint32_t
603 ASSERT(SSIBaseValid(ui32Base));
644 ASSERT(SSIBaseValid(ui32Base));
674 ASSERT(SSIBaseValid(ui32Base));
688 #if !defined(DRIVERLIB_NOROM) && !defined(DOXYGEN)
690 #ifdef ROM_SSIConfigSetExpClk
691 #undef SSIConfigSetExpClk
692 #define SSIConfigSetExpClk ROM_SSIConfigSetExpClk
694 #ifdef ROM_SSIDataPut
696 #define SSIDataPut ROM_SSIDataPut
698 #ifdef ROM_SSIDataPutNonBlocking
699 #undef SSIDataPutNonBlocking
700 #define SSIDataPutNonBlocking ROM_SSIDataPutNonBlocking
702 #ifdef ROM_SSIDataGet
704 #define SSIDataGet ROM_SSIDataGet
706 #ifdef ROM_SSIDataGetNonBlocking
707 #undef SSIDataGetNonBlocking
708 #define SSIDataGetNonBlocking ROM_SSIDataGetNonBlocking
710 #ifdef ROM_SSIIntRegister
711 #undef SSIIntRegister
712 #define SSIIntRegister ROM_SSIIntRegister
714 #ifdef ROM_SSIIntUnregister
715 #undef SSIIntUnregister
716 #define SSIIntUnregister ROM_SSIIntUnregister
static void SSIIntClear(uint32_t ui32Base, uint32_t ui32IntFlags)
Clears SSI interrupt sources.
static void SSIIntEnable(uint32_t ui32Base, uint32_t ui32IntFlags)
Enables individual SSI interrupt sources.
void SSIDataGet(uint32_t ui32Base, uint32_t *pui32Data)
Gets a data element from the SSI receive FIFO.
static void SSIDMAEnable(uint32_t ui32Base, uint32_t ui32DMAFlags)
Enable SSI DMA operation.
int32_t SSIDataPutNonBlocking(uint32_t ui32Base, uint32_t ui32Data)
Puts a data element into the SSI transmit FIFO.
static uint32_t SSIIntStatus(uint32_t ui32Base, bool bMasked)
Gets the current interrupt status.
static uint32_t SSIStatus(uint32_t ui32Base)
Get the status of the SSI data buffers.
int32_t SSIDataGetNonBlocking(uint32_t ui32Base, uint32_t *pui32Data)
Gets a data element from the SSI receive FIFO.
void SSIDataPut(uint32_t ui32Base, uint32_t ui32Data)
Puts a data element into the SSI transmit FIFO.
void SSIIntRegister(uint32_t ui32Base, void(*pfnHandler)(void))
Registers an interrupt handler for the synchronous serial port.
static void SSIIntDisable(uint32_t ui32Base, uint32_t ui32IntFlags)
Disables individual SSI interrupt sources.
static void SSIDMADisable(uint32_t ui32Base, uint32_t ui32DMAFlags)
Disable SSI DMA operation.
void SSIIntUnregister(uint32_t ui32Base)
Unregisters an interrupt handler for the synchronous serial port.
static bool SSIBusy(uint32_t ui32Base)
Determines whether the SSI transmitter is busy or not.
static void SSIDisable(uint32_t ui32Base)
Disables the synchronous serial port.
static void SSIEnable(uint32_t ui32Base)
Enables the synchronous serial port.
void SSIConfigSetExpClk(uint32_t ui32Base, uint32_t ui32SSIClk, uint32_t ui32Protocol, uint32_t ui32Mode, uint32_t ui32BitRate, uint32_t ui32DataWidth)
Configures the synchronous serial port.