如何在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总线