首页 > 解决方案 > 在 Linux 中通过交换机配置 I2C 总线

问题描述

我的系统有以下简化示意图。

                                   GPIO4
                     +-----------------------------+
                     |             GPIO3           |
                     |  +------------------------+ |
                     |  |          GPIO2         | |
                     |  |  +-------------------+ | |
                     |  |  |       GPIO1       | | |
                     |  |  |  +--------------+ | | |
                     |  |  |  |              | | | |
                   +-+--+--+--+-+            | | | |
I2C1 +-------------+            |            | | | |
                   |            |           ++-+-+-++
I2C2 +-------------+            |    I2C    |       |
                   |   SWITCH   +-----------+  CPU  |
I2C3 +-------------+            |           |       |
                   |            |           +-------+
I2C4 +-------------+            |
                   +------------+

在 Linux 中实现/配置它的最佳方法是什么,为什么?是否有可能以某种方式在设备树中配置它,在用户空间中导出 4 个 i2c 设备,并且每当有人想要写入/读取这 4 个 i2c 总线之一时,相应的 GPIO 就会被断言?

是否只能在内核模块/驱动程序中实现?

标签: linux-kerneldriverkernel-moduledevice-tree

解决方案


从评论:

有一个“i2c-mux-gpio”驱动程序可以帮助解决这个问题。– @Ian Abbott 2019 年 9 月 12 日 11:35


推荐阅读