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);
563 ASSERT(SSIBaseValid(ui32Base));
568 HWREG(ui32Base +
SSI_O_ICR) = ui32IntFlags;
591 __STATIC_INLINE uint32_t
597 ASSERT(SSIBaseValid(ui32Base));
638 ASSERT(SSIBaseValid(ui32Base));
668 ASSERT(SSIBaseValid(ui32Base));
682 #if !defined(DRIVERLIB_NOROM) && !defined(DOXYGEN)
684 #ifdef ROM_SSIConfigSetExpClk
685 #undef SSIConfigSetExpClk
686 #define SSIConfigSetExpClk ROM_SSIConfigSetExpClk
688 #ifdef ROM_SSIDataPut
690 #define SSIDataPut ROM_SSIDataPut
692 #ifdef ROM_SSIDataPutNonBlocking
693 #undef SSIDataPutNonBlocking
694 #define SSIDataPutNonBlocking ROM_SSIDataPutNonBlocking
696 #ifdef ROM_SSIDataGet
698 #define SSIDataGet ROM_SSIDataGet
700 #ifdef ROM_SSIDataGetNonBlocking
701 #undef SSIDataGetNonBlocking
702 #define SSIDataGetNonBlocking ROM_SSIDataGetNonBlocking
704 #ifdef ROM_SSIIntRegister
705 #undef SSIIntRegister
706 #define SSIIntRegister ROM_SSIIntRegister
708 #ifdef ROM_SSIIntUnregister
709 #undef SSIIntUnregister
710 #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.