问题标签 [i2c]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 如何在linux中通过usb从i2c设备中检索数据
我有一个温度传感器,它使用 USB-I2C 适配器(http://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm)连接我将此设备连接到我的 linux 计算机(suse10)。我输入了 dmesg 并看到了
但我不知道如何读取当前温度。
更新 1:实际上 I2C 总线最多可以连接 127 个传感器。但我不知道如何列出可用传感器的地址。
有人可以给我一些提示吗?提前致谢
image - i2c on Silicon image c8051f32x(使用 USBXpress)
我有 I2C (SMBus) 在这个 uC 中正常工作,并且有一个 VB GUI,它可以通过 USB(使用 USBXpress)进行通信,并从 uC 到单独的 IC 进行 I2C 事务。问题是我让 uC 每 1 秒轮询一次 IC 上的寄存器。当我执行异步 GUI I2C 事务时,每隔一段时间,我相信它会与轮询 I2C 事务发生冲突,并且所有 I2C 数据都会在 GUI 上移动(即,寄存器 0x00 的数据显示在寄存器 0x01 上)。IC 中的 I2C 数据看起来是正确的(通过使用 LA 监视 I2C 总线)。到底发生了什么,我该如何解决?
linux - 强制 I2C 通信安全吗?
对于我正在进行的一个项目,我必须通过 I2C 与多功能芯片通信。我可以通过 I2C /dev/i2c-1 接口从 linux 用户空间执行此操作。
但是,似乎驱动程序正在同时与同一个芯片通话。这导致我的 I2C_SLAVE 访问失败,错误值为 EBUSY。好吧 - 我可以通过 ioctl I2C_SLAVE_FORCE 覆盖它。我试过了,它有效。我的命令到达芯片。
问题:这样做安全吗?我确信我写的地址范围永远不会被任何内核驱动程序访问。但是,我不确定以这种方式强制 I2C 通信是否会混淆一些内部状态机左右。(我不喜欢I2C,我只是使用它......)
供参考,硬件事实:
usb - C8051F320 上的 HID 输入报告队列
似乎一旦为主机准备好数据(例如,当我使用 WriteFile 向 HID 发送命令时,我告诉 HID 返还一些数据,例如端口值)并且数据包就绪位是设置,主机在调用 ReadFile 之前读取它(由另一个 USB 中断确认)。ReadFile 稍后用于将此数据放入主机上的缓冲区。这是它应该发生的方式吗?我本来希望 ReadFile 调用会导致 in 中断。
所以这是我的问题:我有一个可以很好地协同工作的 GUI 和 HID。HID 可以对另一个 IC 执行 I2C,GUI 可以告诉 HID 执行 I2C 就好了。启动时,GUI 从 HID 读取数据并获得正确的值(例如 0x49)。打开第二个 GUI 到同一个 HID 会从 HID 读取相同的初始数据并获得正确的值(例如,0x49;它应该与第一个 GUI 的读取相同)。现在,如果我转到第一个 GUI 并进行 I2C 读取,回读值为 0x49,这是第二个 GUI 从 HID 请求的值。似乎 HID 将此值放在连接到它的所有设备的 in 端点上。因此,第一个 GUI 错误地认为这是正确的值。
根据 Jan Axelson 的 HID 常见问题解答,“HID 的每个打开句柄都有自己的报告队列。设备发送的每个报告都会进入所有队列,因此多个应用程序可以读取相同的报告。” 我相信这是我的问题。如何在第一个 GUI 发出请求之前清除它并清除端点,以便正确的值(HID 确实发送每个调试器)通过?我尝试了 HidD_FlushQueue,但它一直返回 False(不工作;不断收到“句柄无效”错误,尽管句柄在每个 WriteFile/ReadFile 成功的情况下使用相同的句柄都是有效的)。有任何想法吗?
谢谢!
c - STM32 I2C1 SR1 寄存器上未设置起始位
我正在尝试对 stm32 进行编程以与我的 i2c EEprom 对话,但似乎每次我说:
我使用了调试器,发现没有设置 SR1 位 0 标志(这是生成的起始位标志),这就是代码挂起的原因。我可以在示波器中看到生成了起始位,这有时会起作用。当我尝试连续进行多次写入时,它通常会中断。我检查了硬件一切看起来都很好我检查了我在 i2c 总线上运行的频率,它在 24lc1025 eeprom 内是 100Khz。
有任何想法吗,
谢谢
linux-device-driver - 何时最好在 Linux 中实现 I2C 驱动模块
我目前正在处理在运行 Linux 的嵌入式系统中连接到 I2C 总线的两个设备。我正在为第一个设备(相机)使用现有驱动程序。对于第二个设备,我已经成功实现了一个用户空间程序,我可以通过它与第二个设备进行通信。到目前为止,这两种设备似乎可以愉快地共存。然而,几乎所有的 I2C 设备都有自己的驱动模块。因此,我想知道驱动模块的优点是什么。我看了下面的线程...
...但没有结论。
因此,与用户空间实现相比,编写 I2C 驱动程序模块有什么优势?
问候,斯特凡
c++ - Linux 下用于 EEPROM 磨损均衡的 C/C++-Library?
有人知道用于将数据安全地存储在 8k-EEPROM 中的库,该库连接在 I2C 接口上吗?我对磨损均衡特别感兴趣,因为我有一个写入密集型应用程序,其中 EEPROM 应该/必须用作 NVRAM 来处理经常变化的测量数据。
在此先感谢,马丁
linux-device-driver - 编写 I2C 设备驱动程序时探测问题
我是编写linux设备驱动程序的新手,如果有什么愚蠢的问题和我的英语不好请原谅我^^
我正在尝试为触摸面板编写驱动程序,它通过I2C与CPU通信。
我尝试在linux平台上添加一个设备驱动,注册成功,我的意思是驱动加载了,但是probe函数没有启动!!
以上是我写的驱动的部分代码。
以上是用于注册 i2c 设备的平台(/kernel/arch/arm/mach-pxa/saarb.c)中的部分代码。
欢迎任何建议和意见,谢谢^^
linux-kernel - 通过 SMBus 访问/监控电池状态
我正在尝试通过 SMBus 监控我的电池状态。
我有一个电池和一个不断输出电池状态的控制板。
然后这个控制板通过一个 I2C-USB 模块连接到我的主板。
我需要编写一个程序来识别 SMBus 连接并将电池状态传输给用户。
在处理智能电池和 I2C/SMBus 时,我是一个初学者,我对如何解决这个问题有些迷茫。
任何建议的帮助将不胜感激。谢谢。
hardware - 什么是/在哪里可以找到有关“HI2COUT”的更多信息
期待用 ATtiny13A 对 MCP23017 的 I2C 接口进行 bit-bang,很多地方都提到 HI2COUT 作为在 I2C 总线上发送数据的一种方法,但我不知道这是否是语言或库的一部分,甚至是描述调用时会发生什么。所以问题:
1) 我在哪里可以获得关于 HI2COUT 的信息?
2)如果有人曾经与 MCP23017 接口,您能否发布正确的序列以将 1 个(或所有)引脚设置为输出并设置为高电平?(这包括开始、写入地址、写入寄存器 IOCON、...、停止等...)
3)如果有人知道更适合此问题的站点(或可能有答案)请告诉我。