From: Drew Fustini Date: Sun, 31 Mar 2019 22:36:35 +0000 (+0100) Subject: Merge pull request #101 from s-light/PocketBeagle X-Git-Tag: 1.3.0~7 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/9fceae3ffbdf68359e74edcf9f44912725f1efb1?hp=917313bfea9ad8240811a90cb1da4b27b21465e5 Merge pull request #101 from s-light/PocketBeagle PocketBeagle support by @s-light --- diff --git a/src/adafruit_blinka/board/beaglebone_black.py b/src/adafruit_blinka/board/beaglebone_black.py index 5658ffb..36446f7 100644 --- a/src/adafruit_blinka/board/beaglebone_black.py +++ b/src/adafruit_blinka/board/beaglebone_black.py @@ -92,27 +92,73 @@ LED_USR3 = pin.USR3 # SCLK_1 = pin.D21 # SCK_1 = pin.D21 -SDA = pin.SDA -SCL = pin.SCL +SDA = pin.P9_19 +SCL = pin.P9_20 # Refer to header default pin modes # http://beagleboard.org/static/images/cape-headers.png +# # P9_17 (SPI0_CSO => CE0) enables peripheral device # P9_18 (SPI0_D1 => MOSI) outputs data to peripheral device # P9_21 (SPIO_DO => MISO) receives data from peripheral device # P9_22 (SPI0_SCLK => SCLK) outputs clock signal -CE0 = pin.CE0 -MOSI = pin.MOSI -MISO = pin.MISO -SCLK = pin.SCLK -#CircuitPython naming convention for SPI Clock -SCK = pin.SCK +# +# Use config-pin to set pin mode for SPI pins +# https://github.com/beagleboard/bb.org-overlays/tree/master/tools/beaglebone-universal-io +# config-pin p9.17 spi_cs +# config-pin p9.18 spi +# config-pin p9.21 spi +# config-pin p9.22 spi_sclk +# +CE0 = pin.P9_17 +MOSI = pin.P9_18 +MISO = pin.P9_21 +SCLK = pin.P9_22 +# CircuitPython naming convention for SPI Clock +SCK = SCLK -# SPI1 pins +# Pins for SPI1 +# refer to: # http://beagleboard.org/static/images/cape-headers-spi.png -CE1 = pin.CE1 -MOSI_1 = pin.MOSI_1 -MISO_1 = pin.MISO_1 -SCLK_1 = pin.SCLK_1 -#CircuitPython naming convention for SPI Clock -SCK_1 = pin.SCK_1 +# +# CE1 P9.28 SPI1_CS0 +# MISO_1 P9.29 SPI1_D0 +# MOSI_1 P9.30 SPI1_D1 +# SCLK_1 P9.31 SPI_SCLK +# +# SPI1 conflicts with HDMI Audio (McASP) +# +# Refer to: +# https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays +# +# To Disable HDMI AUDIO, uncomment this line in /boot/uEnv.txt: +# disable_uboot_overlay_audio=1 +# +# Set pin modes for SPI1 with: +# +# config-pin p9.28 spi1_cs +# config-pin p9.29 spi1 +# config-pin p9.30 spi1 +# config-pin p9.31 spi_sclk +CE1 = pin.P9_28 +MOSI_1 = pin.P9_29 +MISO_1 = pin.P9_30 +SCLK_1 = pin.P9_31 +# CircuitPython naming convention for SPI Clock +SCK_1 = SCLK_1 + + +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ( + (0, SCLK, MOSI, MISO), + (1, SCLK_1, MOSI_1, MISO_1) +) + +# ordered as uartId, txId, rxId +uartPorts = ( + (), +) + +i2cPorts = ( + (2, SCL, SDA), +) diff --git a/src/adafruit_blinka/board/beaglebone_pocketbeagle.py b/src/adafruit_blinka/board/beaglebone_pocketbeagle.py new file mode 100644 index 0000000..8f59efd --- /dev/null +++ b/src/adafruit_blinka/board/beaglebone_pocketbeagle.py @@ -0,0 +1,154 @@ +""" +Pin definitions for the Beaglebone PocketBeagle. + +based on +https://github.com/beagleboard/pocketbeagle/wiki/System-Reference-Manual#figure-42-expansion-header-popular-functions---color-coded +""" +from adafruit_blinka.microcontroller.am335x import pin + +# initial pins, to mimic bonescript demo +P1_2 = pin.P1_2 +P1_3 = pin.P1_3 +P1_4 = pin.P1_4 + +P1_6 = pin.P1_6 + +P1_8 = pin.P1_8 + +P1_10 = pin.P1_10 + +P1_12 = pin.P1_12 + +P1_19 = pin.P1_19 +P1_20 = pin.P1_20 +P1_21 = pin.P1_21 + +P1_23 = pin.P1_23 + +P1_25 = pin.P1_25 +P1_26 = pin.P1_26 +P1_27 = pin.P1_27 +P1_28 = pin.P1_28 +P1_29 = pin.P1_29 +P1_30 = pin.P1_30 +P1_31 = pin.P1_31 +P1_32 = pin.P1_32 +P1_33 = pin.P1_33 +P1_34 = pin.P1_34 +P1_35 = pin.P1_35 +P1_36 = pin.P1_36 + + +P2_1 = pin.P2_1 +P2_2 = pin.P2_2 +P2_3 = pin.P2_3 +P2_4 = pin.P2_4 +P2_5 = pin.P2_5 +P2_6 = pin.P2_6 +P2_7 = pin.P2_7 +P2_8 = pin.P2_8 +P2_9 = pin.P2_9 +P2_10 = pin.P2_10 +P2_11 = pin.P2_11 + +P2_17 = pin.P2_17 +P2_18 = pin.P2_18 +P2_19 = pin.P2_19 +P2_20 = pin.P2_20 + +P2_22 = pin.P2_22 + +P2_24 = pin.P2_24 + +P2_26 = pin.P2_26 +P2_27 = pin.P2_27 +P2_28 = pin.P2_28 +P2_29 = pin.P2_29 +P2_30 = pin.P2_30 +P2_31 = pin.P2_31 +P2_32 = pin.P2_32 +P2_33 = pin.P2_33 +P2_34 = pin.P2_34 +P2_35 = pin.P2_35 +P2_36 = pin.P2_36 + +LED_USR0 = pin.USR0 +LED_USR1 = pin.USR1 +LED_USR2 = pin.USR2 +LED_USR3 = pin.USR3 + +########## +# Refer to header default pin modes +# https://raw.githubusercontent.com/wiki/beagleboard/pocketbeagle/images/PocketBeagle_pinout.png + +# I2C1 pins +# P2_11 (I2C1_SDA => SDA_1) data signal +# P2_9 (I2C1_SCL => SCL_1) clock signal +SDA_1 = pin.P2_11 +SCL_1 = pin.P2_9 + +# I2C2 pins +# P1_26 (I2C2_SDA => SDA_2) data signal +# P1_28 (I2C2_SCL => SCL_2) clock signal +SDA_2 = pin.P1_26 +SCL_2 = pin.P1_28 + +# SPI0 pins +# P1_6 (SPI0_CSO => CE0) enables peripheral device +# P1_12 (SPI0_MOSI => MOSI) outputs data to peripheral device +# P1_10 (SPIO_MISO => MISO) receives data from peripheral device +# P1_8 (SPI0_CLK => SCLK) outputs clock signal +CE0 = pin.P1_6 +MOSI = pin.P1_12 +MISO = pin.P1_10 +SCLK = pin.P1_8 +# CircuitPython naming convention for SPI Clock +SCK = SCLK + +# SPI1 pins +# P2_31 (SPI1_CS1 => CE1) enables peripheral device +# P2_25 (SPI1_MOSI => MOSI) outputs data to peripheral device +# P2_27 (SPI1_MISO => MISO) receives data from peripheral device +# P2_29 (SPI1_CLK => SCLK) outputs clock signal +CE1 = pin.P2_31 +MOSI_1 = pin.P2_25 +MISO_1 = pin.P2_27 +SCLK_1 = pin.P2_29 +# CircuitPython naming convention for SPI Clock +SCK_1 = SCLK_1 + + +# UART0 +TX_0 = pin.P1_30 +RX_0 = pin.P1_32 + +TX = TX_0 +RX = RX_0 + + +# UART2 +# pins already in use by SPI0 +# TX_2 = pin.P1_8 +# RX_2 = pin.P1_10 + +# UART4 +TX_4 = pin.P2_7 +RX_4 = pin.P2_5 + + +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ( + (0, SCLK, MOSI, MISO), + (1, SCLK_1, MOSI_1, MISO_1), +) + +# ordered as uartId, txId, rxId +uartPorts = ( + (0, TX_0, RX_0), + (4, TX_4, RX_4), +) + +i2cPorts = ( + (1, SCL_1, SDA_1), + (2, SCL_2, SDA_2), +) diff --git a/src/adafruit_blinka/microcontroller/am335x/pin.py b/src/adafruit_blinka/microcontroller/am335x/pin.py index 24ae0c1..b07ad0f 100644 --- a/src/adafruit_blinka/microcontroller/am335x/pin.py +++ b/src/adafruit_blinka/microcontroller/am335x/pin.py @@ -9,11 +9,11 @@ class Pin: PULL_NONE = 0 PULL_UP = 1 PULL_DOWN = 2 - + id = None _value = LOW _mode = IN - + def __init__(self, pin_name): self.id = pin_name @@ -41,7 +41,7 @@ class Pin: elif pull == self.PULL_DOWN: GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) else: - raise RuntimeError("Invalid pull for pin: %s" % self.id) + raise RuntimeError("Invalid pull for pin: %s" % self.id) def value(self, val=None): if val != None: @@ -56,6 +56,75 @@ class Pin: else: return GPIO.input(self.id) + +# PocketBeagle +P1_2 = Pin('P1_2') +P1_3 = Pin('P1_3') +P1_4 = Pin('P1_4') + +P1_6 = Pin('P1_6') + +P1_8 = Pin('P1_8') + +P1_10 = Pin('P1_10') + +P1_12 = Pin('P1_12') + +P1_19 = Pin('P1_19') +P1_20 = Pin('P1_20') +P1_21 = Pin('P1_21') + +P1_23 = Pin('P1_23') + +P1_25 = Pin('P1_25') +P1_26 = Pin('P1_26') +P1_27 = Pin('P1_27') +P1_28 = Pin('P1_28') +P1_29 = Pin('P1_29') +P1_30 = Pin('P1_30') +P1_31 = Pin('P1_31') +P1_32 = Pin('P1_32') +P1_33 = Pin('P1_33') +P1_34 = Pin('P1_34') +P1_35 = Pin('P1_35') +P1_36 = Pin('P1_36') + + +P2_1 = Pin('P2_1') +P2_2 = Pin('P2_2') +P2_3 = Pin('P2_3') +P2_4 = Pin('P2_4') +P2_5 = Pin('P2_5') +P2_6 = Pin('P2_6') +P2_7 = Pin('P2_7') +P2_8 = Pin('P2_8') +P2_9 = Pin('P2_9') +P2_10 = Pin('P2_10') +P2_11 = Pin('P2_11') + +P2_17 = Pin('P2_17') +P2_18 = Pin('P2_18') +P2_19 = Pin('P2_19') +P2_20 = Pin('P2_20') + +P2_22 = Pin('P2_22') + +P2_24 = Pin('P2_24') + +P2_26 = Pin('P2_26') +P2_27 = Pin('P2_27') +P2_28 = Pin('P2_28') +P2_29 = Pin('P2_29') +P2_30 = Pin('P2_30') +P2_31 = Pin('P2_31') +P2_32 = Pin('P2_32') +P2_33 = Pin('P2_33') +P2_34 = Pin('P2_34') +P2_35 = Pin('P2_35') +P2_36 = Pin('P2_36') + + +# BeagleBone Black P8_3 = Pin('P8_3') P8_4 = Pin('P8_4') P8_5 = Pin('P8_5') @@ -124,75 +193,26 @@ P9_31 = Pin('P9_31') P9_41 = Pin('P9_41') P9_42 = Pin('P9_42') +# common to all beagles USR0 = Pin('USR0') USR1 = Pin('USR1') USR2 = Pin('USR2') USR3 = Pin('USR3') -SCL = Pin('P9_19') -SDA = Pin('P9_20') +# all special functions (SPI / I2C) are moved to +# src/adafruit_blinka/board/beaglebone_black.py -# Refer to header default pin modes -# http://beagleboard.org/static/images/cape-headers.png -# -# P9_17 (SPI0_CSO => CE0) enables peripheral device -# P9_18 (SPI0_D1 => MOSI) outputs data to peripheral device -# P9_21 (SPIO_DO => MISO) receives data from peripheral device -# P9_22 (SPI0_SCLK => SCLK) outputs clock signal -# -# Use config-pin to set pin mode for SPI pins -# https://github.com/beagleboard/bb.org-overlays/tree/master/tools/beaglebone-universal-io -# config-pin p9.17 spi_cs -# config-pin p9.18 spi -# config-pin p9.21 spi -# config-pin p9.22 spi_sclk +# # ordered as spiId, sckId, mosiId, misoId +# spiPorts = ( +# (0, SCLK, MOSI, MISO), +# (1, SCLK_1, MOSI_1, MISO_1) +# ) # -CE0 = Pin('P9_17') -MOSI = Pin('P9_18') -MISO = Pin('P9_21') -SCLK = Pin('P9_22') -#CircuitPython naming convention for SPI Clock -SCK = Pin('P9_22') - -# Pins for SPI1 -# refer to: -# http://beagleboard.org/static/images/cape-headers-spi.png +# # ordered as uartId, txId, rxId +# uartPorts = ( +# (), +# ) # -# CE1 P9.28 SPI1_CS0 -# MISO_1 P9.29 SPI1_D0 -# MOSI_1 P9.30 SPI1_D1 -# SCLK_1 P9.31 SPI_SCLK -# -# SPI1 conflicts with HDMI Audio (McASP) -# -# Refer to: -# https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays -# -# To Disable HDMI AUDIO, uncomment this line in /boot/uEnv.txt: -# disable_uboot_overlay_audio=1 -# -# Set pin modes for SPI1 with: -# -# config-pin p9.28 spi1_cs -# config-pin p9.29 spi1 -# config-pin p9.30 spi1 -# config-pin p9.31 spi_sclk -CE1 = Pin('P9_28') -MOSI_1 = Pin('P9_29') -MISO_1 = Pin('P9_30') -SCLK_1 = Pin('P9_31') -#CircuitPython naming convention for SPI Clock -SCK_1 = Pin('P9_31') - -# ordered as spiId, sckId, mosiId, misoId -spiPorts = ((0, SCLK, MOSI, MISO), (1, SCLK_1, MOSI_1, MISO_1)) - -# ordered as uartId, txId, rxId -uartPorts = ( - (), -) - -i2cPorts = ( - (2, SCL, SDA), -) - +# i2cPorts = ( +# (2, SCL, SDA), +# ) diff --git a/src/board.py b/src/board.py index db6f8a4..887c296 100755 --- a/src/board.py +++ b/src/board.py @@ -55,6 +55,9 @@ elif detector.board.RASPBERRY_PI_B_REV2: elif board_id == ap_board.BEAGLEBONE_BLACK: from adafruit_blinka.board.beaglebone_black import * +elif board_id == ap_board.BEAGLEBONE_POCKETBEAGLE: + from adafruit_blinka.board.beaglebone_pocketbeagle import * + elif board_id == ap_board.ORANGE_PI_PC: from adafruit_blinka.board.orangepipc import *