X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/blobdiff_plain/a126c589b809c7a48fa39c585e1f66e3b79eb8bc..a79e37b2729f77faf00545062fc4a8ded1a6eb97:/src/bitbangio.py diff --git a/src/bitbangio.py b/src/bitbangio.py index 817bdbc..241db56 100755 --- a/src/bitbangio.py +++ b/src/bitbangio.py @@ -8,19 +8,24 @@ See `CircuitPython:bitbangio` in CircuitPython for more details. """ from adafruit_blinka import Lockable, agnostic +import adafruit_platformdetect.constants.boards as ap_board class I2C(Lockable): def __init__(self, scl, sda, frequency=400000): - if agnostic.microcontroller == "stm32": + # TODO: This one is a bit questionable: + if agnostic.board_id == ap_board.PYBOARD: raise NotImplementedError("No software I2C on {}".format(agnostic.board_id)) self.init(scl, sda, frequency) def init(self, scl, sda, frequency): from machine import Pin from machine import I2C as _I2C + self.deinit() - id = -1 # force bitbanging implementation - in future introspect platform if SDA/SCL matches hardware I2C + id = ( + -1 + ) # force bitbanging implementation - in future introspect platform if SDA/SCL matches hardware I2C self._i2c = _I2C(id, Pin(scl.id), Pin(sda.id), freq=frequency) def deinit(self): @@ -59,11 +64,13 @@ class I2C(Lockable): class SPI(Lockable): def __init__(self, clock, MOSI=None, MISO=None): from machine import SPI + self._spi = SPI(-1) self._pins = (clock, MOSI, MISO) def configure(self, baudrate=100000, polarity=0, phase=0, bits=8): - from machine import SPI,Pin + from machine import SPI, Pin + if self._locked: # TODO verify if _spi obj 'caches' sck, mosi, miso to avoid storing in _attributeIds (duplicated in busio) # i.e. #init ignores MOSI=None rather than unsetting @@ -75,7 +82,8 @@ class SPI(Lockable): firstbit=SPI.MSB, sck=Pin(self._pins[0].id), mosi=Pin(self._pins[1].id), - miso=Pin(self._pins[2].id)) + miso=Pin(self._pins[2].id), + ) else: raise RuntimeError("First call try_lock()")