【msm8953】配置和使用spi i2c

杀马特。学长 韩版系。学妹 提交于 2019-11-29 10:07:25

一 丶配置SPI和I2C        

msm8953使用spi和i2c主要是配置它的dtb,一些以msm8953为基础的平台上已经为你配置好了I2C和spi,你只需要使能就行了。没有配置的,需要自己去配置,下面提供两个参考,如何配置msm8953的SPI和DTB:

https://blog.csdn.net/weixin_36274916/article/details/52703604 

https://blog.csdn.net/xuecz1230/article/details/92809340#comments

    注: msm8953.dtsi (添加节点)   msm8953-pinctl.dtsi(引脚配置),它们位于 KERNEL/arch/arm64/boot/dts/qcom中。KERNEL为内核根目录。

    一些以msm8953为基础的平台已经配置好了SPI和I2C,但与上面两篇文章讲的有一点不同的是自己节点信息上多了“status="disabled"”,也就是它并没有使能,因为I2C和SPI有引脚复用,而dtb里面又配置了,所以默认不使能。所以此平台提供了一个使能的dtsi,名为msm8953-mtp.dtsi。例如我使能spi6,

    &spi_6{

               status = "ok"

}

这样就能避免引脚冲突,在原理图中可以知道,spi3和i2c3就引脚冲突了,但在msm8953-mtp.dtsi里面就只使能了i2c3。

经过上述设置,你就可以在/sys/class/spi_master中看到如下:

二丶使用SPI和I2C

    spi和i2c都可以通过write/read来操作,那前提是/dev下得有相应的节点。在上节配置后,在msm8953-mtp.dtsi中使能了,在/dev下面会出现i2c设备节点,比如:

现在我们可以直接open("/dev/i2c-2")来对它进行操作了。但是经过上述配置,在/dev下面并不会出现spi设备节点,可以:

① 修改msmcortex_defconfig:将 SPIDEV选项 = y(原先是m)

② 修改msm8953-mtp.dtsi :

&spi6{

               status = "ok";

spidev@0{

               compatible = "spidev";

               reg = <0>;

               spi-max-frequency = <5000000>;

               #address-cells = <1>;

               #size-cells = <1>;

};

}

这样,就在/dev下产生spi节点了:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!