UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
203 Views
Registered: ‎08-12-2019

why i2cdetect does not recognize the i2c port expander on zc706?

Screenshot from 2019-08-25 09-56-57.png
I2C expander should show up at 0x21 according to UG954 for ZC706, but surprisingly not.
 
I have enabled GOP-based I2C multiplexer/arbitration with petalinux-config -c kernel, even manually added CONFIG_I2C_MUX_GPIO=y to project-spec/configs/config. I am using Vivado/petalinux 2018.3
 
Here is the i2c part of zc706.dtsi, which does include the expander at 0x21, switch position 3.
 

&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c0_default>;

i2c-mux@74 {
compatible = "nxp,pca9548";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x74>;

i2c@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
si570: clock-generator@5d {
#clock-cells = <0>;
compatible = "silabs,si570";
temperature-stability = <50>;
reg = <0x5d>;
factory-fout = <156250000>;
clock-frequency = <148500000>;
};
};

i2c@1 {
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
adv7511: hdmi-tx@39 {
compatible = "adi,adv7511";
reg = <0x39>;
adi,input-depth = <8>;
adi,input-colorspace = "yuv422";
adi,input-clock = "1x";
adi,input-style = <3>;
adi,input-justification = "evenly";
};
};

i2c@2 {
#address-cells = <1>;
#size-cells = <0>;
reg = <2>;
eeprom@54 {
compatible = "atmel,24c08";
reg = <0x54>;
};
};

i2c@3 {
#address-cells = <1>;
#size-cells = <0>;
reg = <3>;
gpio@21 {
compatible = "ti,tca6416";
reg = <0x21>;
gpio-controller;
#gpio-cells = <2>;
};
};

i2c@4 {
#address-cells = <1>;
#size-cells = <0>;
reg = <4>;
rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};

i2c@7 {
#address-cells = <1>;
#size-cells = <0>;
reg = <7>;
ucd90120@65 {
compatible = "ti,ucd90120";
reg = <0x65>;
};
};
};

Any suggestions? Thanks.
0 Kudos
3 Replies
Scholar drjohnsmith
Scholar
187 Views
Registered: ‎07-09-2009

Re: why i2cdetect does not recognize the i2c port expander on zc706?

can you put scope on the I2C lines to see if they are toggling as you expect
<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos
116 Views
Registered: ‎08-12-2019

Re: why i2cdetect does not recognize the i2c port expander on zc706?

You mean there could be something wrong with the i2c port expander? Things must be working fine from the pocessor all the way to the i2c switch, otherwise the other components on the same switch, e.g. rtc, would not work. Since rtc works fine (it returns the right date/time via cat), maybe the port expander is damaged?

 

0 Kudos
Scholar drjohnsmith
Scholar
83 Views
Registered: ‎07-09-2009

Re: why i2cdetect does not recognize the i2c port expander on zc706?

unlikely the port expanded is damaged just by a scan,

Different chips have different voltage levels, so if the I2C bus is not correct, one chip could work by luck and another not.

One thing going forward, Remember the I2C expanders with an address, are an analog switch., switching on all ports connects all the down stream ports together, Watch out for mutliple pull up resistors or same address on multiple ports, The expander can then lock up as the I2C bus is locked,

out of interest, why did you not scan the complete I2C address range ?

<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos