X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/blobdiff_plain/f00d819e500ca5d334db378170b384ddc121b496..a322e55fdbdd05eb12a9d4cd928811a2a61bb99c:/src/busio.py diff --git a/src/busio.py b/src/busio.py index b920140..0f4b15b 100755 --- a/src/busio.py +++ b/src/busio.py @@ -11,21 +11,13 @@ from adafruit_blinka import Enum, Lockable, agnostic from adafruit_blinka.agnostic import board_id, detector import adafruit_platformdetect.board as ap_board -EMBEDDED_LINUX_BOARDS = ( - ap_board.RASPBERRY_PI_2B, - ap_board.RASPBERRY_PI_3B, - ap_board.RASPBERRY_PI_3B_PLUS, - ap_board.BEAGLEBONE_BLACK, - ap_board.ORANGE_PI_PC, -) - class I2C(Lockable): def __init__(self, scl, sda, frequency=400000): self.init(scl, sda, frequency) def init(self, scl, sda, frequency): self.deinit() - if board_id in EMBEDDED_LINUX_BOARDS: + if detector.board.any_embedded_linux: from adafruit_blinka.microcontroller.generic_linux.i2c import I2C as _I2C else: from machine import I2C as _I2C @@ -80,7 +72,7 @@ class I2C(Lockable): class SPI(Lockable): def __init__(self, clock, MOSI=None, MISO=None): self.deinit() - if board_id in EMBEDDED_LINUX_BOARDS: + if detector.board.any_embedded_linux: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI else: from machine import SPI as _SPI @@ -98,15 +90,39 @@ class SPI(Lockable): format((clock, MOSI, MISO), spiPorts)) def configure(self, baudrate=100000, polarity=0, phase=0, bits=8): - if detector.board.any_raspberry_pi: + if detector.board.any_raspberry_pi or detector.board.any_raspberry_pi_40_pin: from adafruit_blinka.microcontroller.bcm283x.pin import Pin from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - elif board_id == ap_board.BEAGLEBONE_BLACK: + elif detector.board.any_beaglebone: from adafruit_blinka.microcontroller.am335x.pin import Pin from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI - elif board_id == ap_board.ORANGE_PI_PC: + elif board_id == ap_board.ORANGE_PI_PC or board_id == ap_board.ORANGE_PI_R1: from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif board_id == ap_board.GIANT_BOARD: + from adafruit_blinka.microcontroller.sama5.pin import Pin + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif board_id == ap_board.CORAL_EDGE_TPU_DEV: + from adafruit_blinka.microcontroller.nxp_imx8m.pin import Pin + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif board_id == ap_board.ODROID_C2: + from adafruit_blinka.microcontroller.amlogic.s905.pin import Pin + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif board_id == ap_board.DRAGONBOARD_410C: + from adafruit_blinka.microcontroller.snapdragon.apq8016.pin import Pin + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif board_id == ap_board.JETSON_NANO: + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + from adafruit_blinka.microcontroller.tegra.t210.pin import Pin + elif board_id == ap_board.JETSON_TX1: + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + from adafruit_blinka.microcontroller.tegra.t210.pin import Pin + elif board_id == ap_board.JETSON_TX2: + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + from adafruit_blinka.microcontroller.tegra.t186.pin import Pin + elif board_id == ap_board.JETSON_XAVIER: + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + from adafruit_blinka.microcontroller.tegra.t194.pin import Pin else: from machine import SPI as _SPI from machine import Pin @@ -134,7 +150,7 @@ class SPI(Lockable): return self._spi.write(buf, start, end) def readinto(self, buf, start=0, end=None, write_value=0): - return self._spi.readinto(buf, start, end) + return self._spi.readinto(buf, start, end, write_value=write_value) def write_readinto(self, buffer_out, buffer_in, out_start=0, out_end=None, in_start=0, in_end=None): return self._spi.write_readinto(buffer_out, buffer_in, out_start, out_end, in_start, in_end) @@ -157,7 +173,10 @@ class UART(Lockable): timeout=1000, receiver_buffer_size=64, flow=None): - from machine import UART as _UART + if detector.board.any_embedded_linux: + raise RuntimeError('busio.UART not supported on this platform. Please use pyserial instead.') + else: + from machine import UART as _UART from microcontroller.pin import uartPorts self.baudrate = baudrate