From: ladyada Date: Sun, 2 Dec 2018 04:59:14 +0000 (-0500) Subject: all gpio, i2c, and SPI tested X-Git-Tag: 0.4.0^2~2 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/43064f6bcca2491f57dc75a3431b05b2eac04c27?hp=--cc all gpio, i2c, and SPI tested --- 43064f6bcca2491f57dc75a3431b05b2eac04c27 diff --git a/src/adafruit_blinka/board/orangepipc.py b/src/adafruit_blinka/board/orangepipc.py index 18bcd25..e5ab3ef 100644 --- a/src/adafruit_blinka/board/orangepipc.py +++ b/src/adafruit_blinka/board/orangepipc.py @@ -9,8 +9,12 @@ PA1 = pin.PA1 PA0 = pin.PA0 PA3 = pin.PA3 PC0 = pin.PC0 +MOSI = pin.PC0 PC1 = pin.PC1 +MISO = pin.PC1 PC2 = pin.PC2 +SCK = pin.PC2 +SCLK = pin.PC2 PA19 = pin.PA19 PA7 = pin.PA7 PA8 = pin.PA8 @@ -19,7 +23,9 @@ PA10 = pin.PA10 PA20 = pin.PA20 PA13 = pin.PA13 +TX = pin.PA13 PA14 = pin.PA14 +RX = pin.PA14 PD14 = pin.PD14 PC4 = pin.PC4 PC7 = pin.PC7 diff --git a/src/adafruit_blinka/microcontroller/allwinner_h3/pin.py b/src/adafruit_blinka/microcontroller/allwinner_h3/pin.py index 15410c6..6961d48 100644 --- a/src/adafruit_blinka/microcontroller/allwinner_h3/pin.py +++ b/src/adafruit_blinka/microcontroller/allwinner_h3/pin.py @@ -10,18 +10,26 @@ PA8 = Pin(8) PA9 = Pin(9) PA10 = Pin(10) PA11 = Pin(11) +TWI0_SCL = PA11 PA12 = Pin(12) +TWI0_SDA = PA12 PA13 = Pin(13) +UART3_TX = PA13 PA14 = Pin(14) +UART3_RX = PA14 PA18 = Pin(18) PA19 = Pin(19) PA20 = Pin(20) PA21 = Pin(21) PC0 = Pin(64) +SPI0_MOSI = PC0 PC1 = Pin(65) +SPI0_MISO = PC1 PC2 = Pin(66) +SPI0_SCLK = PC2 PC3 = Pin(67) +SPI0_CS = PC3 PC4 = Pin(68) PC7 = Pin(71) @@ -31,3 +39,9 @@ PG6 = Pin(198) PG7 = Pin(199) PG8 = Pin(200) PG9 = Pin(201) + +i2cPorts = ( (0, TWI0_SCL, TWI0_SDA), ) +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ( (0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO), ) +# ordered as uartId, txId, rxId +uartPorts = ( (3, UART3_TX, UART3_RX), ) diff --git a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py index 51b87f9..b2862e8 100644 --- a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py +++ b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py @@ -33,16 +33,16 @@ class Pin: def init(self, mode=IN, pull=None): if not self._line: self._line = self._chip.get_line(int(self.id)) - print("init line: ", int(self.id), self._line) + #print("init line: ", int(self.id), self._line) if mode != None: if mode == self.IN: flags = 0 if pull != None: if pull == self.PULL_UP: - flags |= gpiod.LINE_REQ_FLAG_ACTIVE_LOW + raise NotImplementedError("Internal pullups not supported in libgpiod, use physical resistor instead!") elif pull == self.PULL_DOWN: - flags |= gpiod.LINE_REQ_FLAG_ACTIVE_HIGH + raise NotImplementedError("Internal pullups not supported in libgpiod, use physical resistor instead!") else: raise RuntimeError("Invalid pull for pin: %s" % self.id) diff --git a/src/board.py b/src/board.py index 4dab385..d4e6be0 100755 --- a/src/board.py +++ b/src/board.py @@ -41,6 +41,8 @@ elif board_id == "raspi_2" or board_id == "raspi_3": from adafruit_blinka.board.raspi_23 import * elif board_id == "beaglebone_black": from adafruit_blinka.board.beaglebone_black import * +elif board_id == "orangepipc": + from adafruit_blinka.board.orangepipc import * elif "sphinx" in sys.modules: pass else: diff --git a/src/busio.py b/src/busio.py index 1576ac9..aa1e258 100755 --- a/src/busio.py +++ b/src/busio.py @@ -16,7 +16,7 @@ class I2C(Lockable): def init(self, scl, sda, frequency): self.deinit() - if board_id == "raspi_3" or board_id == "raspi_2" or board_id == "beaglebone_black": + if board_id == "raspi_3" or board_id == "raspi_2" or board_id == "beaglebone_black" or board_id == "orangepipc": from adafruit_blinka.microcontroller.generic_linux.i2c import I2C as _I2C else: from machine import I2C as _I2C @@ -69,23 +69,16 @@ 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" or board_id == "beaglebone_black": + if board_id == "raspi_3" or board_id == "raspi_2" or board_id == "beaglebone_black" or board_id == "orangepipc": from adafruit_blinka.microcontroller.generic_linux.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 @@ -102,6 +95,9 @@ class SPI(Lockable): # reuse the raspberry pi class as both boards use Linux spidev from adafruit_blinka.microcontroller.beaglebone_black.pin import Pin from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif board_id == "orangepipc": + from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI else: from machine import SPI as _SPI from machine import Pin diff --git a/src/digitalio.py b/src/digitalio.py index 2ad41bc..40f42ad 100755 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -10,8 +10,10 @@ See `CircuitPython:digitalio` in CircuitPython for more details. from adafruit_blinka.agnostic import board_id if board_id == "raspi_3" or board_id == "raspi_2": from adafruit_blinka.microcontroller.raspi_23.pin import Pin -if board_id == "beaglebone_black": +elif board_id == "beaglebone_black": from adafruit_blinka.microcontroller.beaglebone_black.pin import Pin +elif board_id == "orangepipc": + from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin elif board_id == "pyboard": from machine import Pin from adafruit_blinka import Enum, ContextManaged diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index e6e6c54..3bd5b51 100755 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -32,6 +32,8 @@ elif platform == "linux": from adafruit_blinka.microcontroller.raspi_23 import * elif board_id == "beaglebone_black": from adafruit_blinka.microcontroller.beaglebone_black import * + elif board_id == "orangepipc": + from adafruit_blinka.microcontroller.allwinner_h3 import * else: raise NotImplementedError("Board not supported:", board_id) else: diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index d1f0d8b..9ccd81f 100755 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -4,7 +4,6 @@ from adafruit_blinka import agnostic # We intentionally are patching into this namespace so skip the wildcard check. # pylint: disable=unused-wildcard-import,wildcard-import - if agnostic.platform == "esp8266": from adafruit_blinka.microcontroller.esp8266.pin import * elif agnostic.platform == "stm32": @@ -14,6 +13,8 @@ elif agnostic.platform == "linux": from adafruit_blinka.microcontroller.raspi_23.pin import * elif agnostic.board_id == "beaglebone_black": from adafruit_blinka.microcontroller.beaglebone_black.pin import * + elif agnostic.board_id == "orangepipc": + from adafruit_blinka.microcontroller.allwinner_h3.pin import * else: raise NotImplementedError("Board not supported: ", agnostic.board_id) else: