新闻  |   论坛  |   博客  |   在线研讨会
imx7d 通过imx7d-sdb.dts 添加 spi设备
电子禅石 | 2020-05-15 13:35:26    阅读:1033   发布文章

通过nxp yocto工程获得的kernel 对应的imx7d-sdb.dts并不包含spi设备(即 在/dev/下没有spidev0.0 和 spidev1.0),想要访问spi设备需要自己添加。废话不多说,下面说一下我自己添加的过程,本人亲测,有效。
linux kerel大概从2.6以后用dts把一些跟板级硬件配置相关的东东都放在了Device Tree Source中,一般放置在内核的arch/arm/boot/dts/目录。这样做的好处多多,有多少,自己百度。
我添加spi的过程如下:
1:打开 imx7d-sdb.dts
添加spi节点:
&ecspi1 {  
    fsl,spi-num-chipselects = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_ecspi1 &pinctrl_ecspi1_cs>;
    cs-gpios = <&gpio4 19 0>;    
    status = "okay";
        spidev@1 {
        spi-max-frequency = <48000000>;
        reg = <0>;
        compatible = "rohm,dh2228fv";
    }; 
   
};
&ecspi2 {  
    fsl,spi-num-chipselects = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>;
    cs-gpios = <&gpio4 23 0>;    
    status = "okay";
        spidev@2 {
        spi-max-frequency = <48000000>;
        reg = <0>;
        compatible = "rohm,dh2228fv";
    }; 
};
2:定义相关引脚
        pinctrl_ecspi1_cs: ecspi1_cs_grp {
            fsl,pins = <
                           MX7D_PAD_ECSPI1_SS0__GPIO4_IO19    0x80000000
            >;
        };
        pinctrl_ecspi1: ecspi1grp {
            fsl,pins = <
                MX7D_PAD_ECSPI1_SCLK__ECSPI1_SCLK    0x1
                MX7D_PAD_ECSPI1_MOSI__ECSPI1_MOSI    0x1
                MX7D_PAD_ECSPI1_MISO__ECSPI1_MISO    0x1
            >;
        };
                pinctrl_ecspi2_cs: ecspi2_cs_grp {
            fsl,pins = <
                           MX7D_PAD_ECSPI2_SS0__GPIO4_IO23     0x80000000
            >;
        };
        pinctrl_ecspi2: ecspi2grp {
            fsl,pins = <
                MX7D_PAD_ECSPI2_SCLK__ECSPI2_SCLK     0x1
                MX7D_PAD_ECSPI2_MOSI__ECSPI2_MOSI    0x1
                MX7D_PAD_ECSPI2_MISO__ECSPI2_MISO    0x1
            >;
        };
3:make;找到编译好的dtb(即imx7d-sdb.dtb),替换原来的dtb,注意名字要和uboot里面 fdt_file设置一样。
4:重启,ls /dev/spi*
spidev0.0  spidev1.0
大功告成,哈哈。
note:有些板子kernel会启动失败,我遇到的情况是spi引脚被别的设备占用了,在dts中注释掉被占用的引脚即可。
例如: uart6 ,udsh2
————————————————

原文链接:https://blog.csdn.net/geng115/article/details/85237409


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客