SPI

Code Example

from periphery import SPI

# Open spidev1.0 with mode 0 and max speed 1MHz
spi = SPI("/dev/spidev1.0", 0, 1000000)

data_out = [0xaa, 0xbb, 0xcc, 0xdd]
data_in = spi.transfer(data_out)

print("shifted out [0x{:02x}, 0x{:02x}, 0x{:02x}, 0x{:02x}]".format(*data_out))
print("shifted in  [0x{:02x}, 0x{:02x}, 0x{:02x}, 0x{:02x}]".format(*data_in))

spi.close()

API

class periphery.SPI(devpath, mode, max_speed, bit_order='msb', bits_per_word=8, extra_flags=0)[source]

Bases: object

Instantiate a SPI object and open the spidev device at the specified path with the specified SPI mode, max speed in hertz, and the defaults of “msb” bit order and 8 bits per word.

Parameters:
  • devpath (str) – spidev device path.

  • mode (int) – SPI mode, can be 0, 1, 2, 3.

  • max_speed (int, float) – maximum speed in Hertz.

  • bit_order (str) – bit order, can be “msb” or “lsb”.

  • bits_per_word (int) – bits per word.

  • extra_flags (int) – extra spidev flags to be bitwise-ORed with the SPI mode.

Returns:

SPI object.

Return type:

SPI

Raises:
  • SPIError – if an I/O or OS error occurs.

  • TypeError – if devpath, mode, max_speed, bit_order, bits_per_word, or extra_flags types are invalid.

  • ValueError – if mode, bit_order, bits_per_word, or extra_flags values are invalid.

transfer(data)[source]

Shift out data and return shifted in data.

Parameters:

data (bytes, bytearray, list) – a byte array or list of 8-bit integers to shift out.

Returns:

data shifted in.

Return type:

bytes, bytearray, list

Raises:
  • SPIError – if an I/O or OS error occurs.

  • TypeError – if data type is invalid.

  • ValueError – if data is not valid bytes.

close()[source]

Close the spidev SPI device.

Raises:

SPIError – if an I/O or OS error occurs.

property fd

Get the file descriptor of the underlying spidev device.

Type:

int

property devpath

Get the device path of the underlying spidev device.

Type:

str

property mode

Get or set the SPI mode. Can be 0, 1, 2, 3.

Raises:
  • SPIError – if an I/O or OS error occurs.

  • TypeError – if mode type is not int.

  • ValueError – if mode value is invalid.

Type:

int

property max_speed

Get or set the maximum speed in Hertz.

Raises:
  • SPIError – if an I/O or OS error occurs.

  • TypeError – if max_speed type is not int or float.

Type:

int, float

property bit_order

Get or set the SPI bit order. Can be “msb” or “lsb”.

Raises:
  • SPIError – if an I/O or OS error occurs.

  • TypeError – if bit_order type is not str.

  • ValueError – if bit_order value is invalid.

Type:

str

property bits_per_word

Get or set the SPI bits per word.

Raises:
  • SPIError – if an I/O or OS error occurs.

  • TypeError – if bits_per_word type is not int.

  • ValueError – if bits_per_word value is invalid.

Type:

int

property extra_flags

Get or set the spidev extra flags. Extra flags are bitwise-ORed with the SPI mode.

Raises:
  • SPIError – if an I/O or OS error occurs.

  • TypeError – if extra_flags type is not int.

  • ValueError – if extra_flags value is invalid.

Type:

int

class periphery.SPIError[source]

Bases: OSError

Base class for SPI errors.