The SPI module is a 3-wire or 4-wire bidirectional communication interface that converts data between parallel and serial formats. The SPI performs serial-to-parallel conversion on data received from a target device and performs parallel-to-serial conversion on data transmitted to a target device. The SPI can be configured as either a controller or a peripheral device. As a peripheral device, the SPI can be configured to disable the SPI output, which allows the coupling of a controller device with multiple peripheral devices. The TX and RX paths are buffered with separate internal FIFOs.
The SPI also includes a programmable bit rate clock divider and prescaler to generate the output serial clock derived from the input clock of the SPI. Bit rates are generated based on the input clock, see the device-specific data sheet for maximum bit rates.
The SPI module supports the following features:
- Programmable interface operation for Motorola SPI (3-wire and 4-wire), MICROWIRE, or TI Synchronous Serial format
- Configurable as a controller or a peripheral on the interface
- Programmable clock bit rate and prescaler
- CRC8-CCITT or CRC16-CCITT CRC capability and auto insertion in TX upon underflow
- Separate transmit (TX) and receive (RX) first-in-first-out buffers (FIFOs)
- If Data Size Select (DSS) is 4 to 8 bits FIFOs are 16 locations deep and 8 bits wide
- If Data Size Select (DSS) is 9 to 16 bits FIFOS are 8 locations deep and 16 bits wide
- Programmable data frame size from 4 bits to 16 bits (controller mode) or 7 to 16 bits (peripheral mode)
- Internal loopback test mode for diagnostic and debug testing
- Interrupts for transmit and receive FIFOs, overrun and time-out interrupts, and DMA-done interrupts
- Efficient transfers using micro direct memory access controller (μDMA):
- Separate channels for transmit and receive
- Receive single request asserted when data is in the FIFO; burst request asserted when FIFO contains a configurable number of entries
- Transmit single request asserted when there is space in the FIFO; burst request asserted when FIFO contains a configurable number of entries