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 # pylint: disable=unused-import
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 for key in dir(board):
39 if getattr(board, key) is self:
40 return "board.{}".format(key)
41 import microcontroller.pin as pin
43 # pylint: enable=import-outside-toplevel, cyclic-import
46 if getattr(pin, key) is self:
47 return "microcontroller.pin.{}".format(key)
51 # We intentionally are patching into this namespace so skip the wildcard check.
52 # pylint: disable=unused-wildcard-import,wildcard-import,ungrouped-imports
54 if chip_id == ap_chip.ESP8266:
55 from adafruit_blinka.microcontroller.esp8266 import *
56 elif chip_id == ap_chip.STM32F405:
57 from adafruit_blinka.microcontroller.stm32.stm32f405 import *
58 elif chip_id == ap_chip.RP2040:
59 from adafruit_blinka.microcontroller.rp2040 import *
60 elif chip_id == ap_chip.BCM2XXX:
66 from adafruit_blinka.microcontroller.bcm2711.pin import *
68 from adafruit_blinka.microcontroller.bcm283x.pin import *
69 elif chip_id == ap_chip.DRA74X:
70 from adafruit_blinka.microcontroller.dra74x.pin import *
71 elif chip_id == ap_chip.AM33XX:
72 from adafruit_blinka.microcontroller.am335x import *
73 elif chip_id == ap_chip.JH71x0:
74 from adafruit_blinka.microcontroller.starfive.JH71x0 import *
75 elif chip_id == ap_chip.SUN8I:
76 from adafruit_blinka.microcontroller.allwinner.h3 import *
77 elif chip_id == ap_chip.H5:
78 from adafruit_blinka.microcontroller.allwinner.h5.pin import *
79 elif chip_id == ap_chip.H6:
80 from adafruit_blinka.microcontroller.allwinner.h6.pin import *
81 elif chip_id == ap_chip.H616:
82 from adafruit_blinka.microcontroller.allwinner.h616.pin import *
83 elif chip_id == ap_chip.SAMA5:
84 from adafruit_blinka.microcontroller.sama5 import *
85 elif chip_id == ap_chip.T210:
86 from adafruit_blinka.microcontroller.tegra.t210 import *
87 elif chip_id == ap_chip.T186:
88 from adafruit_blinka.microcontroller.tegra.t186 import *
89 elif chip_id == ap_chip.T194:
90 from adafruit_blinka.microcontroller.tegra.t194 import *
91 elif chip_id == ap_chip.S905:
92 from adafruit_blinka.microcontroller.amlogic.s905.pin import *
93 elif chip_id == ap_chip.S905X3:
94 from adafruit_blinka.microcontroller.amlogic.s905x3.pin import *
95 elif chip_id == ap_chip.S922X:
96 from adafruit_blinka.microcontroller.amlogic.s922x.pin import *
97 elif chip_id == ap_chip.EXYNOS5422:
98 from adafruit_blinka.microcontroller.samsung.exynos5422.pin import *
99 elif chip_id == ap_chip.APQ8016:
100 from adafruit_blinka.microcontroller.snapdragon.apq8016.pin import *
101 elif chip_id == ap_chip.A64:
102 from adafruit_blinka.microcontroller.allwinner.a64.pin import *
103 elif chip_id == ap_chip.A33:
104 from adafruit_blinka.microcontroller.allwinner.a33.pin import *
105 elif chip_id == ap_chip.RK3308:
106 from adafruit_blinka.microcontroller.rockchip.rk3308.pin import *
107 elif chip_id == ap_chip.RK3399:
108 from adafruit_blinka.microcontroller.rockchip.rk3399.pin import *
109 elif chip_id == ap_chip.RK3328:
110 from adafruit_blinka.microcontroller.rockchip.rk3328.pin import *
111 elif chip_id == ap_chip.H3:
112 from adafruit_blinka.microcontroller.allwinner.h3.pin import *
113 elif chip_id == ap_chip.H5:
114 from adafruit_blinka.microcontroller.allwinner.h5.pin import *
115 elif chip_id == ap_chip.IMX8MX:
116 from adafruit_blinka.microcontroller.nxp_imx8m import *
117 elif chip_id == ap_chip.IMX6ULL:
118 from adafruit_blinka.microcontroller.nxp_imx6ull import *
119 elif chip_id == ap_chip.HFU540:
120 from adafruit_blinka.microcontroller.hfu540.pin import *
121 elif chip_id == ap_chip.BINHO:
122 from adafruit_blinka.microcontroller.nova import *
123 elif chip_id == ap_chip.LPC4330:
124 from adafruit_blinka.microcontroller.nxp_lpc4330 import *
125 elif chip_id == ap_chip.MCP2221:
126 from adafruit_blinka.microcontroller.mcp2221.pin import *
127 elif chip_id == ap_chip.MIPS24KC:
128 from adafruit_blinka.microcontroller.atheros.ar9331 import *
129 elif chip_id == ap_chip.MIPS24KEC:
130 from adafruit_blinka.microcontroller.mips24kec import *
131 elif chip_id == ap_chip.FT232H:
132 from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import *
133 elif chip_id == ap_chip.FT2232H:
134 from adafruit_blinka.microcontroller.ftdi_mpsse.ft2232h.pin import *
135 elif chip_id == ap_chip.PENTIUM_N3710:
136 from adafruit_blinka.microcontroller.pentium.n3710.pin import *
137 elif chip_id == ap_chip.STM32MP157:
138 from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import *
139 elif chip_id == ap_chip.MT8167:
140 from adafruit_blinka.microcontroller.mt8167.pin import *
141 elif chip_id == ap_chip.RP2040_U2IF:
142 from adafruit_blinka.microcontroller.rp2040_u2if.pin import *
143 elif chip_id == ap_chip.GENERIC_X86:
144 print("WARNING: GENERIC_X86 is not fully supported. Some features may not work.")
145 elif "sphinx" in sys.modules:
148 raise NotImplementedError("Microcontroller not supported:", chip_id)