]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
add more plumbing for SPI on BeagleBone
authorDrew Fustini <drew@pdp7.com>
Wed, 21 Nov 2018 19:20:34 +0000 (19:20 +0000)
committerDrew Fustini <drew@pdp7.com>
Wed, 21 Nov 2018 19:21:00 +0000 (19:21 +0000)
reuse the Raspberry Pi SPI class as both are
Linux boards using spidev.  The main difference
is the pins numbers are different.

Testing with Adafruit_CircuitPython_BME280 in SPI mode.

TODO: wire up the board to the BeagleBone Black

Current output:

debian@beaglebone:~/Adafruit_CircuitPython_BME280$ sudo python3 examples/bme280_simpletest.py
SPI(): __init()
SPI(): beaglebone_black: from adafruit_blinka.microcontroller.raspi_23.spi import SPI as _SPI
spiPorts: ((0, P9_22, P9_18, P9_21), (1, P9_22, P9_18, P9_21))
for:
0 P9_22 P9_18 P9_21
Line 91
<class 'adafruit_blinka.microcontroller.raspi_23.spi.SPI'>
<adafruit_blinka.microcontroller.raspi_23.spi.SPI object at 0xb6b3c890>
Traceback (most recent call last):
  File "examples/bme280_simpletest.py", line 15, in <module>
    bme280 = adafruit_bme280.Adafruit_BME280_SPI(spi, bme_cs)
  File "/usr/local/lib/python3.5/dist-packages/adafruit_circuitpython_bme280-2.1.1.dev3+g1416d93-py3.5.egg/adafruit_bme280.py", line 247, in __init__
  File "/usr/local/lib/python3.5/dist-packages/adafruit_circuitpython_bme280-2.1.1.dev3+g1416d93-py3.5.egg/adafruit_bme280.py", line 78, in __init__
RuntimeError: Failed to find BME280! Chip ID 0x0

src/adafruit_blinka/board/beaglebone_black.py
src/adafruit_blinka/microcontroller/beaglebone_black/pin.py
src/busio.py

index d3fc75b88ff3dc34ba527cc30852cc883c3b45be..489e332e63521c8f67c665fc3ba878b5686428ee 100644 (file)
@@ -104,3 +104,5 @@ CE0 = pin.CE0
 MOSI = pin.MOSI
 MISO = pin.MISO
 SCLK = pin.SCLK
+#CircuitPython naming convention for SPI Clock
+SCK = pin.SCK
index 0084da7f87c62a36fbca147803a599f89c809c65..a379f1dfc438d58c2377dcaeded26b3422b77dc2 100644 (file)
@@ -151,13 +151,12 @@ CE0 = Pin('P9_17')
 MOSI = Pin('P9_18')
 MISO = Pin('P9_21')
 SCLK = Pin('P9_22')
+#CircuitPython naming convention for SPI Clock
+SCK = Pin('P9_22')
 
-# example from RPi:
-# spiPorts = ((0, SCLK, MOSI, MISO), (1, SCLK_1, MOSI_1, MISO_1))
 # ordered as spiId, sckId, mosiId, misoId
-spiPorts = (
-   (0, SCLK, MOSI, MISO)
-)
+#spiPorts = ((0, SCLK, MOSI, MISO), (1, SCLK_1, MOSI_1, MISO_1))
+spiPorts = ((0, SCLK, MOSI, MISO), (1, SCLK, MOSI, MISO))
 
 # ordered as uartId, txId, rxId
 uartPorts = (
index 206635d46df557560aab437b123bb217bdd3987e..fb3ab1079a19fe3f461b6566ff8844644a61dc97 100755 (executable)
@@ -71,18 +71,26 @@ class I2C(Lockable):
 
 class SPI(Lockable):
     def __init__(self, clock, MOSI=None, MISO=None):
+        print("SPI(): __init()")
         self.deinit()
         if board_id == "raspi_3" or board_id == "raspi_2":
             from adafruit_blinka.microcontroller.raspi_23.spi import SPI as _SPI
         elif board_id == "beaglebone_black":
-            from adafruit_blinka.microcontroller.beaglebone_black.spi import SPI as _SPI
+            print("SPI(): beaglebone_black: from adafruit_blinka.microcontroller.raspi_23.spi import SPI as _SPI")
+            from adafruit_blinka.microcontroller.raspi_23.spi import SPI as _SPI
         else:
             from machine import SPI as _SPI
         from microcontroller.pin import spiPorts
+        print("spiPorts: {0}".format(spiPorts))
+        print("for:")
         for portId, portSck, portMosi, portMiso in spiPorts:
+            print(portId, portSck, portMosi, portMiso)
             if ((clock == portSck) and                   # Clock is required!
                 (MOSI == portMosi or MOSI == None) and   # But can do with just output
                 (MISO == portMiso or MISO == None)):      # Or just input
+                print("Line 91")
+                print(_SPI)
+                print(_SPI(portId))
                 self._spi = _SPI(portId)
                 self._pins = (portSck, portMosi, portMiso)
                 break
@@ -96,7 +104,8 @@ class SPI(Lockable):
             from adafruit_blinka.microcontroller.raspi_23.spi import SPI as _SPI
             from adafruit_blinka.microcontroller.raspi_23.pin import Pin
         elif board_id == "beaglebone_black":
-            from adafruit_blinka.microcontroller.beaglebone_black.spi import SPI as _SPI
+            # reuse the raspberry pi class as both boards use Linux spidev
+            from adafruit_blinka.microcontroller.raspi_23.spi import SPI as _SPI
             from adafruit_blinka.microcontroller.beaglebone_black.pin import Pin
         else:
             from machine import SPI as _SPI