1 # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
3 # SPDX-License-Identifier: MIT
6 from Adafruit_BBIO import GPIO
8 raise RuntimeError("The library 'Adafruit_BBIO' was not found. To install, try typing: pip install Adafruit_BBIO")
12 """Pins dont exist in CPython so...lets make our own!"""
26 def __init__(self, pin_name):
32 def __eq__(self, other):
33 return self.id == other
35 def init(self, mode=IN, pull=None):
36 """Initialize the Pin"""
40 GPIO.setup(self.id, GPIO.IN)
41 elif mode == self.OUT:
43 GPIO.setup(self.id, GPIO.OUT)
45 raise RuntimeError("Invalid mode for pin: %s" % self.id)
47 if self._mode != self.IN:
48 raise RuntimeError("Cannot set pull resistor on output")
49 if pull == self.PULL_UP:
50 GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_UP)
51 elif pull == self.PULL_DOWN:
52 GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
54 raise RuntimeError("Invalid pull for pin: %s" % self.id)
56 def value(self, val=None):
57 """Set or return the Pin Value"""
61 GPIO.output(self.id, val)
62 elif val == self.HIGH:
64 GPIO.output(self.id, val)
66 raise RuntimeError("Invalid value for pin")
68 return GPIO.input(self.id)
71 # names in comments copied from
72 # https://github.com/adafruit/adafruit-beaglebone-io-python/blob/master/source/common.c#L73
75 # P1_1 = SYS VIN # VIN_AC
76 P1_2 = Pin("P1_2") # GPIO2_23 - GPIO_87
77 P1_3 = Pin("P1_3") # USB1_VBUS_OUT - (silkscreen: USB1 V_EN)
78 P1_4 = Pin("P1_4") # GPIO2_25 - GPIO_89
79 # P1_5 = USB VBUS # USB1_VBUS_IN
80 P1_6 = Pin("P1_6") # SPI0_CS0 - GPIO_5
81 # P1_7 = USB VIN # VIN-USB
82 P1_8 = Pin("P1_8") # SPI0_SCLK - GPIO_2
83 # P1_9 = USB1 DN # USB1-DN
84 P1_10 = Pin("P1_10") # SPI0_D0 - GPIO_3
85 # P1_11 = USB1 DP # USB1-DP
86 P1_12 = Pin("P1_12") # SPI0_D1 - GPIO_4
87 # P1_13 = USB1 ID # USB1-ID
88 # P1_14 = SYS 3.3V # VOUT-3.3V
89 # P1_15 = SYS GND # GND
90 # P1_16 = SYS GND # GND
91 # P1_17 = AIN 1.8V REF- # VREFN
92 # P1_18 = AIN 1.8V REF+ # VREFP
93 P1_19 = Pin("P1_19") # AIN0
94 P1_20 = Pin("P1_20") # GPIO0_20 - GPIO_20
95 P1_21 = Pin("P1_21") # AIN1
96 # P1_22 = SYS GND # GND
97 P1_23 = Pin("P1_23") # AIN2
98 # P1_22 = SYS VOUT # VOUT-5V
99 P1_25 = Pin("P1_25") # AIN3
100 P1_26 = Pin("P1_26") # I2C2_SDA - GPIO_12
101 P1_27 = Pin("P1_27") # AIN4
102 P1_28 = Pin("P1_28") # I2C2_SCL - GPIO_13
103 P1_29 = Pin("P1_29") # GPIO3_21 - GPIO_117
104 P1_30 = Pin("P1_30") # UART0_TXD - GPIO_43
105 P1_31 = Pin("P1_31") # GPIO3_18 - GPIO_114
106 P1_32 = Pin("P1_32") # UART0_RXD - GPIO_42
107 P1_33 = Pin("P1_33") # GPIO3_15 - GPIO_111
108 P1_34 = Pin("P1_34") # GPIO0_26 - GPIO_26
109 P1_35 = Pin("P1_35") # GPIO2_24 - GPIO_88
110 P1_36 = Pin("P1_36") # EHRPWM0A - GPIO_110
113 P2_1 = Pin("P2_1") # EHRPWM1A - GPIO_50
114 P2_2 = Pin("P2_2") # GPIO1_27 - GPIO_59
115 P2_3 = Pin("P2_3") # GPIO0_23 - GPIO_23
116 P2_4 = Pin("P2_4") # GPIO1_26 - GPIO_58
117 P2_5 = Pin("P2_5") # UART4_RXD - GPIO_30
118 P2_6 = Pin("P2_6") # GPIO1_25 - GPIO_57
119 P2_7 = Pin("P2_7") # UART4_TXD - GPIO_31
120 P2_8 = Pin("P2_8") # GPIO1_28 - GPIO_60
121 P2_9 = Pin("P2_9") # I2C1_SCL - GPIO_15
122 P2_10 = Pin("P2_10") # GPIO1_20 - GPIO_52
123 P2_11 = Pin("P2_11") # I2C1_SDA - GPIO_14
124 # P2_12 = SYS PWR BTN # POWER_BUTTON
125 # P2_13 = SYS VOUT # VOUT-5V
126 # P2_14 = BAT VIN # BAT-VIN
127 # P2_15 = SYS GND # GND
128 # P2_16 = BAT TEMP # BAT-TEMP
129 P2_17 = Pin("P2_17") # GPIO2_1 - GPIO_65
130 P2_18 = Pin("P2_18") # GPIO1_15 - GPIO_47
131 P2_19 = Pin("P2_19") # GPIO0_27 - GPIO_27
132 P2_20 = Pin("P2_20") # GPIO2_0 - GPIO_64
133 # P2_21 = SYS GND # GND
134 P2_22 = Pin("P2_22") # GPIO1_14 - GPIO_46
135 # P2_23 = SYS 3.3V # VOUT-3.3V
136 P2_24 = Pin("P2_24") # GPIO1_12 - GPIO_44
137 P2_25 = Pin("P2_25") # SPI1_D1 - GPIO_41
138 # P2_26 = SYS NRST # RESET#
139 P2_27 = Pin("P2_27") # SPI1_D0 - GPIO_40
140 P2_28 = Pin("P2_28") # GPIO3_20 - GPIO_116
141 P2_29 = Pin("P2_29") # SPI1_SCLK - GPIO_7
142 P2_30 = Pin("P2_30") # GPIO3_17 - GPIO_113
143 P2_31 = Pin("P2_31") # SPI1_CS1 - GPIO_19
144 P2_32 = Pin("P2_32") # GPIO3_16 - GPIO_112
145 P2_33 = Pin("P2_33") # GPIO1_13 - GPIO_45
146 P2_34 = Pin("P2_34") # GPIO3_19 - GPIO_115
147 P2_35 = Pin("P2_35") # GPIO2_22 - GPIO_86
148 P2_36 = Pin("P2_36") # AIN7
152 # P8_1 = DGND # DGND - GPIO_0
153 # P8_2 = DGND # DGND - GPIO_0
154 P8_3 = Pin("P8_3") # GPIO1_6 - GPIO_38
155 P8_4 = Pin("P8_4") # GPIO1_7 - GPIO_39
156 P8_5 = Pin("P8_5") # GPIO1_2 - GPIO_34
157 P8_6 = Pin("P8_6") # GPIO1_3 - GPIO_35
158 P8_7 = Pin("P8_7") # TIMER4 - GPIO_66
159 P8_8 = Pin("P8_8") # TIMER7 - GPIO_67
160 P8_9 = Pin("P8_9") # TIMER5 - GPIO_69
161 P8_10 = Pin("P8_10") # TIMER6 - GPIO_68
162 P8_11 = Pin("P8_11") # GPIO1_13 - GPIO_45
163 P8_12 = Pin("P8_12") # GPIO1_12 - GPIO_44
164 P8_13 = Pin("P8_13") # EHRPWM2B - GPIO_23
165 P8_14 = Pin("P8_14") # GPIO0_26 - GPIO_26
166 P8_15 = Pin("P8_15") # GPIO1_15 - GPIO_47
167 P8_16 = Pin("P8_16") # GPIO1_14 - GPIO_46
168 P8_17 = Pin("P8_17") # GPIO0_27 - GPIO_27
169 P8_18 = Pin("P8_18") # GPIO2_1 - GPIO_65
170 P8_19 = Pin("P8_19") # EHRPWM2A - GPIO_22
171 P8_20 = Pin("P8_20") # GPIO1_31 - GPIO_63
172 P8_21 = Pin("P8_21") # GPIO1_30 - GPIO_62
173 P8_22 = Pin("P8_22") # GPIO1_5 - GPIO_37
174 P8_23 = Pin("P8_23") # GPIO1_4 - GPIO_36
175 P8_24 = Pin("P8_24") # GPIO1_1 - GPIO_33
176 P8_25 = Pin("P8_25") # GPIO1_0 - GPIO_32
177 P8_26 = Pin("P8_26") # GPIO1_29 - GPIO_61
178 P8_27 = Pin("P8_27") # GPIO2_22 - GPIO_86
179 P8_28 = Pin("P8_28") # GPIO2_24 - GPIO_88
180 P8_29 = Pin("P8_29") # GPIO2_23 - GPIO_87
181 P8_30 = Pin("P8_30") # GPIO2_25 - GPIO_89
182 P8_31 = Pin("P8_31") # UART5_CTSN - GPIO_10
183 P8_32 = Pin("P8_32") # UART5_RTSN - GPIO_11
184 P8_33 = Pin("P8_33") # UART4_RTSN - GPIO_9
185 P8_34 = Pin("P8_34") # UART3_RTSN - GPIO_81
186 P8_35 = Pin("P8_35") # UART4_CTSN - GPIO_8
187 P8_36 = Pin("P8_36") # UART3_CTSN - GPIO_80
188 P8_37 = Pin("P8_37") # UART5_TXD - GPIO_78
189 P8_38 = Pin("P8_38") # UART5_RXD - GPIO_79
190 P8_39 = Pin("P8_39") # GPIO2_12 - GPIO_76
191 P8_40 = Pin("P8_40") # GPIO2_13 - GPIO_77
192 P8_41 = Pin("P8_41") # GPIO2_10 - GPIO_74
193 P8_42 = Pin("P8_42") # GPIO2_11 - GPIO_75
194 P8_43 = Pin("P8_43") # GPIO2_8 - GPIO_72
195 P8_44 = Pin("P8_44") # GPIO2_9 - GPIO_73
196 P8_45 = Pin("P8_45") # GPIO2_6 - GPIO_70
197 P8_46 = Pin("P8_46") # GPIO2_7 - GPIO_71
199 # P9_1 = DGND # DGND - GPIO_0
200 # P9_2 = DGND # DGND - GPIO_0
201 # P9_3 = VDD_3V3 # VDD_3V3 - GPIO_0
202 # P9_4 = VDD_3V3 # VDD_3V3 - GPIO_0
203 # P9_5 = VDD_5V # VDD_5V - GPIO_0
204 # P9_6 = VDD_5V # VDD_5V - GPIO_0
205 # P9_7 = SYS_5V # SYS_5V - GPIO_0
206 # P9_8 = SYS_5V # SYS_5V - GPIO_0
207 # P9_9 = PWR_BUT # PWR_BUT - GPIO_0
208 # P9_10 = SYS_RESETN # SYS_RESETn - GPIO_0
209 P9_11 = Pin("P9_11") # UART4_RXD - GPIO_30
210 P9_12 = Pin("P9_12") # GPIO1_28 - GPIO_60
211 P9_13 = Pin("P9_13") # UART4_TXD - GPIO_31
212 P9_14 = Pin("P9_14") # EHRPWM1A - GPIO_50
213 P9_15 = Pin("P9_15") # GPIO1_16 - GPIO_48
214 P9_16 = Pin("P9_16") # EHRPWM1B - GPIO_51
215 P9_17 = Pin("P9_17") # I2C1_SCL - GPIO_5
216 P9_18 = Pin("P9_18") # I2C1_SDA - GPIO_4
217 P9_19 = Pin("P9_19") # I2C2_SCL - GPIO_13
218 P9_20 = Pin("P9_20") # I2C2_SDA - GPIO_12
219 P9_21 = Pin("P9_21") # UART2_TXD - GPIO_3
220 P9_22 = Pin("P9_22") # UART2_RXD - GPIO_2
221 P9_23 = Pin("P9_23") # GPIO1_17 - GPIO_49
222 P9_24 = Pin("P9_24") # UART1_TXD - GPIO_15
223 P9_25 = Pin("P9_25") # GPIO3_21 - GPIO_117
224 P9_26 = Pin("P9_26") # UART1_RXD - GPIO_14
225 P9_27 = Pin("P9_27") # GPIO3_19 - GPIO_115
226 P9_28 = Pin("P9_28") # SPI1_CS0 - GPIO_113
227 P9_29 = Pin("P9_29") # SPI1_D0 - GPIO_111
228 P9_30 = Pin("P9_30") # SPI1_D1 - GPIO_112
229 P9_31 = Pin("P9_31") # SPI1_SCLK - GPIO_110
230 # P9_32 = VDD_ADC # VDD_ADC - GPIO_0
231 # P9_33 = AIN4 # AIN4 - GPIO_0
232 # P9_34 = GNDA_ADC # GNDA_ADC - GPIO_0
233 # P9_35 = AIN6 # AIN6 - GPIO_0
234 # P9_36 = AIN5 # AIN5 - GPIO_0
235 # P9_37 = AIN2 # AIN2 - GPIO_0
236 # P9_38 = AIN3 # AIN3 - GPIO_0
237 # P9_39 = AIN0 # AIN0 - GPIO_0
238 # P9_40 = AIN1 # AIN1 - GPIO_0
239 P9_41 = Pin("P9_41") # CLKOUT2 - GPIO_20
240 P9_42 = Pin("P9_42") # GPIO0_7 - GPIO_7
241 # P9_43 = DGND # DGND - GPIO_0
242 # P9_44 = DGND # DGND - GPIO_0
243 # P9_45 = DGND # DGND - GPIO_0
244 # P9_46 = DGND # DGND - GPIO_0
247 ##########################################
248 # common to all beagles
249 USR0 = Pin("USR0") # USR0 - GPIO_53
250 USR1 = Pin("USR1") # USR1 - GPIO_54
251 USR2 = Pin("USR2") # USR2 - GPIO_55
252 USR3 = Pin("USR3") # USR3 - GPIO_56
255 ##########################################
269 EHRPWM0A = Pin("EHRPWM0A")
270 EHRPWM0B = Pin("EHRPWM0B")
271 EHRPWM1A = Pin("EHRPWM1A")
272 EHRPWM1B = Pin("EHRPWM1B")
273 EHRPWM2A = Pin("EHRPWM2A")
274 EHRPWM2B = Pin("EHRPWM2B")
275 ECAPPWM0 = Pin("ECAPPWM0")
276 ECAPPWM2 = Pin("ECAPPWM2")
277 TIMER4 = Pin("TIMER4")
278 TIMER5 = Pin("TIMER5")
279 TIMER6 = Pin("TIMER6")
280 TIMER7 = Pin("TIMER7")
284 I2C1_SDA = Pin("I2C1_SDA")
285 I2C1_SCL = Pin("I2C1_SCL")
288 I2C2_SDA = Pin("I2C2_SDA")
289 I2C2_SCL = Pin("I2C2_SCL")
292 SPI0_CS0 = Pin("SPI0_CS0")
293 SPI0_SCLK = Pin("SPI0_SCLK")
294 SPI0_D1 = Pin("SPI0_D1")
295 SPI0_D0 = Pin("SPI0_D0")
298 SPI1_CS0 = Pin("SPI1_CS0")
299 SPI1_CS1 = Pin("SPI1_CS1")
300 SPI1_SCLK = Pin("SPI1_SCLK")
301 SPI1_D1 = Pin("SPI1_D1")
302 SPI1_D0 = Pin("SPI1_D0")
305 UART0_TXD = Pin("UART0_TXD")
306 UART0_RXD = Pin("UART0_RXD")
309 UART1_TXD = Pin("UART1_TXD")
310 UART1_RXD = Pin("UART1_RXD")
311 UART1_RTSn = Pin("UART1_RTSn")
312 UART1_CTSn = Pin("UART1_CTSn")
315 UART2_TXD = Pin("UART2_TXD")
316 UART2_RXD = Pin("UART2_RXD")
319 UART3_TXD = Pin("UART3_TXD")
320 UART3_RXD = Pin("UART3_RXD")
321 UART3_RTSn = Pin("UART3_RTSn")
322 UART3_CTSn = Pin("UART3_CTSn")
325 UART4_TXD = Pin("UART4_TXD")
326 UART4_RXD = Pin("UART4_RXD")
327 UART4_RTSn = Pin("UART4_RTSn")
328 UART4_CTSn = Pin("UART4_CTSn")
331 UART5_TXD = Pin("UART5_TXD")
332 UART5_RXD = Pin("UART5_RXD")
333 UART5_RTSn = Pin("UART5_RTSn")
334 UART5_CTSn = Pin("UART5_CTSn")
337 # ordered as spiId, sckId, mosiId, misoId
339 (0, SPI0_SCLK, SPI0_D1, SPI0_D0),
340 (1, SPI1_SCLK, SPI1_D1, SPI1_D0),
343 # ordered as uartId, txId, rxId
345 # (0, UART0_TXD, UART0_RXD),
346 # (1, UART1_TXD, UART1_RXD),
347 # (2, UART2_TXD, UART2_RXD),
348 # (4, UART4_TXD, UART4_RXD),
349 # (5, UART5_TXD, UART5_RXD),
352 # ordered as i2cId, SCL, SDA
354 (1, I2C1_SCL, I2C1_SDA),
355 (2, I2C2_SCL, I2C2_SDA),
363 pwmOuts = (((0, 0), PWM1), ((0, 1), PWM2), ((2, 0), PWM3), ((4, 1), PWM4))