3

我有一个温度传感器,它使用 USB-I2C 适配器(http://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm)连接我将此设备连接到我的 linux 计算机(suse10)。我输入了 dmesg 并看到了

usb 3-3: new full speed USB device using ohci_hcd and address 10
usb 3-3: new device found, idVendor=0403, idProduct=6001
usb 3-3: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-3: Product: FT232R USB UART
usb 3-3: Manufacturer: FTDI
usb 3-3: SerialNumber: A7007K93
usb 3-3: configuration #1 chosen from 1 choice
ftdi_sio 3-3:1.0: FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected FT232BM
usb 3-3: FTDI USB Serial Device converter now attached to ttyUSB0

但我不知道如何读取当前温度。

更新 1:实际上 I2C 总线最多可以连接 127 个传感器。但我不知道如何列出可用传感器的地址。

有人可以给我一些提示吗?提前致谢

4

1 回答 1

5

您的适配器允许您通过虚拟串行端口发送 I2C 命令。已为您创建了一个串行端口。您需要打开它并向其发送命令。这些命令特定于您所连接的设备。请参阅您提供的链接中的示例以获取想法。

如果没有数据表,很难给您正确的说明。很可能您的设备将使用一个字节地址,读取过程如下:

[I2C_AD1] [Device I2C address + Read bit] [Device Address register] [Number of bytes to read]
0x55 0xXX 0x00 0x01

您需要向串口发送 4 个字节。第一个指示 USB 到 I2C 转换器发送读取命令。第二个是连接到 I2C 总线的设备的地址。I2C 设备使用 7 位地址 (0-127)。通常这些是在左移一位的情况下给出的。因此,您需要扫描这些地址(从 0 迭代到 127,左移一位,将 bit0 设置为 1):

([0x00 - 0x7F] << 1) | 1

由于我们没有数据表,我无法说出最后两个字节的任何信息。您可以尝试使用虚拟值。如果设备连接到扫描的 I2C 地址,它应该回复 NACK 以尝试读取不存在的寄存器。应忽略发送到与实际设备不对应的 I2C 地址的读取命令。

于 2009-10-13T08:12:29.697 回答