gpt4 book ai didi

c++ - 体验在 Raspberry Pi 上为 PCF8575 I/O 扩展器编写 C 代码

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

有没有人尝试使用 SparkFun 的 PCF8575 I/O 扩展器编写 C/C++ 例程来扩展 Raspberry PI 上的 I/O?

我可以找到很多 Python 示例,因为我需要用 C 进行开发,所以这些示例对我帮助不大。

我已正确配置所有内容,而且我知道我的 I2C 设备会响应。例如,我可以从命令行执行此操作:

i2cset -y 1 0x20 0xff 0xff
i2cset -y 1 0x20 0x00 0x00

所有 16 个输出(在本例中)将打开/关闭

我也知道我可以简单地做 system();从我的 C 代码中运行,但这不是我想要解决这个问题的方式,因为我希望能够解决该词中的单个位,然后再切换模式等。

我查看了 Arduino 实现及其示例代码,它们(当然)全部基于 Atmel 处理器,修改所有库和文件以与 ARM 处理器兼容可能会让我超出截止日期我的项目。 (这是一个简单的项目,展示了在 Pi 上填充常规 I/O 与通过 I2C 使用 I/O 扩展器来保存 I/O 之间的区别)我还在写一个教程供我个人引用和任何人有兴趣。但我卡在了这一点上。

请帮忙

最佳答案

关于寻址单个位和改变模式:你不能。 PCF8575是一个非常简单的I/O扩展器,只支持两种操作:

  1. 写入两个字节来设置所有管脚的状态。

  2. 读取两个字节以读取所有引脚的状态。如果引脚设置为高电平,则引脚会进入准输入状态(带上拉)。

如果不写入进程中的所有其他引脚,则无法更改一个引脚的状态,并且引脚没有明确的输入状态。如果您想要这样的奇特功能,您将需要一个更高级的 I/O 扩展器。 :)


现在,综上所述, 有一种方法可以读取和写入 I2C 设备,例如这个 I/O 扩展器,而无需使用 i2cset命令。具体来说,如果您使用 C 语言工作,则可以读取和写入 I2C 设备节点以与设备通信。有关如何执行此操作的文档作为 Linux 内核的一部分提供,位于:

https://www.kernel.org/doc/Documentation/i2c/dev-interface

关于c++ - 体验在 Raspberry Pi 上为 PCF8575 I/O 扩展器编写 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32169670/

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