]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/raspi_23/spi.py
beginningish of SPI support
[Adafruit_Blinka-hackapet.git] / 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 (file)
index 0000000..d6627c6
--- /dev/null
@@ -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