X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/blobdiff_plain/81a5f9d72d1b3b5afb72cf460a9464e779c6144b..8bc681c3c82463095455e73e690156bf3a323821:/src/adafruit_blinka/microcontroller/raspi_23/spi.py diff --git a/src/adafruit_blinka/microcontroller/raspi_23/spi.py b/src/adafruit_blinka/microcontroller/raspi_23/spi.py new file mode 100644 index 0000000..d6627c6 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/raspi_23/spi.py @@ -0,0 +1,47 @@ +import spidev +import time + +class SPI: + MSB = 0 + LSB = 1 + CPHA = 1 + CPOL = 2 + + baudrate = 100000 + mode = 0 + bits = 8 + + def __init__(self, portid): + self._port = portid + self._spi = spidev.SpiDev() + + def init(self, baudrate=100000, polarity=0, phase=0, bits=8, + firstbit=MSB, sck=None, mosi=None, miso=None): + mode = 0 + if polarity: + mode |= CPOL + if phase: + mode |= CPHA + + self.clock_pin = sck + self.mosi_pin = mosi + self.miso_pin = miso + self.baudrate = baudrate + self.mode = mode + self.bits = bits + + def write(self, buf): + if not buf: + return + try: + + self._spi.open(self._port, 0) + self._spi.no_cs = True + self._spi.max_speed_hz = self.baudrate + self._spi.mode = self.mode + self._spi.bits_per_word = self.bits + self._spi.writebytes([x for x in buf]) + self._spi.close() + except FileNotFoundError as not_found: + print("Could not open SPI device - check if SPI is enabled in kernel!") + raise