首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在linux中通过usb从i2c设备中检索数据

如何在linux中通过usb从i2c设备中检索数据
EN

Stack Overflow用户
提问于 2009-10-13 07:59:13
回答 1查看 10.2K关注 0票数 3

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

代码语言:javascript
运行
复制
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个传感器。但我不知道如何列出可用传感器的地址。

有人能给我一些提示吗?提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-13 08:12:29

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

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

代码语言:javascript
运行
复制
[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):

代码语言:javascript
运行
复制
([0x00 - 0x7F] << 1) | 1

因为我们没有数据表,所以对最后两个字节我什么也说不出来。您可以尝试使用虚拟值。如果一个设备被附加到扫描的I2C地址,它应该回复一个NACK试图读取一个不存在的寄存器。应该忽略发送到不符合实际设备的I2C地址的读取命令。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1558789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档