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
MOSI = pin.MOSI
MISO = pin.MISO
SCLK = pin.SCLK
MOSI = pin.MOSI
MISO = pin.MISO
SCLK = pin.SCLK
+#CircuitPython naming convention for SPI Clock
+SCK = pin.SCK
MOSI = Pin('P9_18')
MISO = Pin('P9_21')
SCLK = Pin('P9_22')
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
# 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 = (
# ordered as uartId, txId, rxId
uartPorts = (
class SPI(Lockable):
def __init__(self, clock, MOSI=None, MISO=None):
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":
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
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:
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
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
self._spi = _SPI(portId)
self._pins = (portSck, portMosi, portMiso)
break
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.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
from adafruit_blinka.microcontroller.beaglebone_black.pin import Pin
else:
from machine import SPI as _SPI