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: 
1,043 Views
Registered: ‎07-25-2017

ADV7511 & I2C on KCU116

Jump to solution

Hello everyone,

I am trying to create a design making use of HDMI output on kcu116 evaluation board. The problem is that this board has different type of connection to the I2C bus. Previously I was using vc707 where ADV7511 was connected via 1-to-8 switch (0x74) channel 5, 0x39 and I successfully managed to run it.

 

Here however ADV7511 is not existing directly on the I2C bus architecture scheme (ug1239 p.55) but there are entries in the Master Contraints File Listing:

 

#HDMI IIC
set_property PACKAGE_PIN AE15 [get_ports "IIC_SDA_HDMI"] ;
set_property IOSTANDARD LVCMOS33 [get_ports "IIC_SDA_HDMI"] ;
set_property PACKAGE_PIN AD15 [get_ports "IIC_SCL_HDMI"] ;
set_property IOSTANDARD LVCMOS33 [get_ports "IIC_SCL_HDMI"] ;

 

So, in my design I added constraints:

 

set_property PACKAGE_PIN AE15 [get_ports "iic_rtl_sda_io"]
set_property IOSTANDARD LVCMOS33 [get_ports "iic_rtl_sda_io"]
set_property PACKAGE_PIN AD15 [get_ports "iic_rtl_scl_io"]
set_property IOSTANDARD LVCMOS33 [get_ports "iic_rtl_scl_io"]

 

where iic_rtl is the output from AXI_IIC (IIC) and AXI_IIC is conntected to Microblaze via interconnect.

 

Now I am trying to setup ADV7511 with this directly connected I2C bus and here my question arises:

 

How should I modify my old code (working with vc707) to make it communicate properly on kcu116?

 

My code is provided in attachments.

 

Many thanks for your advice and help.

0 Kudos
1 Solution

Accepted Solutions
Highlighted
1,319 Views
Registered: ‎07-25-2017

Re: ADV7511 & I2C on KCU116

Jump to solution

Hi @florentw,

 

I made the simplified version of my design: just MIG + MB + AXI IIC and copy-pasted the code I provided in the very first post (with the same constraints). Then I removed IIC switch choice in SDK code and... it seems to be working. I am able to write and read proper values. However exactly the same code is not working in the previous design - this is a kind of another story (I can recreate it based on this working piece).

 

Just one thing to clarify here (may be benefitial for the others):

 

By default AXI IIC uses 7-bit address mode so the address 0x39 (from UG) is in fact 0x72 from ADV7511 product page (0x39 << 1 = 0x72).

4 Replies
Moderator
Moderator
1,001 Views
Registered: ‎11-09-2015

Re: ADV7511 & I2C on KCU116

Jump to solution

Hi @pjurgielewicz,

 

Note I haven't read your code but base on the difference between the boards:

You might need to remove the code to control the switch and then use the direct I2C address for the ADV7511 which should be 0x72

 

Regards,


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
994 Views
Registered: ‎07-25-2017

Re: ADV7511 & I2C on KCU116

Jump to solution

Hi @florentw

thanks for your reply.

 

As you suggested I removed the code responsible for switch setup and hard-coded 0x72 as the address of ADV7511:

 

EepromIicAddr = 0x72;

 

but it is not working either.  EepromWriteByte() returns the number of bytes written to the device and in case of ADV7511 it should always be 1 byte. Whereas in the case the address is wrong it returns 255 - and this is what I receive. After EepromWriteByte() I am waiting 50000 cycles in a loop and then I try to read written value back. However I2C is not able to find anything at 0x72 and gets stuck in the while loop:

 

do {
		StatusReg = XIic_ReadReg(IIC_BASE_ADDRESS, XIIC_SR_REG_OFFSET);
		if (!(StatusReg & XIIC_SR_BUS_BUSY_MASK)) {
			SentByteCount = XIic_DynSend(IIC_BASE_ADDRESS,
                                    EepromIicAddr,
                                    (u8 *) &Address,
                                    sizeof(Address),
                                    XIIC_REPEATED_START);
		}

	} while (SentByteCount != sizeof(Address));

I am wondering how did you find 0x72 as the address of ADV7511 in this setup?

 

0 Kudos
Moderator
Moderator
989 Views
Registered: ‎11-09-2015

Re: ADV7511 & I2C on KCU116

Jump to solution

Hi @pjurgielewicz,

 

I have found the address 0x72 in the ADV7511 SW programming guide:

ADV.PNG

 

However, I might be wrong because from some UG for Xilinx board, the address after the swith is 0x39 (example with KCU105):

KCU105.PNG

 

 


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
Highlighted
1,320 Views
Registered: ‎07-25-2017

Re: ADV7511 & I2C on KCU116

Jump to solution

Hi @florentw,

 

I made the simplified version of my design: just MIG + MB + AXI IIC and copy-pasted the code I provided in the very first post (with the same constraints). Then I removed IIC switch choice in SDK code and... it seems to be working. I am able to write and read proper values. However exactly the same code is not working in the previous design - this is a kind of another story (I can recreate it based on this working piece).

 

Just one thing to clarify here (may be benefitial for the others):

 

By default AXI IIC uses 7-bit address mode so the address 0x39 (from UG) is in fact 0x72 from ADV7511 product page (0x39 << 1 = 0x72).