Beaglebone Black 和 MCP230xx CircuitPython 库

问题描述 投票:0回答:1

我不知道如何指定I2C总线,因为Beaglebone Black有3x(1x无法通过标头访问)。我想将它们用于许多不同的 I2C 设备(引脚 17/18 I2C1 和引脚 19/20 I2C2)

在他们在这里提到的示例中:https://github.com/adafruit/Adafruit_CircuitPython_MCP230xx/blob/master/examples/mcp230xx_simpletest.py

import board
import busio

from adafruit_mcp230xx.mcp23008 import MCP23008

i2c = busio.I2C(board.SCL, board.SDA)
mcp = MCP23017(i2c, address=0x21)

他们只使用

mcp = MCP23017(i2c, address=0x21)
来指定I2C设备的地址,而不是特定的总线。我检查了“busio”库是否可以在那里执行此操作,但找不到正确的声明。

编辑: 看来董事会图书馆正在做这种事情。通过在 python shell 中写下

dir (board)
,它会列出 beaglebone black 上所有可访问的引脚。

进口板 目录(板)['CE0','CE1','I2C','LED_USR0','LED_USR1','LED_USR2','LED_USR3','MISO','MISO_1','MOSI','MOSI_1',' P8_10', 'P8_11','P8_12','P8_13','P8_14','P8_15','P8_16','P8_17', 'P8_18','P8_19','P8_20','P8_21','P8_22','P8_23','P8_24', 'P8_25','P8_26','P8_27','P8_28','P8_29','P8_3','P8_30','P8_31', 'P8_32','P8_33','P8_34','P8_35','P8_36','P8_37','P8_38', 'P8_39','P8_4','P8_40','P8_41','P8_42','P8_43','P8_44','P8_45', 'P8_46','P8_5','P8_6','P8_7','P8_8','P8_9','P9_11','P9_12', 'P9_13','P9_14','P9_15','P9_16','P9_17','P9_18','P9_19', 'P9_20','P9_21','P9_22','P9_23','P9_24','P9_25','P9_26', 'P9_27','P9_28','P9_29','P9_30','P9_31','P9_41','P9_42','SCK', 'SCK_1'、'SCL'、'SCLK'、'SCLK_1'、'SDA'、'SPI'、'builtins'、 'cached', 'doc', 'file', 'loader', 'name', 'package', 'spec', 'ap_board', 'board_id', '探测器', 'pin', '系统']

但我不知道 I2C 的 board.pin 的正确寻址是什么。通过仅处理定义引脚,他向我抛出了一个错误:

ValueError: No Hardware I2C on (scl,sda)=(P9_17, P9_18)
Valid I2C ports: ((1, I2C1_SCL, I2C1_SDA), (2, I2C2_SCL, I2C2_SDA))

他似乎认识两条 I2C 总线。但我不知道如何解决第二个问题。

python i2c beagleboneblack adafruit
1个回答
0
投票

使用 I2C1:

i2c=busio.I2C(board.pin.I2C1_SCL,board..pin.I2C1_SDA)

© www.soinside.com 2019 - 2024. All rights reserved.