The following describes the necessary
steps to enable and initialize the SPI.
TI recommends using the SPI driver in
the SimpleLink™ CC23xx Software
Development Kit (SDK) when using the SPI.
1. Ensure the SVT power domain is
powered up properly.
2. Enable the SPI module clock in
CLKCTL by setting the CLKCTL.CLKCFG0[10] SPI0 bit.
3. Configure the IOC module to route
the PICO, POCI, CS, and SCLK functionality from I/Os to the SPI module.
IOCFGn.PORTCFG must be written to the correct IDs.
For each of the frame formats, the SPI
is configured using the following steps:
- Make sure that the SPI.CTL1[0]
ENABLE bit is cleared before making any configuration changes
- Configure the clock pre-scaler
divisor by writing to the SPI.CLKCFG0[2:0] PRESC and SPI.CLKCFG1[9:0] SCR bit
fields
- Write the SPI.CTL0 register with
the following configuration:
- Desired clock phase and
polarity, if using Motorola™ SPI mode (SPH and SPO)
- The protocol mode:
Motorola SPI (4-wire or 3-wire) , TI SSF, MICROWIRE (FRF)
- The data size (DSS)
- Select whether the SPI is a controller or peripheral:
- For controller
operations, SPI.CTL1[2] MS is 1
- For peripheral mode
(output enabled), SPI.CTL1[2] MS bit is 0
- For peripheral mode
(output disabled), clear the SPI.CTL1[2] MS bit to 0 and set the
SPI.CTL1[3] POD bit to 1
- Optionally, configure the μDMA
channel (see Chapter 299) and enable the µDMA
options in the SPI.DMACR register
- Enable the SPI by setting the EN
bit in the SPI.CTL1 register
As an example, assume that the SPI
configuration is required to operate with the following parameters:
- Controller operation
- Texas Instruments Synchronous SPI
mode
- 1-Mbps bit rate
- 8 data bits
Assuming the system clock is 48 MHz,
the bit-rate calculation is shown in Equation 10
Equation 10. SCLK = CLKSVT / [PRESC × (1 +
SCR)]1000000 bps = 48000000 Hz / [2 × (1 + 23)]
In this case, if PRESC = 0x2, SCR must
be 0x18.
The configuration sequence is:
- Verify that the EN bit in the
SPI.CTL1 register is cleared
- Write the SPI.CLKCFG0 register
with a value of 0x00000002
- Write the SPI.CLKCFG1 register
with a value of 0x00000018
- Write the SPI.CTL0 register with
a value of 0x000047
- Write the SPI.CTL1 register with
a value of 0x00000004
- The SPI is then enabled by
setting the EN bit in the SPI.CTL1 register