From: Melissa LeBlanc-Williams Date: Fri, 22 Oct 2021 21:27:08 +0000 (-0700) Subject: Merge pull request #522 from AdamCummick/update-rpi-spi-pins X-Git-Tag: 6.16.0~3 X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/commitdiff_plain/f8c28157c2ffceaa436f106f0bbc4678b889cc39?hp=619196a5b8c3fe01662d6db193d77c8333e6c9a5 Merge pull request #522 from AdamCummick/update-rpi-spi-pins Split RP4 board definitions --- diff --git a/src/adafruit_blinka/board/raspberrypi/raspi_4b.py b/src/adafruit_blinka/board/raspberrypi/raspi_4b.py new file mode 100644 index 0000000..9fbb6ca --- /dev/null +++ b/src/adafruit_blinka/board/raspberrypi/raspi_4b.py @@ -0,0 +1,55 @@ +"""Pin definitions for Raspberry Pi 4 models using the BCM2711.""" + +from adafruit_blinka.microcontroller.bcm2711 import pin + +D0 = pin.D0 +D1 = pin.D1 + +D2 = pin.D2 +SDA = pin.SDA +D3 = pin.D3 +SCL = pin.SCL + +D4 = pin.D4 +D5 = pin.D5 +D6 = pin.D6 + +D7 = pin.D7 +CE1 = pin.D7 +D8 = pin.D8 +CE0 = pin.D8 +D9 = pin.D9 +MISO = pin.D9 +D10 = pin.D10 +MOSI = pin.D10 +D11 = pin.D11 +SCLK = pin.D11 +SCK = pin.D11 + +D12 = pin.D12 +D13 = pin.D13 + +D14 = pin.D14 +TXD = pin.D14 +D15 = pin.D15 +RXD = pin.D15 +# create alias for most of the examples +TX = pin.D14 +RX = pin.D15 + +D16 = pin.D16 +D17 = pin.D17 +D18 = pin.D18 +D19 = pin.D19 +MISO_1 = pin.D19 +D20 = pin.D20 +MOSI_1 = pin.D20 +D21 = pin.D21 +SCLK_1 = pin.D21 +SCK_1 = pin.D21 +D22 = pin.D22 +D23 = pin.D23 +D24 = pin.D24 +D25 = pin.D25 +D26 = pin.D26 +D27 = pin.D27 diff --git a/src/adafruit_blinka/microcontroller/bcm2711/__init__.py b/src/adafruit_blinka/microcontroller/bcm2711/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/adafruit_blinka/microcontroller/bcm2711/pin.py b/src/adafruit_blinka/microcontroller/bcm2711/pin.py new file mode 100644 index 0000000..f56d585 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/bcm2711/pin.py @@ -0,0 +1,99 @@ +"""Broadcom BCM2711 pin names""" +import RPi.GPIO as GPIO +from adafruit_blinka.microcontroller.bcm283x.pin import Pin + +GPIO.setmode(GPIO.BCM) # Use BCM pins D4 = GPIO #4 +GPIO.setwarnings(False) # shh! + +D0 = Pin(0) +D1 = Pin(1) + +D2 = Pin(2) +SDA = Pin(2) +D3 = Pin(3) +SCL = Pin(3) + +D4 = Pin(4) +D5 = Pin(5) +D6 = Pin(6) + +D7 = Pin(7) +CE1 = Pin(7) +D8 = Pin(8) +CE0 = Pin(8) +D9 = Pin(9) +MISO = Pin(9) +D10 = Pin(10) +MOSI = Pin(10) +D11 = Pin(11) +SCLK = Pin(11) # Raspberry Pi naming +SCK = Pin(11) # CircuitPython naming + +D12 = Pin(12) +D13 = Pin(13) + +D14 = Pin(14) +TXD = Pin(14) +D15 = Pin(15) +RXD = Pin(15) + +D16 = Pin(16) +D17 = Pin(17) +D18 = Pin(18) +D19 = Pin(19) +MISO_1 = Pin(19) +D20 = Pin(20) +MOSI_1 = Pin(20) +D21 = Pin(21) +SCLK_1 = Pin(21) +SCK_1 = Pin(21) +D22 = Pin(22) +D23 = Pin(23) +D24 = Pin(24) +D25 = Pin(25) +D26 = Pin(26) +D27 = Pin(27) +D28 = Pin(28) +D29 = Pin(29) +D30 = Pin(30) +D31 = Pin(31) +D32 = Pin(32) +D33 = Pin(33) +D34 = Pin(34) +D35 = Pin(35) +D36 = Pin(36) +D37 = Pin(37) +D38 = Pin(38) +D39 = Pin(39) +D40 = Pin(40) +MISO_2 = Pin(40) +D41 = Pin(41) +MOSI_2 = Pin(41) +D42 = Pin(42) +SCLK_2 = Pin(42) +SCK_2 = Pin(43) +D43 = Pin(43) +D44 = Pin(44) +D45 = Pin(45) + +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ( + (0, SCLK, MOSI, MISO), + (6, SCLK_1, MOSI_1, MISO_1), + (2, SCLK_2, MOSI_2, MISO_2), + (3, D3, D2, D1), + (4, D7, D6, D5), + (5, D15, D14, D13), +) + +# ordered as uartId, txId, rxId +uartPorts = ((1, TXD, RXD),) + +# These are the known hardware I2C ports / pins. +# For software I2C ports created with the i2c-gpio overlay, see: +# https://github.com/adafruit/Adafruit_Python_Extended_Bus +i2cPorts = ( + (1, SCL, SDA), + (0, D1, D0), # both pi 1 and pi 2 i2c ports! + (10, D45, D44), # internal i2c bus for the CM4 +) diff --git a/src/adafruit_blinka/microcontroller/bcm283x/pin.py b/src/adafruit_blinka/microcontroller/bcm283x/pin.py index 82b8b26..5022366 100644 --- a/src/adafruit_blinka/microcontroller/bcm283x/pin.py +++ b/src/adafruit_blinka/microcontroller/bcm283x/pin.py @@ -142,9 +142,6 @@ spiPorts = ( (0, SCLK, MOSI, MISO), (1, SCLK_1, MOSI_1, MISO_1), (2, SCLK_2, MOSI_2, MISO_2), - (3, D3, D2, D1), # SPI3 on Pi4/CM4 - (4, D7, D6, D5), # SPI4 on Pi4/CM4 - (5, D15, D14, D13), # SPI5 on Pi4/CM4 ) # ordered as uartId, txId, rxId @@ -156,5 +153,4 @@ uartPorts = ((1, TXD, RXD),) i2cPorts = ( (1, SCL, SDA), (0, D1, D0), # both pi 1 and pi 2 i2c ports! - (10, D45, D44), # internal i2c bus for the CM4 ) diff --git a/src/board.py b/src/board.py index 304daf5..576a98d 100755 --- a/src/board.py +++ b/src/board.py @@ -54,6 +54,13 @@ elif board_id == ap_board.PYBOARD: elif board_id == ap_board.RASPBERRY_PI_PICO: from adafruit_blinka.board.raspberrypi.pico import * +elif ( + detector.board.RASPBERRY_PI_4B + or detector.board.RASPBERRY_PI_CM4 + or detector.board.RASPBERRY_PI_400 +): + from adafruit_blinka.board.raspberrypi.raspi_4b import * + elif detector.board.any_raspberry_pi_40_pin: from adafruit_blinka.board.raspberrypi.raspi_40pin import * diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index 82bc1a9..03253b3 100755 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -57,7 +57,14 @@ elif chip_id == ap_chip.STM32F405: elif chip_id == ap_chip.RP2040: from adafruit_blinka.microcontroller.rp2040 import * elif chip_id == ap_chip.BCM2XXX: - from adafruit_blinka.microcontroller.bcm283x import * + if board_id in [ + "RASPBERRY_PI_4B", + "RASPBERRY_PI_400", + "RASPBERRY_PI_CM4", + ]: + from adafruit_blinka.microcontroller.bcm2711.pin import * + else: + from adafruit_blinka.microcontroller.bcm283x.pin import * elif chip_id == ap_chip.DRA74X: from adafruit_blinka.microcontroller.dra74x.pin import * elif chip_id == ap_chip.AM33XX: diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index c46a335..149c342 100755 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -1,7 +1,7 @@ """Pins named after their chip name.""" from adafruit_platformdetect.constants import chips as ap_chip -from adafruit_blinka.agnostic import chip_id +from adafruit_blinka.agnostic import board_id, chip_id # We intentionally are patching into this namespace so skip the wildcard check. # pylint: disable=unused-wildcard-import,wildcard-import,ungrouped-imports @@ -13,7 +13,14 @@ elif chip_id == ap_chip.STM32F405: elif chip_id == ap_chip.RP2040: from adafruit_blinka.microcontroller.rp2040.pin import * elif chip_id == ap_chip.BCM2XXX: - from adafruit_blinka.microcontroller.bcm283x.pin import * + if board_id in [ + "RASPBERRY_PI_4B", + "RASPBERRY_PI_400", + "RASPBERRY_PI_CM4", + ]: + from adafruit_blinka.microcontroller.bcm2711.pin import * + else: + from adafruit_blinka.microcontroller.bcm283x.pin import * elif chip_id == ap_chip.DRA74X: from adafruit_blinka.microcontroller.dra74x.pin import * elif chip_id == ap_chip.AM33XX: