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,然后您将读取一个字节作为答案。
我无法获取如何选择以下数据的值-
FT232H与FT232R是两种不同的芯片。 FT232R不包含" MPSSE引擎",因此不能与第三方代码示例一起使用,也不能与依赖MPSSE来实现i2c主功能的FTDI应用程序注释255一起使用。