zynq-7000系列基于7015的linux下 I2C-bus switch的扩展使用

来源:互联网 发布:电脑淘宝怎么用淘口令 编辑:程序博客网 时间:2024/05/29 00:34

zynq-7000系列基于7015的linux下 I2C-bus switch的扩展使用

                             作者:卢浩  

                                  时间:2017.3.6

                                   转载请注明出处

有一些用户在嵌入式开发过程中,存在I2C不够用的情况,这时候我们就需要扩展多个I2C接口了。这里我是基于7015的I2C0扩展的8个I2C,用PCA9548A8-channel I2C-bus switch with reset。

http://www.nxp.com/documents/data_sheet/PCA9548A.pdf


我们可以看一下PCA9548的地址信息:如下图


1110A2A1A0,我的设计中,A2 A1 A0都接了GND,即为0 0 0,那么地址就是1110000,16进制为0X70,请看原理图:



打开zynq-zed.dts文件,添加如下:

        aliases {                ethernet0 = &gem0;                i2c0 = &i2c0;                i2c1 = &i2c1;                serial0 = &uart1;                spi0 = &qspi;                mmc0 = &sdhci0;        };
&i2c0 {        status = "okay";        clock-frequency = <100000>;        pinctrl-names = "default";        pinctrl-0 = <&pinctrl_i2c0_default>;        #address-cells = <1>;        #size-cells = <0>;        pca9548: mux@70 {                compatible = "nxp,pca9548";                #address-cells = <1>;                #size-cells = <0>;                reg = <0x70>;        };};

&pinctrl0 {pinctrl_i2c0_default: i2c0-default {                mux {                        groups = "i2c0_0_grp";                        function = "i2c0";                };                conf {                        groups = "i2c0_0_grp";                        bias-pull-up;                        slew-rate = <0>;                        io-standard = <1>;                };        };  };
然后配置内核添加对pca9543的支持,如下:

<*> Philips PCA954x I2C Mux/switches



编译内核和dts,收工。







0 0
原创粉丝点击