X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/3a4a0b4497c997d4589eb9da90a0bce1492c3ccb..3a4bc16eea9c664978d2fac41daca25980186cda:/src/adafruit_blinka/microcontroller/bcm283x/pin.py diff --git a/src/adafruit_blinka/microcontroller/bcm283x/pin.py b/src/adafruit_blinka/microcontroller/bcm283x/pin.py index 41a89ff..82b8b26 100644 --- a/src/adafruit_blinka/microcontroller/bcm283x/pin.py +++ b/src/adafruit_blinka/microcontroller/bcm283x/pin.py @@ -1,9 +1,13 @@ +"""Broadcom BCM283x pin names""" import RPi.GPIO as GPIO -GPIO.setmode(GPIO.BCM) # Use BCM pins D4 = GPIO #4 -GPIO.setwarnings(False) # shh! -# Pins dont exist in CPython so...lets make our own! +GPIO.setmode(GPIO.BCM) # Use BCM pins D4 = GPIO #4 +GPIO.setwarnings(False) # shh! + + class Pin: + """Pins dont exist in CPython so...lets make our own!""" + IN = 0 OUT = 1 LOW = 0 @@ -11,11 +15,11 @@ class Pin: PULL_NONE = 0 PULL_UP = 1 PULL_DOWN = 2 - + id = None _value = LOW _mode = IN - + def __init__(self, bcm_number): self.id = bcm_number @@ -26,7 +30,8 @@ class Pin: return self.id == other def init(self, mode=IN, pull=None): - if mode != None: + """Initialize the Pin""" + if mode is not None: if mode == self.IN: self._mode = self.IN GPIO.setup(self.id, GPIO.IN) @@ -35,7 +40,7 @@ class Pin: GPIO.setup(self.id, GPIO.OUT) else: raise RuntimeError("Invalid mode for pin: %s" % self.id) - if pull != None: + if pull is not None: if self._mode != self.IN: raise RuntimeError("Cannot set pull resistor on output") if pull == self.PULL_UP: @@ -43,10 +48,11 @@ 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: + """Set or return the Pin Value""" + if val is not None: if val == self.LOW: self._value = val GPIO.output(self.id, val) @@ -55,8 +61,9 @@ class Pin: GPIO.output(self.id, val) else: raise RuntimeError("Invalid value for pin") - else: - return GPIO.input(self.id) + return None + return GPIO.input(self.id) + # Pi 1B rev1 only? D0 = Pin(0) @@ -80,7 +87,7 @@ MISO = Pin(9) D10 = Pin(10) MOSI = Pin(10) D11 = Pin(11) -SCLK = Pin(11) # Raspberry Pi naming +SCLK = Pin(11) # Raspberry Pi naming SCK = Pin(11) # CircuitPython naming D12 = Pin(12) @@ -107,16 +114,47 @@ 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), (1, SCLK_1, MOSI_1, MISO_1)) +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 -uartPorts = ( - (1, TXD, RXD), -) +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 ) -