【问题标题】:Raspberry Pi C++ I2C/SPI Examples树莓派 C++ I2C/SPI 示例
【发布时间】:2017-09-11 03:39:30
【问题描述】:

您好,请不要立即删除。我很难找到使用 C++ 在 Raspberry Pi 上进行 I2C/SPI 编程的良好代码示例。我查看了wiringPi 和其他来源,但他们并没有像我想要的那样提供太多的源代码文档。有没有人在有据可查的源代码甚至视频解释中找到令人愉快的例子?如果有,可以分享一下链接吗?

谢谢!

【问题讨论】:

  • 库、教程或类似的请求在 SO 中是题外话
  • 建议我应该把它移到哪里?也许是 StackExchange?
  • @eyllanesc 不。这个问题在那里也是题外话。请参阅Help Center there:“但请注意,以下内容与主题无关”“要求参考在线资料(使用搜索引擎,如果不起作用,请直接询问问题)”
  • 不知道raspberrypi.stackexchange.com的规则,我只建议你去看看能不能发帖。

标签: c++ raspberry-pi i2c spi


【解决方案1】:

在 Raspberry Pi 上使用 C 语言进行 I2C 很容易——主要是您需要普通的低级文件操作——打开、读取、写入等。

首先打开相应的设备:

int f = open ("/dev/i2c-1", O_RDWR);

然后使用ioctl()设置I2C设备地址:

ioctl (f, I2C_SLAVE, address);

然后只需使用普通的read()write() 调用来发送和接收数据。

困难的部分是理解设备的数据协议——这可能会,也可能不会被记录在案。对于 RPi,很多厂商只提供 Python 编程示例,因此我们必须从 Python 代码中对实际协议进行逆向工程。

我已经使用这种方法将各种设备连接到 RPi——显示器、电机、传感器等。老实说,读取和写入 I2C 总线非常简单部分工作:)

【讨论】:

  • 但是你如何在现代 C++ 中做到这一点?具体来说,要包含哪些文件,这些函数属于什么命名空间?
  • read()、write()、ioctl() 都在全局命名空间中,所以你应该可以在 C++ 中编写 "::read(...)" 等。您不需要包含其他任何内容。话虽如此,可能有用于包装 I2C 操作的 C++ 类库。如果有的话,这些可能比低级函数调用更容易使用。
  • 你当然是对的;我的期望是 std::,但当然,我错了……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 2023-03-10
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
相关资源
最近更新 更多