]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Add MacroPad RP2040 u2if
authorJohn Furcean <furceanj@msu.edu>
Wed, 6 Oct 2021 19:06:39 +0000 (15:06 -0400)
committerJohn Furcean <furceanj@msu.edu>
Wed, 6 Oct 2021 19:06:39 +0000 (15:06 -0400)
src/adafruit_blinka/board/macropad_u2if.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/rp2040_u2if/i2c.py
src/adafruit_blinka/microcontroller/rp2040_u2if/spi.py
src/board.py
src/busio.py
src/digitalio.py
src/microcontroller/__init__.py
src/neopixel_write.py
src/pwmio.py

diff --git a/src/adafruit_blinka/board/macropad_u2if.py b/src/adafruit_blinka/board/macropad_u2if.py
new file mode 100644 (file)
index 0000000..d55fc10
--- /dev/null
@@ -0,0 +1,58 @@
+"""
+Pin definitions for the MacroPad RP2040 with u2if firmware.
+
+Adafruit CircuitPython 6.2.0 on 2021-04-05; Adafruit MacroPad RP2040 with rp2040
+>>> import board
+>>> board.
+KEY1            KEY2            KEY3            KEY4
+KEY5            KEY6            KEY7            KEY8
+KEY9            KEY10           KEY11           KEY12
+LED             SPEAKER_ENABLE  SPEAKER         ENCODER_SWITCH
+BUTTON          ENCODER_A       ROTA            ENCODER_B
+ROTB            NEOPIXEL        SDA             SCL
+OLED_CS         OLED_RESET      OLED_DC         SCLK
+SCK             MOSI            MISO            I2C
+SPI             UART
+"""
+
+from adafruit_blinka.microcontroller.rp2040_u2if import pin
+
+KEY1 = pin.GP1
+KEY2 = pin.GP2
+KEY3 = pin.GP3
+KEY4 = pin.GP4
+KEY5 = pin.GP5
+KEY6 = pin.GP6
+KEY7 = pin.GP7
+KEY8 = pin.GP8
+KEY9 = pin.GP9
+KEY10 = pin.GP10
+KEY11 = pin.GP11
+KEY12 = pin.GP12
+
+LED = pin.GP13
+
+SPEAKER_ENABLE = pin.GP4
+SPEAKER = pin.GP16
+
+ENCODER_SWITCH = BUTTON = pin.GP0
+
+ENCODER_A = ROTA = pin.GP17
+ENCODER_B = ROTB = pin.GP18
+
+NEOPIXEL = pin.GP19
+
+SDA = pin.GP20
+SCL = pin.GP21
+
+OLED_CS = pin.GP22
+OLED_RESET = pin.GP23
+OLED_DC = pin.GP24
+
+SCLK = SCK = pin.GP26
+MOSI = pin.GP27
+MISO = pin.GP28
+
+# access u2if via pin instance to open for specifc VID/PID
+# pylint:disable = protected-access
+pin.GP0._u2if_open_hid(0x239A, 0x0000)
index f12764ad3134755709e64522b669882eddd422db..fd9764ca5df76a37d8e8fa23e1b5143707bc0206 100644 (file)
@@ -114,6 +114,17 @@ class I2C_ItsyBitsy(I2C):
 
         super().__init__(index, frequency=frequency)
 
 
         super().__init__(index, frequency=frequency)
 
+class I2C_MacroPad(I2C):
+    """I2C Class for MacroPad u2if"""
+
+    def __init__(self, scl, sda, *, frequency=100000):
+        index = None
+        if scl.id == 21 and sda.id == 20:
+            index = 0
+        if index is None:
+            raise ValueError("I2C not found on specified pins.")
+        self._index = index
+        super().__init__(index, frequency=frequency)
 
 class I2C_QT2040_Trinkey(I2C):
     """I2C Class for QT2040 Trinkey u2if"""
 
 class I2C_QT2040_Trinkey(I2C):
     """I2C Class for QT2040 Trinkey u2if"""
index 9e025f91ccb39786b103d4126b188be648d3b4f4..67f9e77862d160e52ae01ba0061185e762550e46 100644 (file)
@@ -112,3 +112,14 @@ class SPI_ItsyBitsy(SPI):
         if index is None:
             raise ValueError("No SPI port on specified pin.")
         super().__init__(index, baudrate=baudrate)
         if index is None:
             raise ValueError("No SPI port on specified pin.")
         super().__init__(index, baudrate=baudrate)
+
+class SPI_MacroPad(SPI):
+    """SPI Class for MacroPad u2if"""
+
+    def __init__(self, clock, *, baudrate=100000):
+        index = None
+        if clock.id == 26:
+            index = 1
+        if index is None:
+            raise ValueError("No SPI port on specified pin.")
+        super().__init__(index, baudrate=baudrate)
index 0de6c109f5a8147ec75c4af5aa4bd4b4454abd3b..304daf5561f6075c4e98deb12ce025fd3f370ea8 100755 (executable)
@@ -246,6 +246,9 @@ elif board_id == ap_board.QTPY_U2IF:
 elif board_id == ap_board.ITSYBITSY_U2IF:
     from adafruit_blinka.board.itsybitsy_u2if import *
 
 elif board_id == ap_board.ITSYBITSY_U2IF:
     from adafruit_blinka.board.itsybitsy_u2if import *
 
+elif board_id == ap_board.MACROPAD_U2IF:
+    from adafruit_blinka.board.macropad_u2if import *
+
 elif board_id == ap_board.QT2040_TRINKEY_U2IF:
     from adafruit_blinka.board.qt2040_trinkey_u2if import *
 
 elif board_id == ap_board.QT2040_TRINKEY_U2IF:
     from adafruit_blinka.board.qt2040_trinkey_u2if import *
 
