NXP

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

2019-07-12 11:46发布

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,收工。