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) )