index 46d0f9ba90cdcf81f6da910ede1c5cafcefaa99e..ffa0498ca84013c527e1f24cd131b88407357fbd 100755 (executable)
@@ -76,6 +76,12 @@ class I2C(Lockable):
                 I2C_ItsyBitsy as _I2C,
             )
 
                 I2C_ItsyBitsy as _I2C,
             )
 
+            self._i2c = _I2C(scl, sda, frequency=frequency)
+            return
+        if detector.board.macropad_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.i2c import (
+                I2C_MacroPad as _I2C,
+            )
             self._i2c = _I2C(scl, sda, frequency=frequency)
             return
         if detector.board.qt2040_trinkey_u2if:
             self._i2c = _I2C(scl, sda, frequency=frequency)
             return
         if detector.board.qt2040_trinkey_u2if:
@@ -237,6 +243,14 @@ class SPI(Lockable):
                 SPI_ItsyBitsy as _SPI,
             )
 
                 SPI_ItsyBitsy as _SPI,
             )
 
+            self._spi = _SPI(clock)  # this is really all that's needed
+            self._pins = (clock, clock, clock)  # will determine MOSI/MISO from clock
+            return
+        if detector.board.macropad_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+                SPI_MacroPad as _SPI,
+            )
+
             self._spi = _SPI(clock)  # this is really all that's needed
             self._pins = (clock, clock, clock)  # will determine MOSI/MISO from clock
             return
             self._spi = _SPI(clock)  # this is really all that's needed
             self._pins = (clock, clock, clock)  # will determine MOSI/MISO from clock
             return
@@ -306,6 +320,10 @@ class SPI(Lockable):
             from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
                 SPI_ItsyBitsy as _SPI,
             )
             from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
                 SPI_ItsyBitsy as _SPI,
             )
+        elif detector.board.macropad_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+                SPI_Macropad as _SPI,
+            )
         elif detector.board.qtpy_u2if:
             from adafruit_blinka.microcontroller.rp2040_u2if.spi import SPI_QTPY as _SPI
         elif detector.chip.id == ap_chip.RP2040:
         elif detector.board.qtpy_u2if:
             from adafruit_blinka.microcontroller.rp2040_u2if.spi import SPI_QTPY as _SPI
         elif detector.chip.id == ap_chip.RP2040:
index ad05cb30dc9ac6b731d58f44fe1481f0ebde808d..3aea4c6382eec255c623a97e6036496675564fc9 100755 (executable)
@@ -89,6 +89,7 @@ elif (
     detector.board.feather_u2if
     or detector.board.qtpy_u2if
     or detector.board.itsybitsy_u2if
     detector.board.feather_u2if
     or detector.board.qtpy_u2if
     or detector.board.itsybitsy_u2if
+    or detector.board.macropad_u2if
     or detector.board.qt2040_trinkey_u2if
 ):
     from adafruit_blinka.microcontroller.rp2040_u2if.pin import Pin
     or detector.board.qt2040_trinkey_u2if
 ):
     from adafruit_blinka.microcontroller.rp2040_u2if.pin import Pin
index fda16cc109c9c1d7c9409e89b2cbe36c4efa10b0..82bc1a95a2dd91b74cd9b3ceedae9c751a5bc6ed 100755 (executable)
@@ -126,6 +126,8 @@ elif chip_id == ap_chip.STM32MP157:
     from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import *
 elif chip_id == ap_chip.MT8167:
     from adafruit_blinka.microcontroller.mt8167.pin import *
     from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import *
 elif chip_id == ap_chip.MT8167:
     from adafruit_blinka.microcontroller.mt8167.pin import *
+elif chip_id == ap_chip.RP2040_U2IF:
+    from adafruit_blinka.microcontroller.rp2040_u2if.pin import *
 elif "sphinx" in sys.modules:
     pass
 else:
 elif "sphinx" in sys.modules:
     pass
 else:
index 2097c84915b5fad24edb02884e816a9286388bbc..38feca55150d4b10cbb64c04805fe023a8d25240 100644 (file)
@@ -20,6 +20,7 @@ elif (
     detector.board.feather_u2if
     or detector.board.qtpy_u2if
     or detector.board.itsybitsy_u2if
     detector.board.feather_u2if
     or detector.board.qtpy_u2if
     or detector.board.itsybitsy_u2if
+    or detector.board.macropad_u2if
     or detector.board.qt2040_trinkey_u2if
 ):
     from adafruit_blinka.microcontroller.rp2040_u2if import neopixel as _neopixel
     or detector.board.qt2040_trinkey_u2if
 ):
     from adafruit_blinka.microcontroller.rp2040_u2if import neopixel as _neopixel
index f59805852b52d95d3f67033a36ac9764dba6c33c..f7075fe574053a5b93e97ee37753e0601d4ae576 100644 (file)
@@ -35,6 +35,7 @@ elif (
     detector.board.feather_u2if
     or detector.board.qtpy_u2if
     or detector.board.itsybitsy_u2if
     detector.board.feather_u2if
     or detector.board.qtpy_u2if
     or detector.board.itsybitsy_u2if
+    or detector.board.macropad_u2if
     or detector.board.qt2040_trinkey_u2if
 ):
     from adafruit_blinka.microcontroller.rp2040_u2if.pwmio import PWMOut
     or detector.board.qt2040_trinkey_u2if
 ):
     from adafruit_blinka.microcontroller.rp2040_u2if.pwmio import PWMOut