Skip to content

Using SPI

aanon4 edited this page Oct 17, 2014 · 11 revisions

Syntax

SPI MASTER <port>, <mode>, LSB|MSB <speed in MHz> [, <wordsize>]

SPI TRANSFER <pin> <array variable>

Description

SPI (Serial Peripheral Interface - wikipedia entry) is a defacto standard for connecting the CC254X to peripheral devices. BlueBasic supports the use of a single SPI interface in Master mode (no Slave support at this time), chosen from the 4 available on the device. SPI is configured as follows:

SPI MASTER 0, 0, MSB 1

This configures the SPI interface to use port 0, SPI mode 0, most significant bit first, and running at 1Mhz. Other options are:

Port

port USART
0 USART 0
1 USART 0, alternate
2 USART 1
3 USART 1, alternate

See pinout reference for more information.

SPI mode

mode CPOL CPHA
0 0 0
1 0 1
2 1 0
3 1 1

SPI endian

Endian
LSB bit 0 read/written first
MSB bit 7 read/written first

Speed

Speed Bus speed
1 1 MHz
2 2 MHz
4 4 Mhz

Wordsize

Size
None Chip select not toggled
8 Chip select toggled after each byte transferred
16 Chip select toggled every two bytes transferred
32 Chip select toggled every four bytes transferred

Once the SPI interface is initiated, data can be transfered to and from device as follows:

SPI TRANSFER P0(0) D

Before the transfer begin the pin P0(0) is set to 0 to select the device connected to this pin. The data in array "D" is then transferred to the selected device, and the contents of the array replaced by the data read from the device during the transfer. Once the transfer is completed, pin P0(0) is set to 1.

Specifying the pin to use to select the device allows the SPI interface to be used with many different devices, each selected by different pins. Also note that the pin must have been previous set as an output and value set to 1.

PINMODE P0(0) OUTPUT
P0(0) = 1