SPI Module¶
The serial peripheral interface (SPI) API provides a set of functions to configure the device’s SPI module. Functions are provided to initialize the module, to send and receive data, to obtain status information, and to manage interrupts. Both master and slave modes are supported.
-
group
spi_api
This module is used for SPI configurations.
Defines
-
SPI_INT_RX_OVERRUN
0x0001U¶ Receive overrun interrupt.
-
SPI_INT_RX_DATA_TX_EMPTY
0x0002U¶ Data received, transmit empty.
-
SPI_INT_RXFF
0x0004U¶ RX FIFO level interrupt.
-
SPI_INT_TXFF
0x0008U¶ TX FIFO level interrupt.
-
SPI_INT_RXFF_OVERFLOW
0x0010U¶ RX FIFO overflow.
Enums
-
enum
SPI_TransferProtocol
¶ Values that can be passed to SPI_setConfig() as the protocol parameter.
Values:
-
enumerator
SPI_PROT_POL0PHA0
= 0x0000U¶ Mode 0. Polarity 0, phase 0. Rising edge without delay.
-
enumerator
SPI_PROT_POL0PHA1
= 0x0002U¶ Mode 1. Polarity 0, phase 1. Rising edge with delay.
-
enumerator
SPI_PROT_POL1PHA0
= 0x0001U¶ Mode 2. Polarity 1, phase 0. Falling edge without delay.
-
enumerator
SPI_PROT_POL1PHA1
= 0x0003U¶ Mode 3. Polarity 1, phase 1. Falling edge with delay.
-
enumerator
-
enum
SPI_Mode
¶ Values that can be passed to SPI_setConfig() as the mode parameter.
Values:
-
enumerator
SPI_MODE_SLAVE
= 0x0002U¶ SPI slave.
-
enumerator
SPI_MODE_MASTER
= 0x0006U¶ SPI master.
-
enumerator
SPI_MODE_SLAVE_OD
= 0x0000U¶ SPI slave w/ output (TALK) disabled.
-
enumerator
SPI_MODE_MASTER_OD
= 0x0004U¶ SPI master w/ output (TALK) disabled.
-
enumerator
-
enum
SPI_TxFIFOLevel
¶ Values that can be passed to SPI_setFIFOInterruptLevel() as the txLevel parameter, returned by SPI_getFIFOInterruptLevel() in the txLevel parameter, and returned by SPI_getTxFIFOStatus().
Values:
-
enumerator
SPI_FIFO_TXEMPTY
= 0x0000U¶ Transmit FIFO empty.
-
enumerator
SPI_FIFO_TX0
= 0x0000U¶ Transmit FIFO empty.
-
enumerator
SPI_FIFO_TX1
= 0x0001U¶ Transmit FIFO 1/16 full.
-
enumerator
SPI_FIFO_TX2
= 0x0002U¶ Transmit FIFO 2/16 full.
-
enumerator
SPI_FIFO_TX3
= 0x0003U¶ Transmit FIFO 3/16 full.
-
enumerator
SPI_FIFO_TX4
= 0x0004U¶ Transmit FIFO 4/16 full.
-
enumerator
SPI_FIFO_TX5
= 0x0005U¶ Transmit FIFO 5/16 full.
-
enumerator
SPI_FIFO_TX6
= 0x0006U¶ Transmit FIFO 6/16 full.
-
enumerator
SPI_FIFO_TX7
= 0x0007U¶ Transmit FIFO 7/16 full.
-
enumerator
SPI_FIFO_TX8
= 0x0008U¶ Transmit FIFO 8/16 full.
-
enumerator
SPI_FIFO_TX9
= 0x0009U¶ Transmit FIFO 9/16 full.
-
enumerator
SPI_FIFO_TX10
= 0x000AU¶ Transmit FIFO 10/16 full.
-
enumerator
SPI_FIFO_TX11
= 0x000BU¶ Transmit FIFO 11/16 full.
-
enumerator
SPI_FIFO_TX12
= 0x000CU¶ Transmit FIFO 12/16 full.
-
enumerator
SPI_FIFO_TX13
= 0x000DU¶ Transmit FIFO 13/16 full.
-
enumerator
SPI_FIFO_TX14
= 0x000EU¶ Transmit FIFO 14/16 full.
-
enumerator
SPI_FIFO_TX15
= 0x000FU¶ Transmit FIFO 15/16 full.
-
enumerator
SPI_FIFO_TX16
= 0x0010U¶ Transmit FIFO full.
-
enumerator
SPI_FIFO_TXFULL
= 0x0010U¶ Transmit FIFO full.
-
enumerator
-
enum
SPI_RxFIFOLevel
¶ Values that can be passed to SPI_setFIFOInterruptLevel() as the rxLevel parameter, returned by SPI_getFIFOInterruptLevel() in the rxLevel parameter, and returned by SPI_getRxFIFOStatus().
Values:
-
enumerator
SPI_FIFO_RXEMPTY
= 0x0000U¶ Receive FIFO empty.
-
enumerator
SPI_FIFO_RX0
= 0x0000U¶ Receive FIFO empty.
-
enumerator
SPI_FIFO_RX1
= 0x0001U¶ Receive FIFO 1/16 full.
-
enumerator
SPI_FIFO_RX2
= 0x0002U¶ Receive FIFO 2/16 full.
-
enumerator
SPI_FIFO_RX3
= 0x0003U¶ Receive FIFO 3/16 full.
-
enumerator
SPI_FIFO_RX4
= 0x0004U¶ Receive FIFO 4/16 full.
-
enumerator
SPI_FIFO_RX5
= 0x0005U¶ Receive FIFO 5/16 full.
-
enumerator
SPI_FIFO_RX6
= 0x0006U¶ Receive FIFO 6/16 full.
-
enumerator
SPI_FIFO_RX7
= 0x0007U¶ Receive FIFO 7/16 full.
-
enumerator
SPI_FIFO_RX8
= 0x0008U¶ Receive FIFO 8/16 full.
-
enumerator
SPI_FIFO_RX9
= 0x0009U¶ Receive FIFO 9/16 full.
-
enumerator
SPI_FIFO_RX10
= 0x000AU¶ Receive FIFO 10/16 full.
-
enumerator
SPI_FIFO_RX11
= 0x000BU¶ Receive FIFO 11/16 full.
-
enumerator
SPI_FIFO_RX12
= 0x000CU¶ Receive FIFO 12/16 full.
-
enumerator
SPI_FIFO_RX13
= 0x000DU¶ Receive FIFO 13/16 full.
-
enumerator
SPI_FIFO_RX14
= 0x000EU¶ Receive FIFO 14/16 full.
-
enumerator
SPI_FIFO_RX15
= 0x000FU¶ Receive FIFO 15/16 full.
-
enumerator
SPI_FIFO_RX16
= 0x0010U¶ Receive FIFO full.
-
enumerator
SPI_FIFO_RXFULL
= 0x0010U¶ Receive FIFO full.
-
enumerator
SPI_FIFO_RXDEFAULT
= 0x001FU¶ To prevent interrupt at reset.
-
enumerator
-
enum
SPI_EmulationMode
¶ Values that can be passed to SPI_setEmulationMode() as the mode parameter.
Values:
-
enumerator
SPI_EMULATION_STOP_MIDWAY
= 0x0000U¶ Transmission stops after midway in the bit stream.
-
enumerator
SPI_EMULATION_FREE_RUN
= 0x0010U¶ Continue SPI operation regardless.
-
enumerator
SPI_EMULATION_STOP_AFTER_TRANSMIT
= 0x0020U¶ Transmission will stop after a started transmission completes.
-
enumerator
-
enum
SPI_STEPolarity
¶ Values that can be passed to SPI_setSTESignalPolarity() as the polarity parameter.
Values:
-
enumerator
SPI_STE_ACTIVE_LOW
= 0x0000U¶ SPISTE is active low (normal)
-
enumerator
SPI_STE_ACTIVE_HIGH
= 0x2U¶ SPISTE is active high (inverted)
-
enumerator
Functions
-
void
SPI_enableModule
(uint32_t base)¶ Enables the serial peripheral interface.
This function enables operation of the serial peripheral interface. The serial peripheral interface must be configured before it is enabled.
- Parameters
base
: specifies the SPI module base address.
- Return
None.
-
void
SPI_disableModule
(uint32_t base)¶ Disables the serial peripheral interface.
This function disables operation of the serial peripheral interface. Call this function before doing any configuration.
- Parameters
base
: specifies the SPI module base address.
- Return
None.
-
void
SPI_enableFIFO
(uint32_t base)¶ Enables the transmit and receive FIFOs.
This functions enables the transmit and receive FIFOs in the SPI.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_disableFIFO
(uint32_t base)¶ Disables the transmit and receive FIFOs.
This functions disables the transmit and receive FIFOs in the SPI.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_resetTxFIFO
(uint32_t base)¶ Resets the transmit FIFO.
This function resets the transmit FIFO, setting the FIFO pointer back to zero.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_resetRxFIFO
(uint32_t base)¶ Resets the receive FIFO.
This function resets the receive FIFO, setting the FIFO pointer back to zero.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_setFIFOInterruptLevel
(uint32_t base, SPI_TxFIFOLevel txLevel, SPI_RxFIFOLevel rxLevel)¶ Sets the FIFO level at which interrupts are generated.
This function sets the FIFO level at which transmit and receive interrupts are generated.
- Parameters
base
: is the base address of the SPI port.txLevel
: is the transmit FIFO interrupt level, specified as SPI_FIFO_TX0, SPI_FIFO_TX1, SPI_FIFO_TX2, … or SPI_FIFO_TX16.rxLevel
: is the receive FIFO interrupt level, specified as SPI_FIFO_RX0, SPI_FIFO_RX1, SPI_FIFO_RX2, … or SPI_FIFO_RX16.
- Return
None.
-
void
SPI_getFIFOInterruptLevel
(uint32_t base, SPI_TxFIFOLevel *txLevel, SPI_RxFIFOLevel *rxLevel)¶ Gets the FIFO level at which interrupts are generated.
This function gets the FIFO level at which transmit and receive interrupts are generated.
- Parameters
base
: is the base address of the SPI port.txLevel
: is a pointer to storage for the transmit FIFO level, returned as one of SPI_FIFO_TX0, SPI_FIFO_TX1, SPI_FIFO_TX2, … or SPI_FIFO_TX16.rxLevel
: is a pointer to storage for the receive FIFO level, returned as one of SPI_FIFO_RX0, SPI_FIFO_RX1, SPI_FIFO_RX2, … or SPI_FIFO_RX16.
- Return
None.
-
SPI_TxFIFOLevel
SPI_getTxFIFOStatus
(uint32_t base)¶ Get the transmit FIFO status
This function gets the current number of words in the transmit FIFO.
- Parameters
base
: is the base address of the SPI port.
- Return
Returns the current number of words in the transmit FIFO specified as one of the following: SPI_FIFO_TX0, SPI_FIFO_TX1, SPI_FIFO_TX2, SPI_FIFO_TX3, …, or SPI_FIFO_TX16
-
SPI_RxFIFOLevel
SPI_getRxFIFOStatus
(uint32_t base)¶ Get the receive FIFO status
This function gets the current number of words in the receive FIFO.
- Parameters
base
: is the base address of the SPI port.
- Return
Returns the current number of words in the receive FIFO specified as one of the following: SPI_FIFO_RX0, SPI_FIFO_RX1, SPI_FIFO_RX2, SPI_FIFO_RX3, …, or SPI_FIFO_RX16
-
bool
SPI_isBusy
(uint32_t base)¶ Determines whether the SPI transmitter is busy or not.
This function allows the caller to determine whether all transmitted bytes have cleared the transmitter hardware. If
false is returned, then the transmit FIFO is empty and all bits of the last transmitted word have left the hardware shift register. This function is only valid when operating in FIFO mode.- Parameters
base
: is the base address of the SPI port.
- Return
Returns true if the SPI is transmitting or false if all transmissions are complete.
-
void
SPI_writeDataNonBlocking
(uint32_t base, uint16_t data)¶ Puts a data element into the SPI transmit buffer.
This function places the supplied data into the transmit buffer of the specified SPI module.
- Parameters
base
: specifies the SPI module base address.data
: is the left-justified data to be transmitted over SPI.
- Note
The data being sent must be left-justified in data. The lower 16 - N bits will be discarded where N is the data width selected in SPI_setConfig(). For example, if configured for a 6-bit data width, the lower 10 bits of data will be discarded.
- Return
None.
-
uint16_t
SPI_readDataNonBlocking
(uint32_t base)¶ Gets a data element from the SPI receive buffer.
This function gets received data from the receive buffer of the specified SPI module and returns it.
- Parameters
base
: specifies the SPI module base address.
- Note
Only the lower N bits of the value written to data contain valid data, where N is the data width as configured by SPI_setConfig(). For example, if the interface is configured for 8-bit data width, only the lower 8 bits of the value written to data contain valid data.
- Return
Returns the word of data read from the SPI receive buffer.
-
void
SPI_writeDataBlockingFIFO
(uint32_t base, uint16_t data)¶ Waits for space in the FIFO and then puts data into the transmit buffer.
This function places the supplied data into the transmit buffer of the specified SPI module once space is available in the transmit FIFO. This function should only be used when the FIFO is enabled.
- Parameters
base
: specifies the SPI module base address.data
: is the left-justified data to be transmitted over SPI.
- Note
The data being sent must be left-justified in data. The lower 16 - N bits will be discarded where N is the data width selected in SPI_setConfig(). For example, if configured for a 6-bit data width, the lower 10 bits of data will be discarded.
- Return
None.
-
uint16_t
SPI_readDataBlockingFIFO
(uint32_t base)¶ Waits for data in the FIFO and then reads it from the receive buffer.
This function waits until there is data in the receive FIFO and then reads received data from the receive buffer. This function should only be used when FIFO mode is enabled.
- Parameters
base
: specifies the SPI module base address.
- Note
Only the lower N bits of the value written to data contain valid data, where N is the data width as configured by SPI_setConfig(). For example, if the interface is configured for 8-bit data width, only the lower 8 bits of the value written to data contain valid data.
- Return
Returns the word of data read from the SPI receive buffer.
-
void
SPI_writeDataBlockingNonFIFO
(uint32_t base, uint16_t data)¶ Waits for the transmit buffer to empty and then writes data to it.
This function places the supplied data into the transmit buffer of the specified SPI module once it is empty. This function should not be used when FIFO mode is enabled.
- Parameters
base
: specifies the SPI module base address.data
: is the left-justified data to be transmitted over SPI.
- Note
The data being sent must be left-justified in data. The lower 16 - N bits will be discarded where N is the data width selected in SPI_setConfig(). For example, if configured for a 6-bit data width, the lower 10 bits of data will be discarded.
- Return
None.
-
uint16_t
SPI_readDataBlockingNonFIFO
(uint32_t base)¶ Waits for data to be received and then reads it from the buffer.
This function waits for data to be received and then reads it from the receive buffer of the specified SPI module. This function should not be used when FIFO mode is enabled.
- Parameters
base
: specifies the SPI module base address.
- Note
Only the lower N bits of the value written to data contain valid data, where N is the data width as configured by SPI_setConfig(). For example, if the interface is configured for 8-bit data width, only the lower 8 bits of the value written to data contain valid data.
- Return
Returns the word of data read from the SPI receive buffer.
-
void
SPI_enableTriWire
(uint32_t base)¶ Enables SPI 3-wire mode.
This function enables 3-wire mode. When in master mode, this allows SPISIMO to become SPIMOMI and SPISOMI to become free for non-SPI use. When in slave mode, SPISOMI because the SPISISO pin and SPISIMO is free for non-SPI use.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_disableTriWire
(uint32_t base)¶ Disables SPI 3-wire mode.
This function disables 3-wire mode. SPI will operate in normal 4-wire mode.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_enableLoopback
(uint32_t base)¶ Enables SPI loopback mode.
This function enables loopback mode. This mode is only valid during master mode and is helpful during device testing as it internally connects SIMO and SOMI.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_disableLoopback
(uint32_t base)¶ Disables SPI loopback mode.
This function disables loopback mode. Loopback mode is disabled by default after reset.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_setSTESignalPolarity
(uint32_t base, SPI_STEPolarity polarity)¶ Set the slave select (SPISTE) signal polarity.
This function sets the polarity of the slave select (SPISTE) signal. The two modes to choose from for the
polarity parameter are SPI_STE_ACTIVE_LOW for active-low polarity (typical) and SPI_STE_ACTIVE_HIGH for active-high polarity (considered inverted).- Parameters
base
: is the base address of the SPI port.polarity
: is the SPISTE signal polarity.
- Note
This has no effect on the STE signal when in master mode. It is only applicable to slave mode.
- Return
None.
-
void
SPI_enableHighSpeedMode
(uint32_t base)¶ Enables SPI high speed mode.
This function enables high speed mode.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_disableHighSpeedMode
(uint32_t base)¶ Disables SPI high speed mode.
This function disables high speed mode. High speed mode is disabled by default after reset.
- Parameters
base
: is the base address of the SPI port.
- Return
None.
-
void
SPI_setEmulationMode
(uint32_t base, SPI_EmulationMode mode)¶ Sets SPI emulation mode.
This function sets the behavior of the SPI operation when an emulation suspend occurs. The
mode parameter can be one of the following:- Parameters
base
: is the base address of the SPI port.mode
: is the emulation mode.
SPI_EMULATION_STOP_MIDWAY - Transmission stops midway through the bit stream. The rest of the bits will be transmitting after the suspend is deasserted.
SPI_EMULATION_STOP_AFTER_TRANSMIT - If the suspend occurs before the first SPICLK pulse, the transmission will not start. If it occurs later, the transmission will be completed.
SPI_EMULATION_FREE_RUN - SPI operation continues regardless of a the suspend.
- Return
None.
-
void
SPI_setTxFifoTransmitDelay
(uint32_t base, uint16_t delay)¶ Configures the FIFO Transmit Delay
This function sets the delay between every transfer from FIFO transmit buffer to transmit shift register. The delay is defined in number SPI serial clock cycles.
- Parameters
base
: is the base address of the SPI port.delay
: Tx FIFO delay to be configured in cycles (0..0xFF)
- Return
None
-
uint16_t
SPI_readRxEmulationBuffer
(uint32_t base)¶ Returns the Emulation Buffer Received Data
This function returns the Emulation Buffer Received Data
- Parameters
base
: is the base address of the SPI port.
- Return
Rx emulation buffer data
-
void
SPI_enableTalk
(uint32_t base)¶ Enable Trasnmit
This function sets the TALK bit enabling the data trasnmission. This bit is enabled by SPI_setConfig if the parameter \r mode is selected as SPI_MODE_SLAVE or SPI_MODE_MASTER.
- Parameters
base
: is the base address of the SPI port.
- Return
None
-
void
SPI_disableTalk
(uint32_t base)¶ Disable Trasnmit
This function clears the TALK bit disabling the data trasnmission. The output pin will be put in high-impedance state. This bit is enabled by SPI_setConfig if the parameter \r mode is selected as SPI_MODE_SLAVE or SPI_MODE_MASTER.
- Parameters
base
: is the base address of the SPI port.
- Return
None
-
void
SPI_setConfig
(uint32_t base, uint32_t lspclkHz, SPI_TransferProtocol protocol, SPI_Mode mode, uint32_t bitRate, uint16_t dataWidth)¶ Configures the serial peripheral interface.
This function configures the serial peripheral interface. It sets the SPI protocol, mode of operation, bit rate, and data width.
- Parameters
base
: specifies the SPI module base address.lspclkHz
: is the rate of the clock supplied to the SPI module (LSPCLK) in Hz.protocol
: specifies the data transfer protocol.mode
: specifies the mode of operation.bitRate
: specifies the clock rate in Hz.dataWidth
: specifies number of bits transferred per frame.
The protocol parameter defines the data frame format. The protocol parameter can be one of the following values: SPI_PROT_POL0PHA0, SPI_PROT_POL0PHA1, SPI_PROT_POL1PHA0, or SPI_PROT_POL1PHA1. These frame formats encode the following polarity and phase configurations:
The mode parameter defines the operating mode of the SPI module. The SPI module can operate as a master or slave; the SPI can also be be configured to disable output on its serial output line. The mode parameter can be one of the following values: SPI_MODE_MASTER, SPI_MODE_SLAVE, SPI_MODE_MASTER_OD or SPI_MODE_SLAVE_OD (“OD” indicates “output disabled”).
The bitRate parameter defines the bit rate for the SPI. This bit rate must satisfy the following clock ratio criteria:
bitRate can be no greater than lspclkHz divided by 4.
lspclkHz / bitRate cannot be greater than 128.
The dataWidth parameter defines the width of the data transfers and can be a value between 1 and 16, inclusive.
The peripheral clock is the low speed peripheral clock. This value is returned by SysCtl_getLowSpeedClock(), or it can be explicitly hard coded if it is constant and known (to save the code/execution overhead of a call to SysCtl_getLowSpeedClock()).
- Note
SPI operation should be disabled via SPI_disableModule() before any changes to its configuration.
- Return
None.
-
void
SPI_setBaudRate
(uint32_t base, uint32_t lspclkHz, uint32_t bitRate)¶ Configures the baud rate of the serial peripheral interface.
This function configures the SPI baud rate. The
bitRate parameter defines the bit rate for the SPI. This bit rate must satisfy the following clock ratio criteria:- Parameters
base
: specifies the SPI module base address.lspclkHz
: is the rate of the clock supplied to the SPI module (LSPCLK) in Hz.bitRate
: specifies the clock rate in Hz.
bitRate can be no greater than lspclkHz divided by 4.
lspclkHz / bitRate cannot be greater than 128.
The peripheral clock is the low speed peripheral clock. This value is returned by SysCtl_getLowSpeedClock(), or it can be explicitly hard coded if it is constant and known (to save the code/execution overhead of a call to SysCtl_getLowSpeedClock()).
- Note
SPI_setConfig() also sets the baud rate. Use SPI_setBaudRate() if you wish to configure it separately from protocol and mode.
- Return
None.
-
void
SPI_enableInterrupt
(uint32_t base, uint32_t intFlags)¶ Enables individual SPI interrupt sources.
This function enables the indicated SPI interrupt sources. Only the sources that are enabled can be reflected to the processor interrupt; disabled sources have no effect on the processor. The
intFlags parameter can be any of the following values:SPI_INT_RX_OVERRUN - Receive overrun interrupt
SPI_INT_RX_DATA_TX_EMPTY - Data received, transmit empty
SPI_INT_RXFF (also enables SPI_INT_RXFF_OVERFLOW) - RX FIFO level interrupt (and RX FIFO overflow)
SPI_INT_TXFF - TX FIFO level interrupt
- Parameters
base
: specifies the SPI module base address.intFlags
: is a bit mask of the interrupt sources to be enabled.
- Note
SPI_INT_RX_OVERRUN, SPI_INT_RX_DATA_TX_EMPTY, SPI_INT_RXFF_OVERFLOW, and SPI_INT_RXFF are associated with SPIRXINT; SPI_INT_TXFF is associated with SPITXINT.
- Return
None.
-
void
SPI_disableInterrupt
(uint32_t base, uint32_t intFlags)¶ Disables individual SPI interrupt sources.
This function disables the indicated SPI interrupt sources. The
intFlags parameter can be any of the following values:SPI_INT_RX_OVERRUN
SPI_INT_RX_DATA_TX_EMPTY
SPI_INT_RXFF (also disables SPI_INT_RXFF_OVERFLOW)
SPI_INT_TXFF
- Parameters
base
: specifies the SPI module base address.intFlags
: is a bit mask of the interrupt sources to be disabled.
- Note
SPI_INT_RX_OVERRUN, SPI_INT_RX_DATA_TX_EMPTY, SPI_INT_RXFF_OVERFLOW, and SPI_INT_RXFF are associated with SPIRXINT; SPI_INT_TXFF is associated with SPITXINT.
- Return
None.
-
uint32_t
SPI_getInterruptStatus
(uint32_t base)¶ Gets the current interrupt status.
This function returns the interrupt status for the SPI module.
- Parameters
base
: specifies the SPI module base address.
- Return
The current interrupt status, enumerated as a bit field of the following values:
SPI_INT_RX_OVERRUN - Receive overrun interrupt
SPI_INT_RX_DATA_TX_EMPTY - Data received, transmit empty
SPI_INT_RXFF - RX FIFO level interrupt
SPI_INT_RXFF_OVERFLOW - RX FIFO overflow
SPI_INT_TXFF - TX FIFO level interrupt
-
void
SPI_clearInterruptStatus
(uint32_t base, uint32_t intFlags)¶ Clears SPI interrupt sources.
This function clears the specified SPI interrupt sources so that they no longer assert. This function must be called in the interrupt handler to keep the interrupts from being triggered again immediately upon exit. The
intFlags parameter can consist of a bit field of the following values:SPI_INT_RX_OVERRUN
SPI_INT_RX_DATA_TX_EMPTY
SPI_INT_RXFF
SPI_INT_RXFF_OVERFLOW
SPI_INT_TXFF
- Parameters
base
: specifies the SPI module base address.intFlags
: is a bit mask of the interrupt sources to be cleared.
- Note
SPI_INT_RX_DATA_TX_EMPTY is cleared by a read of the receive receive buffer, so it usually doesn’t need to be cleared using this function.
- Note
Also note that SPI_INT_RX_OVERRUN, SPI_INT_RX_DATA_TX_EMPTY, SPI_INT_RXFF_OVERFLOW, and SPI_INT_RXFF are associated with SPIRXINT; SPI_INT_TXFF is associated with SPITXINT.
- Return
None.
-
Before initializing the SPI module, the user first must put the module into the reset state by calling SPI_disableModule(). The next call should be to SPI_setConfig() to set properties like master or slave mode, bit rate of the SPI clock signal, data width, and the number of bits per frame.
The next step is to do any any FIFO or interrupt configuration. FIFOs are configured using SPI_enableFIFO() and SPI_disableFIFO() and SPI_setFIFOInterruptLevel() if interrupts are desired. The functions SPI_enableInterrupt(), SPI_disableInterrupt(), SPI_clearInterruptStatus(), and SPI_getInterruptStatus() are for management of interrupts. Note that the SPI module uses separate interrupt lines for its receive and transmit interrupts when in FIFO mode, but only the “receive” interrupt line when not in FIFO mode.
When configuration is complete, SPI_enableModule() should be called to enable the operation of the module.
To transmit data, there are a few options. SPI_writeDataNonBlocking() will simply write the specified data to the transmit buffer and return. It is left up to the user to check beforehand that the module is ready for a new piece of data to be written to the buffer. This means checking the buffer-full flag is not set or, if in FIFO mode, checking how full the FIFO is using SPI_getTxFIFOStatus() when in FIFO mode. The other option is to use one of the two functions SPI_writeDataBlockingNonFIFO() and SPI_writeDataBlockingFIFO() that will wait in a while-loop for the module to be ready.
When receiving data, again, there are a few options. SPI_readDataNonBlocking() will immediately return the contents of the receive buffer. The user should check that there is in fact data ready by checking the buffer-full flag or, if in FIFO mode, checking how full the FIFO is using SPI_getRxFIFOStatus(). SPI_readDataBlockingNonFIFO() and SPI_readDataBlockingFIFO(), however, will wait in a while-loop for data to become available.
The code for this module is contained in driverlib/spi.c, with driverlib/spi.h containing the API declarations for use by applications.