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!

Reply

PS i2c (from PMOD) mostly working on microzed

Adventurer
Posts: 65
Registered: ‎05-29-2015

PS i2c (from PMOD) mostly working on microzed

I'm having some trouble connecting the microzed PS i2c port (from the PMOD connector MIO-10 and MIO-11) to an external ADC (CS5368). The microzed needs to send some i2c commands to the ADC to configure it. I have it mostly working, in that I can read and write to all the registers, but sometimes it fails with a: "write before read: No such device or address" error.

 

Snippet of output from our code is attached, we ran it three times with varrying results:

 

Instance 1:

   Failed to read register 0x00 on the first register dump, and then failed to read register 0x08 in the second. The write was fine.

 

Instance 2:

   Failed to read 0x06 on second register dump, write was fine.

 

Instance 3:

   Success every time.

 

We are using the "cdns,i2c-r1p14" driver (i2c-cadence driver). Here's our device tree entry:

                i2c0: i2c@e0004000 {
                        bus-id = <0>;
                        clock-frequency = <100000>;
                        clocks = <&clkc 38>;
                        compatible = "cdns,i2c-r1p14";
                        interrupt-parent = <&intc>;
                        interrupts = <0 25 4>;
                        reg = <0xe0004000 0x1000>;
                        xlnx,has-interrupt = <0x0>;
                        xlnx,i2c-reset = "";
                };

 

Here's a snap of the PS configuration:

i2c_snap.PNG

 

 

Is it not working because I don't have an interrupt assigned to it (has-interrupt <0x00>)? How do we assign the i2c0 interrupt from the PS to my interrupt controller? Do I even need to do that? We are using 10K external pull-ups, could that be the issue?