我有一个温度传感器,它用USBI2C适配器(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个传感器。但我不知道如何列出可用传感器的地址。
有人能给我一些提示吗?提前感谢
发布于 2009-10-13 08:12:29
适配器允许您通过虚拟串口发送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地址的读取命令。
https://stackoverflow.com/questions/1558789
复制相似问题