--- /dev/null
+# SPDX-FileCopyrightText: 2023 Carter Nelson for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""
+Pin definitions for the KB2040 with u2if firmware.
+
+Adafruit CircuitPython 8.2.0 on 2023-07-05; Adafruit KB2040 with rp2040
+>>> import board
+>>> board.
+A0 A1 A2 A3
+BUTTON CLK D0 D1
+D10 D11 D12 D13
+D2 D3 D4 D5
+D6 D7 D8 D9
+I2C MISO MOSI NEOPIXEL
+RX SCK SCL SDA
+SPI STEMMA_I2C TX UART
+board_id
+"""
+
+from adafruit_blinka.microcontroller.rp2040_u2if import pin
+
+D0 = TX = pin.GP0
+D1 = RX = pin.GP1
+D2 = pin.GP2
+D3 = pin.GP3
+D4 = pin.GP4
+D5 = pin.GP5
+D6 = pin.GP6
+D7 = pin.GP7
+D8 = pin.GP8
+D9 = pin.GP9
+D10 = pin.GP10
+D11 = pin.GP11
+D12 = pin.GP12
+D13 = pin.GP13
+
+A0 = pin.GP26
+A1 = pin.GP27
+A2 = pin.GP28
+A3 = pin.GP29
+
+BUTTON = pin.GP11
+
+NEOPIXEL = pin.GP17
+
+SDA = pin.GP12
+SCL = pin.GP13
+
+SCLK = pin.GP18
+MOSI = pin.GP19
+MISO = pin.GP20
+
+
+# access u2if via pin instance to open for specifc VID/PID
+# pylint:disable = protected-access
+pin.GP0._u2if_open_hid(0x239A, 0x0105)
RXD = UART1_RX
# I2C
-I2C1_SCL = pin.GPIO1_D2
-I2C1_SDA = pin.GPIO1_D3
+I2C1_SCL = pin.GPIO1_B1
+I2C1_SDA = pin.GPIO1_B2
I2C3_SCL = pin.GPIO1_C1
I2C3_SDA = pin.GPIO1_C0
I2C5_SCL = pin.GPIO1_B6
I2C5_SDA = pin.GPIO1_B7
# Default I2C
-SCL = I2C5_SCL
-SDA = I2C5_SDA
+SCL = I2C1_SCL
+SDA = I2C1_SDA
# SPI
SPI4_MISO = pin.GPIO1_C0
I2C0_SDA_M1 = GPIO4_C6
I2C1_SCL_M0 = GPIO0_B5
I2C1_SDA_M0 = GPIO0_B6
+I2C1_SCL_M4 = GPIO1_B1
+I2C1_SDA_M4 = GPIO1_B2
I2C3_SCL_M1 = GPIO3_B7
I2C3_SDA_M1 = GPIO3_C0
I2C7_SCL_M3 = GPIO4_B2
i2cPorts = (
(0, I2C0_SCL_M1, I2C0_SDA_M1),
(1, I2C1_SCL_M0, I2C1_SDA_M0),
+ (1, I2C1_SCL_M4, I2C1_SDA_M4),
(3, I2C3_SCL_M1, I2C3_SDA_M1),
(5, I2C5_SCL_M3, I2C5_SDA_M3),
(7, I2C7_SCL_M3, I2C7_SDA_M3),
self._index = index
super().__init__(index, frequency=frequency)
+
+
+class I2C_KB2040(I2C):
+ """I2C Class for KB2040 u2if"""
+
+ def __init__(self, scl, sda, *, frequency=100000):
+ index = None
+ if scl.id == 13 and sda.id == 12:
+ index = 0
+ if index is None:
+ raise ValueError("I2C not found on specified pins.")
+ self._index = index
+
+ super().__init__(index, frequency=frequency)
if index is None:
raise ValueError("No SPI port on specified pin.")
super().__init__(index, baudrate=baudrate)
+
+
+class SPI_KB2040(SPI):
+ """SPI Class for KB2040 u2if"""
+
+ def __init__(self, clock, *, baudrate=100000):
+ index = None
+ if clock.id == 18:
+ index = 0
+ if index is None:
+ raise ValueError("No SPI port on specified pin.")
+ super().__init__(index, baudrate=baudrate)
elif board_id == ap_board.QT2040_TRINKEY_U2IF:
from adafruit_blinka.board.qt2040_trinkey_u2if import *
+elif board_id == ap_board.KB2040_U2IF:
+ from adafruit_blinka.board.kb2040_u2if import *
+
elif board_id == ap_board.LICHEE_RV:
from adafruit_blinka.board.lichee_rv import *
I2C_QT2040_Trinkey as _I2C,
)
+ self._i2c = _I2C(scl, sda, frequency=frequency)
+ return
+ if detector.board.kb2040_u2if:
+ from adafruit_blinka.microcontroller.rp2040_u2if.i2c import (
+ I2C_KB2040 as _I2C,
+ )
+
self._i2c = _I2C(scl, sda, frequency=frequency)
return
if detector.chip.id == ap_chip.RP2040:
if detector.board.qtpy_u2if:
from adafruit_blinka.microcontroller.rp2040_u2if.spi import SPI_QTPY 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.kb2040_u2if:
+ from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+ SPI_KB2040 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
from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
SPI_MacroPad as _SPI,
)
+ elif detector.board.kb2040_u2if:
+ from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+ SPI_KB2040 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:
or detector.board.itsybitsy_u2if
or detector.board.macropad_u2if
or detector.board.qt2040_trinkey_u2if
+ or detector.board.kb2040_u2if
):
from adafruit_blinka.microcontroller.rp2040_u2if import neopixel as _neopixel
elif "sphinx" in sys.modules:
or detector.board.itsybitsy_u2if
or detector.board.macropad_u2if
or detector.board.qt2040_trinkey_u2if
+ or detector.board.kb2040_u2if
):
from adafruit_blinka.microcontroller.rp2040_u2if.pwmio import PWMOut
elif "sphinx" in sys.modules: