adafruit_bus_device – 硬件加速外部总线访问

I2CDevice 和 SPIDevice 帮助器类使管理总线上的事务状态变得容易。例如,他们管理锁定总线以防止其他并发访问。对于 SPI 设备,它管理芯片选择和协议更改,例如模式。对于 I2C,它管理设备地址。

在这些板上可用
  • 8086指挥官
  • ARAMCON 徽章 2019
  • ARAMCON2 徽章
  • ATMegaZero ESP32-S2
  • Adafruit CLUE nRF52840 Express
  • Adafruit Circuit Playground Bluefruit
  • Adafruit Circuit Playground Express 4-H
  • Adafruit CircuitPlayground Express
  • 带有 Crickit 库的 Adafruit CircuitPlayground Express
  • Adafruit 边缘徽章
  • Adafruit Feather Bluefruit Sense
  • Adafruit Feather M0 RFM69
  • Adafruit Feather M0 RFM9x
  • Adafruit Feather M4 CAN
  • Adafruit Feather M4 Express
  • Adafruit Feather MIMXRT1011
  • Adafruit Feather RP2040
  • Adafruit Feather STM32F405 Express
  • Adafruit Feather nRF52840 Express
  • Adafruit FunHouse
  • Adafruit Grand Central M4 Express
  • Adafruit Hallowing M4 Express
  • Adafruit ItsyBitsy M4 Express
  • Adafruit ItsyBitsy RP2040
  • Adafruit ItsyBitsy nRF52840 Express
  • Adafruit LED Glasses Driver nRF52840
  • Adafruit Macropad RP2040
  • Adafruit MagTag
  • Adafruit Matrix Portal M4
  • Adafruit Metro ESP32S2
  • Adafruit Metro M4 Airlift Lite
  • Adafruit Metro M4 Express
  • Adafruit Metro nRF52840 Express
  • Adafruit 怪物 M4SK
  • Adafruit ProxLight Trinkey M0
  • Adafruit PyGamer
  • Adafruit PyPortal
  • Adafruit PyPortal Pynt
  • Adafruit PyPortal Titano
  • Adafruit Pybadge
  • Adafruit QT Py RP2040
  • Adafruit QT2040 Trinkey
  • Adafruit Trellis M4 Express
  • AloriumTech Evo M51
  • Arduino Nano 33 BLE
  • Arduino Nano RP2040 连接
  • Artisense 参考设计 RD00
  • AtelierDuMaker nRF52840 突破
  • BDMICRO VINA-D51
  • BLE-SS 开发板多传感器
  • 巴斯特BLE
  • 无线网络
  • 蓝微840
  • CP32-M4
  • 功能强大的机器人可编程 USB 集线器
  • 挑战者 RP2040 WiFi
  • Circuit Playground Express Digi-Key PyCon 2019
  • CircuitBrains 豪华版
  • CrumpS2
  • Cytron Maker Pi RP2040
  • DynOSSAT-EDU-OBC
  • ESP 12k NodeMCU
  • Electronut 实验室 Blip
  • Electronut 实验室纸
  • EncoderPad RP2040
  • 埃斯普鲁诺无线网络
  • Feather ESP32S2 不带 PSRAM
  • Feather MIMXRT1011
  • Feather MIMXRT1062
  • FeatherS2
  • FeatherS2 Neo
  • FeatherS2 PreRelease
  • Franzininho WIFI w/Wroom
  • Franzininho WIFI w/Wrover
  • Gravitech Cucumber M
  • Gravitech Cucumber MS
  • Gravitech Cucumber R
  • Gravitech Cucumber RS
  • HMI-DevKit-1.1
  • HiiBot BlueFi
  • IMXRT1010-EVK
  • IkigaiSense Vita nRF52840
  • Kaluga 1
  • LILYGO TTGO T8 ESP32-S2 w/Display
  • MDBT50Q-DB-40
  • MDBT50Q-RX Dongle
  • MEOWBIT
  • MORPHEANS MorphESP-240
  • MakerDiary nRF52840 MDK
  • MakerDiary nRF52840 MDK USB Dongle
  • Makerdiary M60 Keyboard
  • Makerdiary Pitaya Go
  • Makerdiary nRF52840 M.2 Developer Kit
  • Melopero Shake RP2040
  • Metro MIMXRT1011
  • Mini SAM M4
  • NUCLEO STM32F746
  • NUCLEO STM32F767
  • NUCLEO STM32H743
  • OPENMV-H7 R1
  • Oak Dev Tech BREAD2040
  • Oak Dev Tech PixelWing ESP32S2
  • Open Hardware Summit 2020 Badge
  • PCA10056 nRF52840-DK
  • PCA10059 nRF52840 Dongle
  • Particle Argon
  • Particle Boron
  • Particle Xenon
  • Pimoroni Interstate 75
  • Pimoroni Keybow 2040
  • Pimoroni PGA2040
  • Pimoroni Pico LiPo (16MB)
  • Pimoroni Pico LiPo (4MB)
  • Pimoroni PicoSystem
  • Pimoroni Plasma 2040
  • Pimoroni Tiny 2040
  • PyCubedv04
  • PyCubedv04-MRAM
  • PyCubedv05
  • PyCubedv05-MRAM
  • PyKey60
  • PyboardV1_1
  • Raspberry Pi Pico
  • Robo HAT MM1 M4
  • S2Mini
  • SAM E54 Xplained Pro
  • SAM32v26
  • SPRESENSE
  • ST STM32F746G Discovery
  • STM32F411E_DISCO
  • STM32F412G_DISCO
  • STM32F4_DISCO
  • Saola 1 w/Wroom
  • Saola 1 w/Wrover
  • Seeeduino Wio Terminal
  • Silicognition LLC M4-Shim
  • SparkFun MicroMod RP2040 Processor
  • SparkFun MicroMod SAMD51 Processor
  • SparkFun MicroMod nRF52840 Processor
  • SparkFun Pro Micro RP2040
  • SparkFun Pro nRF52840 Mini
  • SparkFun STM32 MicroMod Processor
  • SparkFun Thing Plus - RP2040
  • SparkFun Thing Plus - SAMD51
  • Sprite_v2b
  • TG-Boards' Datalore IP M4
  • TG-Watch
  • THUNDERPACK_v11
  • THUNDERPACK_v12
  • Targett Module Clip w/Wroom
  • Targett Module Clip w/Wrover
  • Teensy 4.0
  • Teensy 4.1
  • Teknikio Bluebird
  • The Open Book Feather
  • TinkeringTech ScoutMakes Azul
  • TinyS2
  • UARTLogger II
  • WarmBit BluePixel nRF52840
  • Winterbloom Sol
  • XinaBox CC03
  • XinaBox CS11
  • iMX RT 1020 EVK
  • iMX RT 1060 EVK
  • microS2
  • nanoESP32-S2 w/Wrover
  • nanoESP32-S2 w/Wroom
  • nice!nano
  • stm32f411ce-blackpill
  • stm32f411ce-blackpill-with-flash

class adafruit_bus_device.I2CDevice(i2c: busio.I2C, device_address: int, probe: bool = True)

I2C 设备管理器

代表单个 I2C 设备并管理锁定总线和设备地址。

参数
  • i2c (I2C) – 设备所在的 I2C 总线

  • device_address (int) – 7 位设备地址

  • probe (bool) – 在创建对象时探测设备,默认为 true

例子:

import busio
from board import *
from adafruit_bus_device.i2c_device import I2CDevice
with busio.I2C(SCL, SDA) as i2c:
    device = I2CDevice(i2c, 0x70)
    bytes_read = bytearray(4)
    with device:
        device.readinto(bytes_read)
    # A second transaction
    with device:
        device.write(bytes_read)
__enter__(self)I2CDevice

用于锁定总线的上下文管理器条目。

__exit__(self)None

退出时自动解锁巴士。

readinto(self, buf: _typing.WriteableBuffer, *, start: int = 0, end: Optional[int] = None)None

Read into buf 从设备读入。读取的字节数将是 的长度 buf. 。如果提供startend,则缓冲区将被切片,就像buf[start:end]。这不会像 buf[start:end]will 那样导致分配, 因此可以节省内存。

参数
  • buf (bytearray) – 要写入的缓冲区

  • start (int) – 开始写入的索引

  • end (int) – 要写入但不包括的索引;如果没有,使用len(buf)

write(self, buf: _typing.ReadableBuffer, *, start: int = 0, end: Optional[int] = None)None

将字节写入buffer 设备,然后发送一个停止位。如果提供startend ,则缓冲区将被切片,就像buffer[start:end]。这不会像 buffer[start:end]will 那样导致分配, 因此可以节省内存。

参数
  • buf (bytearray) – 包含要写入的字节的缓冲区

  • start (int) – 开始写入的索引

  • end (int) – 要读取但不包括的索引;如果没有,使用 len(buf)

write_then_readinto(self, out_buffer: _typing.WriteableBuffer, in_buffer: _typing.ReadableBuffer, *, out_start: int = 0, out_end: Optional[int] = None, in_start: int = 0, in_end: Optional[int] = None)None

将字节写入 out_buffer设备,然后立即in_buffer 从设备读取。读取的字节数将是 的长度in_buffer。如果提供out_startout_end,则输出缓冲区将被切片为 ifout_buffer[out_start:out_end]buffer[out_start:out_end]will 那样导致分配,因此可以节省内存。如果提供in_startin_end ,则输入缓冲区将被切片,就像in_buffer[in_start:in_end].。这不会像in_buffer[in_start:in_end] will 那样导致分配,因此可以节省内存。

参数
  • out_buffer (bytearray) – 包含要写入的字节的缓冲区

  • in_buffer (bytearray) – 包含要读入的字节的缓冲区

  • out_start (int) – 开始写入的索引

  • out_end (int) – 要读取但不包括的索引;如果没有,使用len(out_buffer)

  • in_start (int) – 开始写入的索引

  • in_end (int) – 要写入但不包括的索引;如果没有,使用len(in_buffer)

class adafruit_bus_device.SPIDevice(spi: busio.SPI, chip_select: microcontroller.Pin, *, baudrate: int = 100000, polarity: int = 0, phase: int = 0, extra_clocks: int = 0)

SPI 设备管理器

代表单个 SPI 设备并管理锁定总线和设备地址。

参数
  • spi (SPI) – 设备所在的 SPI 总线

  • chip_select (DigitalInOut) – 实现 DigitalInOut API 的芯片选择引脚对象。

  • cs_active_value (bool) – 如果您的设备要求 CS 为高电平有效,则设置为 true。默认为假。

  • extra_clocks (int) – CS 为高电平后循环总线的最小时钟周期数。(用于 SD 卡。)

例子:

import busio
import digitalio
from board import *
from adafruit_bus_device.spi_device import SPIDevice
with busio.SPI(SCK, MOSI, MISO) as spi_bus:
    cs = digitalio.DigitalInOut(D10)
    device = SPIDevice(spi_bus, cs)
    bytes_read = bytearray(4)
    # The object assigned to spi in the with statements below
    # is the original spi_bus object. We are using the busio.SPI
    # operations busio.SPI.readinto() and busio.SPI.write().
    with device as spi:
        spi.readinto(bytes_read)
    # A second transaction
    with device as spi:
        spi.write(bytes_read)
__enter__(self)busio.SPI

通过配置 SPI 和断言芯片选择来启动 SPI 事务。

__exit__(self)None

通过取消置位片选来结束 SPI 事务。有关更多信息,请参阅 Lifetime 和ContextManagers