是否有人尝试使用SparkFun的PCF8575 I / O-Expander编写C / C ++例程来扩展Raspberry PI上的I / O?
我可以找到很多Python样本,因为我需要用C语言开发,所以不会帮助我很多。
我已正确配置所有内容,并且我知道我的I2C设备已响应。例如,我可以从命令行执行此操作:
i2cset -y 1 0x20 0xff 0xff
i2cset -y 1 0x20 0x00 0x00
并且所有16个输出(在这种情况下)将打开/关闭
我也知道我可以简单地做系统();从我的C代码中起作用, 但这不是我想要解决的问题,因为我希望能够解决该单词中的单个位,然后再切换模式等等。
我看了一下Arduino实现及其示例代码,当然这些代码都基于Atmel处理器,修改所有库和文件以符合ARM处理器可能会超出截止日期我的项目。 (这是一个简单的项目,用于显示在Pi上填充常规I / O与通过I2C使用I / O扩展器来节省I / O之间的区别)我还在编写教程以供个人参考和任何有兴趣的人。但我现在陷入困境。
请帮忙
答案 0 :(得分:2)
关于寻址个别位和改变模式:你不能。 PCF8575是一个非常简单的I / O扩展器,只支持两种操作:
写两个字节来设置所有引脚的状态。
读取两个字节以读取所有引脚的状态。如果它们被设置为高,则引脚处于准输入状态(带上拉)。
在没有写入过程中的所有其他引脚的情况下,无法更改一个引脚的状态,并且引脚没有明确的输入状态。如果你想要这样的花哨功能,你需要一个更高级的I / O扩展器。 :)
现在,所有人都说,是一种读写I2C设备的方法,例如这个I / O扩展器,而不会出现i2cset
命令。具体来说,如果您在C中工作,则可以读取和写入I2C设备节点以与设备通信。有关如何执行此操作的文档可作为Linux内核的一部分提供,位于: