From: Ryan L Date: Tue, 12 Sep 2023 21:15:52 +0000 (+0100) Subject: Merge remote-tracking branch 'adafruit/main' X-Git-Tag: 8.23.0~1^2~2 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/8f9a43ce8fb327a7e4dcabcf8df296a25236e495?hp=4f8d7fa0edae1040e9a194a5e4b27007eb746a03 Merge remote-tracking branch 'adafruit/main' --- diff --git a/src/adafruit_blinka/board/linksprite/__init__.py b/src/adafruit_blinka/board/linksprite/__init__.py new file mode 100644 index 0000000..bbc6359 --- /dev/null +++ b/src/adafruit_blinka/board/linksprite/__init__.py @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Boards definition from Linksprite Pcduino based boards""" diff --git a/src/adafruit_blinka/board/linksprite/pcduino2.py b/src/adafruit_blinka/board/linksprite/pcduino2.py new file mode 100644 index 0000000..2d2839b --- /dev/null +++ b/src/adafruit_blinka/board/linksprite/pcduino2.py @@ -0,0 +1,80 @@ +# SPDX-FileCopyrightText: 2023 Ryzer58 +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Pcduino2.""" +from adafruit_blinka.microcontroller.allwinner.a20 import pin + +# The Pcduino 2 uses the Allwinner A10 which is a pin compatible predecessor to +# the A20. Unlike most boards it follows an Arduino form factor. + +# J11 Header +D0 = pin.PI19 +D1 = pin.PI18 +D2 = pin.PH7 +D3 = pin.PH6 +D4 = pin.PH8 +D5 = pin.PB2 +D6 = pin.PI3 +D7 = pin.PH9 + +# J8 Header +D8 = pin.PH10 +D9 = pin.PH5 +D10 = pin.PI10 +D11 = pin.PI12 +D12 = pin.PI13 +D13 = pin.PI11 +SDA = pin.PB21 +SCL = pin.PB20 + +# J9 Header +# LRADC pins only have a resolution of 6 bits so not really worth using +# A0 = LRADC0 +# A1 = LRADC1 +A2 = pin.XP_TP +A3 = pin.XN_TP +A4 = pin.YP_TP +A5 = pin.YN_TP + +# P7 Header +SCLK = D13 +SCK = SCLK +MOSI = D11 +MISO = D12 +CS = D10 + +# P6 Header +D22 = pin.PC20 +SCLK2 = D22 +SCK2 = SCLK2 +D23 = pin.PC21 +MOSI2 = D23 +D20 = pin.PC22 +MISO2 = D20 +D21 = pin.PC19 +CS2 = D21 + +# P10 Header +D14 = pin.PH11 +D15 = pin.PH12 +D16 = pin.PH13 +D17 = pin.PH14 + +UART2_TX = D1 +UART2_RX = D0 +UART5_TX = D3 +UART5_RX = D2 +UART6_TX = D11 +UART6_RX = D12 + +PWM0 = D5 +PWM1 = D6 + +# On board buttons +BACK_SW = pin.PH17 +HOME_SW = pin.PH18 +MENU_SW = pin.PH19 + +# On board LEDs +LED_TX = pin.PH15 +LED_RX = pin.PH16 diff --git a/src/adafruit_blinka/board/linksprite/pcduino3.py b/src/adafruit_blinka/board/linksprite/pcduino3.py new file mode 100644 index 0000000..022f403 --- /dev/null +++ b/src/adafruit_blinka/board/linksprite/pcduino3.py @@ -0,0 +1,77 @@ +# SPDX-FileCopyrightText: 2023 Ryzer58 +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Pcduino3.""" +from adafruit_blinka.microcontroller.allwinner.a20 import pin + +# J11 Header +D0 = pin.PI19 +D1 = pin.PI18 +D2 = pin.PH7 +D3 = pin.PH6 +D4 = pin.PH8 +D5 = pin.PB2 +D6 = pin.PI3 +D7 = pin.PH9 + +# J8 Header +D8 = pin.PH10 +D9 = pin.PH5 +D10 = pin.PI10 +D11 = pin.PI12 +D12 = pin.PI13 +D13 = pin.PI11 +SDA = pin.PB21 +SCL = pin.PB20 + +# J9 Header +# LRADC pins only have a resolution of 6 bits so not really worth using +# A0 = LRADC0 +# A1 = LRADC1 +A2 = pin.XP_TP +A3 = pin.XN_TP +A4 = pin.YP_TP +A5 = pin.YN_TP + +# P7 Header +SCLK = D13 +SCK = SCLK +MOSI = D11 +MISO = D12 +CS = D10 + +# P6 Header +D22 = pin.PC20 +SCLK2 = D22 +SCK2 = SCLK2 +D23 = pin.PC21 +MOSI2 = D23 +D20 = pin.PC22 +MISO2 = D20 +D21 = pin.PC19 +CS2 = D21 + +# P10 Header +D14 = pin.PH11 +D15 = pin.PH12 +D16 = pin.PH13 +D17 = pin.PH14 + +UART2_TX = D1 +UART2_RX = D0 +UART5_TX = D3 +UART5_RX = D2 +UART6_TX = D11 +UART6_RX = D12 + +PWM0 = D5 +PWM1 = D6 + +# On board buttons +BACK_SW = pin.PH17 +HOME_SW = pin.PH18 +MENU_SW = pin.PH19 + +# On board LEDs +LED_TX = pin.PH15 +LED_RX = pin.PH16 diff --git a/src/adafruit_blinka/microcontroller/allwinner/a20/pin.py b/src/adafruit_blinka/microcontroller/allwinner/a20/pin.py index 3e4bf44..ff3df62 100644 --- a/src/adafruit_blinka/microcontroller/allwinner/a20/pin.py +++ b/src/adafruit_blinka/microcontroller/allwinner/a20/pin.py @@ -32,6 +32,7 @@ TWI0_SCK = PB0 PB1 = Pin(33) TWI0_SDA = PB1 PB2 = Pin(34) +PWM0 = PB2 PB3 = Pin(35) IR0_TX = PB3 PB4 = Pin(36) @@ -55,6 +56,15 @@ UART0_TX = PB22 PB23 = Pin(55) UART0_RX = PB23 +PC19 = Pin(83) +SPI2_CS0 = PC19 +PC20 = Pin(84) +SPI2_SCLK = PC20 +PC21 = Pin(85) +SPI2_MOSI = PC21 +PC22 = Pin(86) +SPI2_MISO = PC22 + PG2 = Pin(194) PH2 = Pin(226) @@ -62,6 +72,22 @@ PH4 = Pin(228) UART4_TX = PH4 PH5 = Pin(229) UART4_RX = PH5 +PH6 = Pin(230) +UART5_TX = PH6 +PH7 = Pin(231) +UART5_RX = PH7 +PH8 = Pin(232) +PH9 = Pin(233) +PH10 = Pin(234) +PH11 = Pin(235) +PH12 = Pin(236) +PH13 = Pin(237) +PH14 = Pin(238) +PH15 = Pin(239) +PH16 = Pin(240) +PH17 = Pin(241) +PH18 = Pin(242) +PH19 = Pin(243) PH20 = Pin(244) CAN_TX = PH20 PH21 = Pin(245) @@ -80,8 +106,10 @@ PI11 = Pin(267) SPI0_SCLK = PI11 PI12 = Pin(268) SPI0_MOSI = PI12 +UART6_TX = PI12 PI13 = Pin(269) SPI0_MISO = PI13 +UART6_RX = PI13 PI14 = Pin(270) SPI0_CS1 = PI14 PI16 = Pin(272) @@ -97,20 +125,45 @@ UART7_TX = PI20 PI21 = Pin(277) UART7_RX = PI21 +# A10/A20 has a touch panel controller which can be configured to operate +# as four seperate adc chanels, providing 12-bit resolution. +XP_TP = 1 +XN_TP = 2 +YP_TP = 3 +YN_TP = 4 + # SysFS pwm outputs, pwm channel and pin in first tuple -pwmOuts = (((0, 1), PWM1),) +pwmOuts = ( + ((0, 0), PWM0), + ((0, 1), PWM1), +) + # ordered as i2cId, sclId, sdaId i2cPorts = ( (0, TWI0_SCK, TWI0_SDA), (1, TWI1_SCK, TWI1_SDA), (2, TWI2_SCK, TWI2_SDA), ) + # ordered as spiId, sckId, mosiId, misoId -spiPorts = ((0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),) +spiPorts = ((0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO), + (2, SPI2_SCLK, SPI2_MOSI, SPI2_MISO), +) + # ordered as uartId, txId, rxId uartPorts = ( (0, UART0_TX, UART0_RX), (2, UART2_TX, UART2_RX), (4, UART4_TX, UART4_RX), + (5, UART5_TX, UART5_RX), + (6, UART6_TX, UART6_RX), (7, UART7_TX, UART7_RX), ) + +# sysFs analog inputs, Ordered as analogInId, device, and channel +analogIns = ( + (XP_TP, 1, 0), + (XN_TP, 1, 1), + (YP_TP, 1, 2), + (YN_TP, 1, 3), +) diff --git a/src/analogio.py b/src/analogio.py index 58381b0..e3ebb39 100644 --- a/src/analogio.py +++ b/src/analogio.py @@ -39,6 +39,10 @@ elif detector.chip.IMX6ULL: from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn elif detector.chip.STM32MP157: from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn +elif detector.chip.A10: + from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn +elif detector.chip.A20: + from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn elif "sphinx" in sys.modules: pass elif detector.board.pico_u2if: diff --git a/src/board.py b/src/board.py index 0c68fe3..8d68aac 100644 --- a/src/board.py +++ b/src/board.py @@ -226,6 +226,12 @@ elif board_id == ap_board.PINE64: elif board_id == ap_board.PINEH64: from adafruit_blinka.board.pineH64 import * +elif board_id == ap_board.PCDUINO2: + from adafruit_blinka.board.linksprite.pcduino2 import * + +elif board_id == ap_board.PCDUINO3: + from adafruit_blinka.board.linksprite.pcduino3 import * + elif board_id == ap_board.SOPINE: from adafruit_blinka.board.soPine import * diff --git a/src/digitalio.py b/src/digitalio.py index b987c20..5dfadf6 100644 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -25,6 +25,10 @@ elif detector.chip.JH71X0: from adafruit_blinka.microcontroller.starfive.JH71x0.pin import Pin elif detector.chip.DRA74X: from adafruit_blinka.microcontroller.dra74x.pin import Pin +elif detector.chip.SUN4I: + from adafruit_blinka.microcontroller.allwinner.a20.pin import Pin +elif detector.chip.SUN7I: + from adafruit_blinka.microcontroller.allwinner.a20.pin import Pin elif detector.chip.SUN8I: from adafruit_blinka.microcontroller.allwinner.h3.pin import Pin elif detector.chip.SAMA5: @@ -59,12 +63,14 @@ elif detector.chip.IMX6ULL: from adafruit_blinka.microcontroller.nxp_imx6ull.pin import Pin elif detector.chip.HFU540: from adafruit_blinka.microcontroller.hfu540.pin import Pin +elif detector.chip.A10: + from adafruit_blinka.microcontroller.allwinner.a20.pin import Pin +elif detector.chip.A20: + from adafruit_blinka.microcontroller.allwinner.a20.pin import Pin elif detector.chip.A64: from adafruit_blinka.microcontroller.allwinner.a64.pin import Pin elif detector.chip.A33: from adafruit_blinka.microcontroller.allwinner.a33.pin import Pin -elif detector.chip.A20: - from adafruit_blinka.microcontroller.allwinner.a20.pin import Pin elif detector.chip.MIPS24KEC: from adafruit_blinka.microcontroller.mips24kec.pin import Pin elif detector.chip.RK3308: diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index baf06cd..2bc4736 100644 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -48,6 +48,10 @@ elif chip_id == ap_chip.AM65XX: from adafruit_blinka.microcontroller.am65xx import * elif chip_id == ap_chip.JH71X0: from adafruit_blinka.microcontroller.starfive.JH71x0 import * +elif chip_id == ap_chip.SUN4I: + from adafruit_blinka.microcontroller.allwinner.a20 import * +elif chip_id == ap_chip.SUN7I: + from adafruit_blinka.microcontroller.allwinner.a20 import * elif chip_id == ap_chip.SUN8I: from adafruit_blinka.microcontroller.allwinner.h3 import * elif chip_id == ap_chip.H5: @@ -82,12 +86,14 @@ elif chip_id == ap_chip.EXYNOS5422: from adafruit_blinka.microcontroller.samsung.exynos5422 import * elif chip_id == ap_chip.APQ8016: from adafruit_blinka.microcontroller.snapdragon.apq8016 import * +elif chip_id == ap_chip.A10: + from adafruit_blinka.microcontroller.allwinner.a20 import * +elif chip_id == ap_chip.A20: + from adafruit_blinka.microcontroller.allwinner.a20 import * elif chip_id == ap_chip.A64: from adafruit_blinka.microcontroller.allwinner.a64 import * elif chip_id == ap_chip.A33: from adafruit_blinka.microcontroller.allwinner.a33 import * -elif chip_id == ap_chip.A20: - from adafruit_blinka.microcontroller.allwinner.a20 import * elif chip_id == ap_chip.RK3308: from adafruit_blinka.microcontroller.rockchip.rk3308 import * elif chip_id == ap_chip.RK3399: diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index fdbced4..362fe43 100644 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -33,6 +33,10 @@ elif chip_id == ap_chip.AM65XX: from adafruit_blinka.microcontroller.am65xx.pin import * elif chip_id == ap_chip.JH71X0: from adafruit_blinka.microcontroller.starfive.JH71x0.pin import * +elif chip_id == ap_chip.SUN4I: + from adafruit_blinka.microcontroller.allwinner.a20.pin import * +elif chip_id == ap_chip.SUN7I: + from adafruit_blinka.microcontroller.allwinner.a20.pin import * elif chip_id == ap_chip.SUN8I: from adafruit_blinka.microcontroller.allwinner.h3.pin import * elif chip_id == ap_chip.H3: @@ -85,12 +89,14 @@ elif chip_id == ap_chip.LPC4330: from adafruit_blinka.microcontroller.nxp_lpc4330.pin import * elif chip_id == ap_chip.MCP2221: from adafruit_blinka.microcontroller.mcp2221.pin import * +elif chip_id == ap_chip.A10: + from adafruit_blinka.microcontroller.allwinner.a20.pin import * +elif chip_id == ap_chip.A20: + from adafruit_blinka.microcontroller.allwinner.a20.pin import * elif chip_id == ap_chip.A64: from adafruit_blinka.microcontroller.allwinner.a64.pin import * elif chip_id == ap_chip.A33: from adafruit_blinka.microcontroller.allwinner.a33.pin import * -elif chip_id == ap_chip.A20: - from adafruit_blinka.microcontroller.allwinner.a20.pin import * elif chip_id == ap_chip.RK3308: from adafruit_blinka.microcontroller.rockchip.rk3308.pin import * elif chip_id == ap_chip.RK3399: diff --git a/src/pwmio.py b/src/pwmio.py index b37549f..9ded9fd 100644 --- a/src/pwmio.py +++ b/src/pwmio.py @@ -22,6 +22,8 @@ elif detector.board.any_coral_board: from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut elif detector.board.any_giant_board: from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut +elif detector.board.any_pcduino_board: + from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut elif detector.board.any_beaglebone: from adafruit_blinka.microcontroller.am335x.sysfs_pwmout import PWMOut elif detector.board.any_lemaker: