修改代码和设备树
修改默认接口和HBLED的实验很相似,将更正过的温湿度传感器驱动代码打开,修改成原本的样子,即打开SHT11_driver.c,取消938行的注释,并修改为下面的代码。
{ .compatible = "fsl,magic-j4sht11-port" },
注释937行,取消962行的注释,注释961行,取消970行的注释,注释969行,然后保存并退出,重新编译。
上述修改的地方就是温湿度传感器移植时需要更改的地方,我们选择另外两个引脚作为新的GPIO引脚,查看底板原理图,恰好发现J4接口处有两个空余引脚,且能作为GPIO使用,分别为13号引脚和21号引脚。
打开芯片手册进行确认,分别对应了GPIO2_IO17和GPIO2_IO18。
接下来我们编辑设备树文件,输入sudo nano /home/uptech/fsl-6dl-source/kernel-3.14.28/arch/arm/boot/dts/imx6qdl-sabresd.dtsi,找到magic_p8_port进行仿写,内容要和驱动文件对应。
/* magic-j4sht11-port */
magic-j4sht11-port {
compatible = "fsl,magic-j4sht11-port";
pinctrl-names = "default";
j4sht11_gpio0 = <&gpio2 17 0>;
j4sht11_gpio1 = <&gpio2 18 0>;
};
修改后需要记住引脚对应的接线,原本的p8_gpio0对应了模块的SCL,p8_gpio1对应模块的SDA,修改后SCL应该连接J4的13脚,SDA连接J4的21脚。
然后找到定义此引脚GPIO的地方,发现刚好被P7定义为GPIO,无需重新定义,如下图所示。
最后检测是否有引脚复用冲突的情况,将冲突的引脚定义暂时注释掉(本例中应该无冲突引脚)。
修改完设备树需要重新编译内核和设备树文件,然后重新烧录系统。
需要注意,烧录和开机时请断开温湿度传感器,提前连接传感器将导致设备无法识别u-boot,以及无法正常开机。
实际演示
执行后功能上和前文中温湿度传感器的例程没有区别,详情见下图。