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