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.