2 `microcontroller` - Pin references and cpu functionality
3 ========================================================
5 * Author(s): Melissa LeBlanc-Williams
11 from adafruit_platformdetect.constants import chips as ap_chip
12 from adafruit_blinka import Enum
13 from adafruit_blinka.agnostic import board_id, chip_id
14 import microcontroller.pin
18 """Sleep for delay usecs."""
19 time.sleep(delay / 1e6)
24 Identifies an IO pin on the microcontroller.
26 They are fixed by the hardware so they cannot be constructed on demand. Instead, use board or
27 microcontroller.pin to reference the desired pin.
30 def __init__(self, pin_id):
31 """Identifier for pin, referencing platform-specific pin id"""
35 # pylint: disable=import-outside-toplevel, cyclic-import
38 # pylint: enable=import-outside-toplevel, cyclic-import
40 for key in dir(board):
41 if getattr(board, key) is self:
42 return "board.{}".format(key)
44 for key in dir(microcontroller.pin):
45 if getattr(microcontroller.pin, key) is self:
46 return "microcontroller.pin.{}".format(key)
50 # We intentionally are patching into this namespace so skip the wildcard check.
51 # pylint: disable=unused-wildcard-import,wildcard-import,ungrouped-imports
53 if chip_id == ap_chip.ESP8266:
54 from adafruit_blinka.microcontroller.esp8266 import *
55 elif chip_id == ap_chip.STM32F405:
56 from adafruit_blinka.microcontroller.stm32.stm32f405 import *
57 elif chip_id == ap_chip.RP2040:
58 from adafruit_blinka.microcontroller.rp2040 import *
59 elif chip_id == ap_chip.BCM2XXX:
65 from adafruit_blinka.microcontroller.bcm2711.pin import *
67 from adafruit_blinka.microcontroller.bcm283x.pin import *
68 elif chip_id == ap_chip.DRA74X:
69 from adafruit_blinka.microcontroller.dra74x.pin import *
70 elif chip_id == ap_chip.AM33XX:
71 from adafruit_blinka.microcontroller.am335x import *
72 elif chip_id == ap_chip.JH71x0:
73 from adafruit_blinka.microcontroller.starfive.JH71x0 import *
74 elif chip_id == ap_chip.SUN8I:
75 from adafruit_blinka.microcontroller.allwinner.h3 import *
76 elif chip_id == ap_chip.H5:
77 from adafruit_blinka.microcontroller.allwinner.h5.pin import *
78 elif chip_id == ap_chip.H6:
79 from adafruit_blinka.microcontroller.allwinner.h6.pin import *
80 elif chip_id == ap_chip.H616:
81 from adafruit_blinka.microcontroller.allwinner.h616.pin import *
82 elif chip_id == ap_chip.SAMA5:
83 from adafruit_blinka.microcontroller.sama5 import *
84 elif chip_id == ap_chip.T210:
85 from adafruit_blinka.microcontroller.tegra.t210 import *
86 elif chip_id == ap_chip.T186:
87 from adafruit_blinka.microcontroller.tegra.t186 import *
88 elif chip_id == ap_chip.T194:
89 from adafruit_blinka.microcontroller.tegra.t194 import *
90 elif chip_id == ap_chip.S905:
91 from adafruit_blinka.microcontroller.amlogic.s905.pin import *
92 elif chip_id == ap_chip.S905X3:
93 from adafruit_blinka.microcontroller.amlogic.s905x3.pin import *
94 elif chip_id == ap_chip.S922X:
95 from adafruit_blinka.microcontroller.amlogic.s922x.pin import *
96 elif chip_id == ap_chip.EXYNOS5422:
97 from adafruit_blinka.microcontroller.samsung.exynos5422.pin import *
98 elif chip_id == ap_chip.APQ8016:
99 from adafruit_blinka.microcontroller.snapdragon.apq8016.pin import *
100 elif chip_id == ap_chip.A64:
101 from adafruit_blinka.microcontroller.allwinner.a64.pin import *
102 elif chip_id == ap_chip.A33:
103 from adafruit_blinka.microcontroller.allwinner.a33.pin import *
104 elif chip_id == ap_chip.RK3308:
105 from adafruit_blinka.microcontroller.rockchip.rk3308.pin import *
106 elif chip_id == ap_chip.RK3399:
107 from adafruit_blinka.microcontroller.rockchip.rk3399.pin import *
108 elif chip_id == ap_chip.RK3328:
109 from adafruit_blinka.microcontroller.rockchip.rk3328.pin import *
110 elif chip_id == ap_chip.H3:
111 from adafruit_blinka.microcontroller.allwinner.h3.pin import *
112 elif chip_id == ap_chip.H5:
113 from adafruit_blinka.microcontroller.allwinner.h5.pin import *
114 elif chip_id == ap_chip.IMX8MX:
115 from adafruit_blinka.microcontroller.nxp_imx8m import *
116 elif chip_id == ap_chip.IMX6ULL:
117 from adafruit_blinka.microcontroller.nxp_imx6ull import *
118 elif chip_id == ap_chip.HFU540:
119 from adafruit_blinka.microcontroller.hfu540.pin import *
120 elif chip_id == ap_chip.BINHO:
121 from adafruit_blinka.microcontroller.nova import *
122 elif chip_id == ap_chip.LPC4330:
123 from adafruit_blinka.microcontroller.nxp_lpc4330 import *
124 elif chip_id == ap_chip.MCP2221:
125 from adafruit_blinka.microcontroller.mcp2221.pin import *
126 elif chip_id == ap_chip.MIPS24KC:
127 from adafruit_blinka.microcontroller.atheros.ar9331 import *
128 elif chip_id == ap_chip.MIPS24KEC:
129 from adafruit_blinka.microcontroller.mips24kec import *
130 elif chip_id == ap_chip.FT232H:
131 from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import *
132 elif chip_id == ap_chip.FT2232H:
133 from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h.pin import *
134 elif chip_id == ap_chip.PENTIUM_N3710:
135 from adafruit_blinka.microcontroller.pentium.n3710.pin import *
136 elif chip_id == ap_chip.STM32MP157:
137 from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import *
138 elif chip_id == ap_chip.MT8167:
139 from adafruit_blinka.microcontroller.mt8167.pin import *
140 elif chip_id == ap_chip.RP2040_U2IF:
141 from adafruit_blinka.microcontroller.rp2040_u2if.pin import *
142 elif chip_id == ap_chip.GENERIC_X86:
143 print("WARNING: GENERIC_X86 is not fully supported. Some features may not work.")
144 elif "sphinx" in sys.modules:
147 raise NotImplementedError("Microcontroller not supported:", chip_id)