如何从 Linux 将 Zynq 7000 PS 中的 I2c 控制器配置为从属控制器

如何从 Linux 将 Zynq 7000 PS 中的 I2c 控制器配置为从属控制器

我使用的是带有 Zynq 7000 的 zed 板。最终目标是让 Zynq7000 的物理 PS 中的 I2c-0 控制器充当 I2c 从设备。

我正在使用 yocto/bitbake 为我的设备生成 Linux 映像。到目前为止,我已经能够将 I2c-0 设备 SDA 和 SCK 线映射到 zed 板上的物理引脚。我已经用自己的设备树覆盖了 zynq-7000.dtsi 以启用 i2c0 设备。

从我的主板的 linux shell 中,我可以使用“i2cdetect -l”看到 i2c 设备,它给出以下输出:

root@zed-board:~# i2cdetect -l
i2c-0   i2c             Cadence I2C at e0004000                 I2C adapter

从一个简单的 hello.c 程序我可以使用

#include <sys/ioctl.h>
#include <linux/i2c.h>
#include <linux/i2c-dev.h>

使用 i2c 主控写入数据,我可以看到数据从我的引脚输出。

但是,我不知道如何将此设备配置为从设备。从cadence i2c驱动代码中可以看到https://github.com/torvalds/linux/blob/master/drivers/i2c/busses/i2c-cadence.c 支持从机模式。我使用 yocto 的内核配置菜单来启用 i2c 从属支持,然后将该配置添加到我的映像中,以便应该启用它。

我只是不知道我需要做什么,以便从用户空间应用程序将设备置于从模式并注册从事件的回调。

任何帮助深表感谢。

相关内容