gpt4 book ai didi

linux - 在 Linux 中将开始位和停止位发送到 i2c 总线?

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:02 31 4
gpt4 key购买 nike

我正在用户空间编写包装器 API,用于在嵌入式 Linux 平台上用 C 语言控制 I2C 总线。我能够使用 read()write() 方法以及 ioctl() 调用来选择从属设备,从而从传感器读取和写入数据。我知道内部读/写执行以下步骤:

  • 发送开始
  • 发送从地址 + R/W 位并得到确认
  • 发送/接收数据
  • 发送停止

我想创建单独的函数来执行以下操作:

  1. 在 I2C 总线上发送一个开始
  2. 在 I2C 总线上发送一个停止
  3. 写入一个字节到 I2C 总线。 (对奴隶来说不是通用的)
  4. 从 I2C 总线读取一个字节。 (对奴隶来说不是通用的)

是否有可从 C 用户应用程序使用的任何 linux 函数/API/ioctl 调用来实现上述功能..?

最佳答案

为什么需要这样做?如果您能阐明这种需求,那将很有帮助。

通常 I2C 设备由内核驱动程序控制。但是,如果您正在寻找来自用户空间的 I2C 设备访问权限,您可以通过/dev 接口(interface)进行。在这里,您可以使用 i2c-tools 的 i2c-dev.h 从用户空间访问 I2C 适配器,相关信息位于链接 https://www.kernel.org/doc/Documentation/i2c/dev-interface 中。 .另请注意,在使用 read() 或 write() 时,将相应地执行基于起始位/地址/数据/停止的整个 I2C 调用流程。

关于linux - 在 Linux 中将开始位和停止位发送到 i2c 总线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33080753/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com