From: Drew Fustini Date: Wed, 21 Nov 2018 19:20:34 +0000 (+0000) Subject: add more plumbing for SPI on BeagleBone X-Git-Tag: 0.3.0^2~1 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/3488ad2ae4bb19e6fadd257bbf7b70fa4278842b?hp=--cc add more plumbing for SPI on BeagleBone 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 Traceback (most recent call last): File "examples/bme280_simpletest.py", line 15, in 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 --- 3488ad2ae4bb19e6fadd257bbf7b70fa4278842b diff --git a/src/adafruit_blinka/board/beaglebone_black.py b/src/adafruit_blinka/board/beaglebone_black.py index d3fc75b..489e332 100644 --- a/src/adafruit_blinka/board/beaglebone_black.py +++ b/src/adafruit_blinka/board/beaglebone_black.py @@ -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 diff --git a/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py b/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py index 0084da7..a379f1d 100644 --- a/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py +++ b/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py @@ -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 = ( diff --git a/src/busio.py b/src/busio.py index 206635d..fb3ab10 100755 --- a/src/busio.py +++ b/src/busio.py @@ -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