class SPI – a master-driven serial protocol¶
SPI is a serial protocol that is driven by a master. At the physical level there are 3 lines: SCK, MOSI, MISO.
See usage model of I2C; SPI is very similar. Main difference is parameters to init the SPI bus:
from machine import SPI
spi = SPI(0, mode=SPI.MASTER, baudrate=1000000, polarity=0, phase=0, firstbit=SPI.MSB)
Only required parameter is mode, must be SPI.MASTER. Polarity can be 0 or 1, and is the level the idle clock line sits at. Phase can be 0 or 1 to sample data on the first or second clock edge respectively.
Constructors¶
-
class
machine.SPI(id, ...)¶ Construct an SPI object on the given bus.
idcan be only 0. With no additional parameters, the SPI object is created but not initialised (it has the settings from the last initialisation of the bus, if any). If extra arguments are given, the bus is initialised. Seeinitfor parameters of initialisation.
Methods¶
-
spi.init(mode, baudrate=1000000, *, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, pins=(CLK, MOSI, MISO))¶ Initialise the SPI bus with the given parameters:
modemust beSPI.MASTER.baudrateis the SCK clock rate.polaritycan be 0 or 1, and is the level the idle clock line sits at.phasecan be 0 or 1 to sample data on the first or second clock edge respectively.bitsis the width of each transfer, accepted values are 8, 16 and 32.firstbitcan beSPI.MSBonly.pinsis an optional tupple with the pins to assign to the SPI bus.
-
spi.deinit()¶ Turn off the SPI bus.
-
spi.write(buf)¶ Write the data contained in
buf. Returns the number of bytes written.
-
spi.read(nbytes, *, write=0x00)¶ Read the
nbyteswhile writing the data specified bywrite. Return the number of bytes read.
-
spi.readinto(buf, *, write=0x00)¶ Read into the buffer specified by
bufwhile writing the data specified bywrite. Return the number of bytes read.
-
spi.write_readinto(write_buf, read_buf)¶ Write from
write_bufand read intoread_buf. Both buffers must have the same length. Returns the number of bytes written