:alt: Documentation Status
.. image:: https://img.shields.io/discord/327254708534116352.svg
- :target: https://discord.gg/nBQh6qu
+ :target: https://adafru.it/discord
:alt: Discord
.. image:: https://travis-ci.com/adafruit/Adafruit_Blinka.svg?branch=master
* **digitalio** - digital input/output pins, using pin identities from board+microcontroller packages
* **bitbangio** - software-driven interfaces for I2C, SPI
* **busio** - hardware-driven interfaces for I2C, SPI, UART
-* **time** * - substitute functions monkey-patched to time module
+* **pulseio** - contains classes that provide access to basic pulse IO (PWM)
+For details, see the `Blinka API reference
+<https://circuitpython.readthedocs.io/projects/blinka/en/latest/index.html>`_.
Dependencies
=============
python3 -m venv .env
source .env/bin/activate
- pip install Sphinx sphinx-rtd-theme
+ pip install Sphinx sphinx-rtd-theme Adafruit-PlatformDetect
Now, once you have the virtual environment activated:
.. automodule:: digitalio
:members:
+
+.. automodule:: analogio
+ :members:
+
+.. automodule:: pulseio
+ :members:
+
+.. automodule:: neopixel_write
+ :members:
+
+
# Uncomment the below if you use native CircuitPython modules such as
# digitalio, micropython and busio. List the modules you use. Without it, the
# autodoc module docs will fail to generate with a warning.
-autodoc_mock_imports = ["machine", "Adafruit_GPIO"]
+autodoc_mock_imports = [
+ "machine",
+ "Adafruit_GPIO",
+ "RPi",
+ "RPi.GPIO",
+ "hid",
+ "sysv_ipc",
+]
intersphinx_mapping = {
"python": ("https://docs.python.org/3.4", None),
-"""Pin definitions for the Coral Edge TPU Dev board."""
+"""Pin definitions for the Coral Dev Board."""
from adafruit_blinka.microcontroller.nxp_imx8m import pin
--- /dev/null
+"""Pin definitions for the Coral Dev Board Mini."""
+
+from adafruit_blinka.microcontroller.mt8167 import pin
+
+GPIO_P7 = pin.GPIO22
+GPIO_P11 = pin.GPIO9
+GPIO_P12 = pin.GPIO36
+GPIO_P13 = pin.GPIO10
+GPIO_P16 = pin.GPIO0
+GPIO_P18 = pin.GPIO1
+GPIO_P22 = pin.GPIO7
+GPIO_P26 = pin.GPIO8
+GPIO_P35 = pin.GPIO37
+GPIO_P36 = pin.GPIO13
+GPIO_P37 = pin.GPIO45
+GPIO_P38 = pin.GPIO38
+GPIO_P40 = pin.GPIO39
+
+SDA1 = pin.I2C1_SDA
+SCL1 = pin.I2C1_SCL
+
+SDA2 = pin.I2C2_SDA
+SCL2 = pin.I2C2_SCL
+
+PWM0 = pin.PWM0
+PWM1 = pin.PWM1
+PWM2 = pin.PWM2
+
+MOSI = pin.SPI_MO
+MISO = pin.SPI_MI
+SCLK = pin.SPI_CLK
+SCK = SCLK
+CS0 = pin.SPI_CSB
+CS = CS0
--- /dev/null
+"""MediaTek MT8167 pin names"""
+from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
+
+# All pins
+GPIO52 = Pin(52) # SDA1 (pin 3)
+GPIO53 = Pin(53) # SCL1 (pin 5)
+GPIO22 = Pin(22) # EINT22 (pin 7)
+GPIO63 = Pin(63) # UTXD0 (pin 8)
+GPIO62 = Pin(62) # URXD0 (pin 10)
+GPIO9 = Pin(9) # EINT9 (pin 11)
+GPIO36 = Pin(36) # MRG_CLK (pin 12)
+GPIO10 = Pin(10) # EINT10 (pin 13)
+GPIO11 = Pin(11) # EINT11 (pin 15)
+GPIO0 = Pin(0) # EINT0 (pin 16)
+GPIO1 = Pin(1) # EINT1 (pin 18)
+GPIO4 = Pin(4) # EINT4 (pin 19)
+GPIO3 = Pin(3) # EINT3 (pin 21)
+GPIO7 = Pin(7) # EINT7 (pin 22)
+GPIO6 = Pin(6) # EINT6 (pin 23)
+GPIO5 = Pin(5) # EINT5 (pin 24)
+GPIO8 = Pin(8) # EINT8 (pin 26)
+GPIO60 = Pin(60) # SDA2 (pin 27)
+GPIO61 = Pin(61) # SCL2 (pin 28)
+GPIO65 = Pin(65) # UTXD1 (pin 29)
+GPIO64 = Pin(64) # URXD1 (pin 31)
+GPIO12 = Pin(12) # EINT12 (pin 32)
+GPIO25 = Pin(25) # EINT25 (pin 33)
+GPIO37 = Pin(37) # MRG_SYNC (pin 35)
+GPIO13 = Pin(13) # EINT13 (pin 36)
+GPIO45 = Pin(45) # JTCLK (pin 37)
+GPIO38 = Pin(38) # MRG_DI (pin 38)
+GPIO39 = Pin(39) # MRG_DO (pin 40)
+
+# Aliases
+PWM0 = GPIO25 # EINT12 (pin 32)
+PWM1 = GPIO11 # EINT25 (pin 33)
+PWM2 = GPIO12 # EINT11 (pin 15)
+
+I2C1_SDA = GPIO52 # SDA1 (pin 3)
+I2C1_SCL = GPIO53 # SCL1 (pin 5)
+
+I2C2_SDA = GPIO60 # SDA2 (pin 27)
+I2C2_SCL = GPIO61 # SCL2 (pin 28)
+
+SPI_MO = GPIO4 # EINT4 (pin 19)
+SPI_MI = GPIO3 # EINT3 (pin 21)
+SPI_CLK = GPIO6 # EINT6 (pin 23)
+SPI_CSB = GPIO5 # EINT5 (pin 24)
+
+# SysFS pwm outputs, pwm channel and pin in first tuple
+pwmOuts = (
+ ((0, 0), PWM0),
+ ((0, 1), PWM1),
+ ((0, 2), PWM2),
+)
+
+# ordered as i2cId, sclId, sdaId
+i2cPorts = (
+ (3, I2C1_SCL, I2C1_SDA),
+ (0, I2C2_SCL, I2C2_SDA),
+)
+
+# ordered as spiId, sckId, mosiId, misoId
+spiPorts = ((0, SPI_CLK, SPI_MO, SPI_MI),)
"""
`analogio` - Analog input and output control
-=================================================
+============================================
See `CircuitPython:analogio` in CircuitPython for more details.
+Not supported by all boards.
+
* Author(s): Carter Nelson, Melissa LeBlanc-Williams
"""
+import sys
+
from adafruit_blinka.agnostic import detector
# pylint: disable=ungrouped-imports,wrong-import-position,unused-import
from adafruit_blinka.microcontroller.nxp_lpc4330.analogio import AnalogOut
elif detector.chip.RK3308:
from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn
+elif "sphinx" in sys.modules:
+ pass
else:
raise NotImplementedError("analogio not supported for this board.")
from adafruit_blinka.board.nvidia.clara_agx_xavier import *
elif board_id == ap_board.CORAL_EDGE_TPU_DEV:
- from adafruit_blinka.board.coral_edge_tpu import *
+ from adafruit_blinka.board.coral_dev_board import *
+
+elif board_id == ap_board.CORAL_EDGE_TPU_DEV_MINI:
+ from adafruit_blinka.board.coral_dev_board_mini import *
elif board_id == ap_board.ODROID_C2:
from adafruit_blinka.board.hardkernel.odroidc2 import *
elif board_id == ap_board.CORAL_EDGE_TPU_DEV:
from adafruit_blinka.microcontroller.nxp_imx8m.pin import Pin
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
+ elif board_id == ap_board.CORAL_EDGE_TPU_DEV_MINI:
+ from adafruit_blinka.microcontroller.mt8167.pin import Pin
+ from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
elif board_id == ap_board.ODROID_C2:
from adafruit_blinka.microcontroller.amlogic.s905.pin import Pin
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
"""
-`digitalio` - Digital input and output control
-=================================================
+`digitalio` - Digital input and output control (GPIO)
+=====================================================
See `CircuitPython:digitalio` in CircuitPython for more details.
from adafruit_blinka.microcontroller.pentium.n3710.pin import Pin
elif detector.chip.STM32MP157:
from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import Pin
+elif detector.chip.MT8167:
+ from adafruit_blinka.microcontroller.mt8167.pin import Pin
from adafruit_blinka import Enum, ContextManaged
from adafruit_blinka.microcontroller.pentium.n3710.pin import *
elif chip_id == ap_chip.STM32MP157:
from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import *
+elif chip_id == ap_chip.MT8167:
+ from adafruit_blinka.microcontroller.mt8167.pin import *
else:
raise NotImplementedError("Microcontroller not supported:", chip_id)
from adafruit_blinka.microcontroller.pentium.n3710.pin import *
elif chip_id == ap_chip.STM32MP157:
from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import *
+elif chip_id == ap_chip.MT8167:
+ from adafruit_blinka.microcontroller.mt8167.pin import *
else:
raise NotImplementedError("Microcontroller not supported: ", chip_id)
"""
`neopixel_write` - NeoPixel precision timed writing support
-=================================================
+===========================================================
See `CircuitPython:neopixel_write` in CircuitPython for more details.
+Currently supported on Raspberry Pi only.
* Author(s): ladyada
"""
"""
-`pulseio` - Pulse Width Modulation Input and Output control
-=================================================
+`pulseio` - Pulse Width Modulation input and output control
+===========================================================
See `CircuitPython:pulseio` in CircuitPython for more details.
+Not supported by all boards.
+
* Author(s): Melissa LeBlanc-Williams
"""
+import sys
+
from adafruit_blinka.agnostic import detector
# pylint: disable=unused-import
if detector.board.any_raspberry_pi:
from adafruit_blinka.microcontroller.bcm283x.pulseio.PulseIn import PulseIn
from adafruit_blinka.microcontroller.bcm283x.pulseio.PWMOut import PWMOut
-if detector.board.any_coral_board:
+elif detector.board.any_coral_board:
from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut
-if detector.board.any_giant_board:
+elif detector.board.any_giant_board:
from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut
-if detector.board.any_beaglebone:
+elif detector.board.any_beaglebone:
from adafruit_blinka.microcontroller.am335x.sysfs_pwmout import PWMOut
-if detector.board.any_rock_pi_board:
+elif detector.board.any_rock_pi_board:
from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut
-if detector.board.binho_nova:
+elif detector.board.binho_nova:
from adafruit_blinka.microcontroller.nova.pwmout import PWMOut
-if detector.board.greatfet_one:
+elif detector.board.greatfet_one:
from adafruit_blinka.microcontroller.nxp_lpc4330.pwmout import PWMOut
+elif "sphinx" in sys.modules:
+ pass
+else:
+ raise NotImplementedError("pulseio not supported for this board.")