SPI Words¶
There are a number of words for controlling SPI peripherals available on each of the supported microcontrollers. These are as follows:
Note that spi values as mentioned below vary between the different supported platforms. The following applies:
On the RP2040 and RP2350 the available spi values are 0 and 1.
On the STM32F411 the available spi values are 1 through 5.
On the STM32F407 the available spi values are 1 through 3.
On the STM32L476 the available spi values are 1 through 3.
On the STM32F746 the available spi values are 1 through 6.
spi¶
These words are in the spi module:
All platforms¶
enable-spi¶
( spi – )
Enable an SPI peripheral.
disable-spi¶
( spi – )
Disable an SPI peripheral. Note that SPI peripherals are disabled by default.
enable-spi-tx¶
( spi – )
Enable SPI peripheral transmit.
disable-spi-tx¶
( spi – )
Disable SPI peripheral transmit.
master-spi¶
( spi – )
Set an SPI peripheral to be a master. This must be done with the SPI peripheral disabled.
slave-spi¶
( spi – )
Set an SPI peripheral to be a slave. This must be done with the SPI peripheral disabled.
spi-baud!¶
( baud spi – )
Set the baud of a master SPI peripheral. This must be done with the SPI peripheral disabled.
motorola-spi¶
( sph spo spi – )
Set the protocol of an SPI peripheral to Motorola SPI, with SPO/CPOL set to spo and SPH/CPHA set to sph. This must be done with the SPI peripheral disabled.
ti-ss-spi¶
( spi – )
Set the protocol of an SPI peripheral to TI synchronous serial. This must be done with the SPI peripheral disabled.
spi-data-size!¶
( data-size spi – )
Set the word size of an SPI peripheral to data-size bits; on the RP2040 and RP2350, STM32L476, and STM32F746 any value from 4 to 16 is permitted, whereas on the STM32F407 and STM32F411 only 8 and 16 are permitted. This must be done with the SPI peripheral disabled.
>spi¶
( c spi – )
Emit a word to an SPI peripheral.
spi>¶
( spi – c )
Read a word from an SPI peripheral.
buffer>spi¶
( addr bytes spi – )
Write a buffer of data to an SPI peripheral as a master, discarding the data returned by the slave.
spi>buffer¶
( add bytes filler spi – )
Read a buffer of data from an SPI peripheral as a master, transmitting a filler for each unit of data sent to the slave.
>spi?¶
( spi – flag )
Get whether an SPI peripheral is ready to emit a word.
spi>?¶
( spi – flag )
Get whether a word is ready to be read from an SPI peripheral.
drain-spi¶
( spi – )
Empty an SPI peripheral’s receive buffer.
flush-spi¶
( spi – )
Flush an SPI peripheral’s transmit buffer.
spi-alternate¶
( spi – )
The alternate function for a given SPI peripheral. Note that using spi-pin is recommended as some SPI peripherals may have multiple alternate functions in practice depending on the particular pin.
spi-pin¶
( spi pin – )
Set the alternate function for pin to configure it for spi.
spi-rx-handler!¶
( xt spi – )
Set an SPI RX handler called when the SPI interrupt is called for RX data. Note that this may not be called if spi> is called before the SPI interrupt has the chance to be invoked. A value of 0 indicates no handler.
x-invalid-spi¶
( – )
Invalid SPI peripheral exception.
x-invalid-spi-clock¶
( – )
Invalid SPI clock setting exception.
x-invalid-spi-data-size¶
( – )
Invalid SPI data size setting exception.
RP2040 and RP2350 only¶
enable-spi-loopback¶
( spi – )
Enable SPI loopback mode for an SPI peripheral.
disable-spi-loopback¶
( spi – )
Disable SPI loopback mdoe for an SPI peripheral.
natl-microwire-spi¶
( spi – )
Set the protocol of the SPI peripheral to National Semiconductor Microwire.
STM32F407, STM32F411, STM32L476, and STM32F746 only¶
msb-first-spi¶
( spi – )
Set an SPI peripheral to have MSB-first data. This must be done with the SPI peripheral disabled.
lsb-first-spi¶
( spi – )
Set an SPI peripheral to have LSB-first data. This must be done with the SPI peripheral disabled.
enable-spi-ssm¶
( spi – )
Enable SPI software slave management by master SPI peripherals. This must be done with the SPI peripheral disabled.
disable-spi-ssm¶
( spi – )
Disable SPI software slave management by master SPI peripherals. This must be done with the SPI peripheral disabled.
spi-ssm!¶
( ssi spi – )
Set the software slave management selection for master SPI peripherals.
1-line-spi¶
( spi – )
Set an SPI peripheral to one-wire mode.
2-line-spi¶
( spi – )
Set an SPI peripheral to two-wire mode (the default).
1-line-spi-in¶
( spi – )
Set the single wire in one-wire mode to be an input.
1-line-spi-out¶
( spi – )
Set the single wire in one-wire mode to be an output.
RP2040-only words¶
buffer>spi-raw-dma¶
( addr bytes dma1 dma0 spi – last-data )
Write a buffer of data to an SPI peripheral as a master, discarding the data returned by the slave. This word uses the DMA channels dma0 and dma1, and returns the last data read from the SPI peripheral.
spi>buffer-raw-dma¶
( add bytes filler dma1 dma0 spi – )
Read a buffer of data from an SPI peripheral as a master, transmitting a filler for unit of data sent to the slave. This word uses the DMA channels dma0 and dma1.