如何在linux下使用自带GPIO模拟I2C的驱动
本文以百问网imx6ull pro为例,进入目录使用vi .config 指令查看有没有编译CONFIG_I2C_MUX_GPIO可以看到#CONFIG_I2C_MUX_GPIO is not set所以我们使用make menuconfig 命令配置/ I2C_GPIO搜索一下 ,可以看到具体的位置进入这个位置,输入M将他配置编译成模块,当然你也可以配置编译进内核保存退出根目录下写入下面的设备树
如何在linux下使用自带GPIO模拟I2C的驱动
如何在linux下使用自带GPIO模拟I2C的驱动
如何查看系统有没有自带驱动
本文以百问网imx6ull pro为例,进入目录
使用vi .config 指令查看有没有编译CONFIG_I2C_MUX_GPIO
可以看到#CONFIG_I2C_MUX_GPIO is not set
所以我们使用make menuconfig 命令配置
/ I2C_GPIO搜索一下 ,可以看到具体的位置
进入这个位置,输入M将他配置编译成模块,当然你也可以配置编译进内核
保存退出
修改设备树
根目录下写入下面的设备树代码
i2c_gpio_liaoPJ {
compatible = "i2c-gpio";
gpios = <&gpio4 20 0 /*sda*/
&gpio4 21 0 /*scl*/>;
i2c-gpio,delay-us = <5>; /*100k HZ*/
#address-cells = <1>;
#size-cells = <0>;
};
可以根据你自己的板子,修改gpios里的引脚 ,以及delay-us里的频率,这里5指的是5us,由于驱动程序发送一个数据需要耗费5*2us 所以这里是100kHZ。
上机实验
1.编译设备树 make dtbs
2.编译模块 make modules
3.拷贝设备树及编译的.KO文件到单板上,ko文件在
4.替换设备树,重启 reboot
5.安装驱动 insmod i2c-gpio.ko
可以看到多出了一条i2c总线

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)