关于python:无法从Linux虚拟机将I2C设备连接到FT232H

Unable to interface I2C device to FT232H from Linux Virtual Machine

我正在尝试连接一个传感器,该传感器通过I2C通信发送和接收数据。我已将传感器与FT232H USB转I2C转换器连接,并将其插入PC。

我得到如下的dmesg输出-

1
2
3
4
5
6
7
8
9
10
11
12
13
[  518.172735] usb 1-3: new full-speed USB device number 4 using xhci_hcd
[  518.306677] usb 1-3: New USB device found, idVendor=0403, idProduct=6001
[  518.306686] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  518.306689] usb 1-3: Product: FT232R USB UART
[  518.306692] usb 1-3: Manufacturer: FTDI
[  518.306695] usb 1-3: SerialNumber: AK04P01W
[  518.309382] ftdi_sio 1-3:1.0: FTDI USB Serial Device converter detected
[  518.309442] usb 1-3: Detected FT232RL
[  518.309445] usb 1-3: Number of endpoints 2
[  518.309448] usb 1-3: Endpoint 1 MaxPacketSize 64
[  518.309450] usb 1-3: Endpoint 2 MaxPacketSize 64
[  518.309453] usb 1-3: Setting MaxPacketSize 64
[  518.309771] usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0

,我能够获得/ dev / ttyUSB0设备。

我已经运行了以下链接中给出的基于python的示例应用程序-

https://learn.adafruit.com/adafruit-ft232h-breakout/i2c

我正在使用的代码段如下-

1
2
3
4
5
6
7
8
9
10
import Adafruit_GPIO.FT232H as FT232H

# Temporarily disable FTDI serial drivers.
FT232H.use_FT232H()

# Find the first FT232H device.
ft232h = FT232H.FT232H()

# Create an I2C device at address 0x70.
i2c = FT232H.I2CDevice(ft232h, 0x70)

但是,它总是卡在下面的行中-

ft232h = FT232H.FT232H()

我无法使用该功能。

我也遵循以下链接中给出的步骤-

https://unix.stackexchange.com/questions/340789/enabling-i2c-on-debian-i2cdetect-doesnt-show-device

在上面的链接中显示了一个示例,如下所示-

因此,例如,要读取版本,您需要从寄存器00中读取01字节,默认芯片地址为E0,最低有效位为R / W位,因此您将E1用作地址,并且需要USB-I2C适配器的命令为55。因此,您要通过串行发送的完整序列为55 E1 00 01,然后您将读取一个字节作为答案。

我无法获取如何选择以下数据的值-

  • USB的必需命令-I2C适配器。我们如何得出结论"适配器的必需命令"

  • FT232H与FT232R是两种不同的芯片。 FT232R不包含" MPSSE引擎",因此不能与第三方代码示例一起使用,也不能与依赖MPSSE来实现i2c主功能的FTDI应用程序注释255一起使用。