12-10-2014 11:12 AM
I was trying to make the Zynq(Microzed) communicate with the Tegra Processor using I2C. The Tegra will be my master. The master is sending data but the slave doesnt detect it. The master is working fine. I feel the problem is with the Slave address and the memory address in Slave. I am currently using 0x70 as the Slave address and 0x41600000 is the memory address register in the Slave. I found this in one of the examples given by XIlinx. I am also using a Interrupt Controller for the interrupts. I have attached the screenshot of block diagram and the xparameters.h file below
Please Help me if you have any knowledge about this.
12-11-2014 03:46 PM
12-29-2014 12:47 PM
Thanks for the reply. It helped. The master was not sending something that i was expecting.
I have a small problem though. When the master sends a wrong command the I2c Bus is going into Busy state and it never recovers without having to restart the Zynq. How do i get the bus back from busy mode.
I don't have a solution but some suggestions to check: if you have a scope make sure that you are getting the i2c transaction you think you should receive on the wire. There is a chance the master is sending something you don't expect; especially verify the frame & the address used. Then check that the slave is configured properly, with the right address size and value and enable interrupts on receive. One thing you can do is to generate the bit stream you see on the wire in a simulation and see if the slave responds correctly.
Finally check your C code to make sure you are initializing the i2c device. If you are not getting an interrupt when the host sends a packet, you can keep polling the receive status register and see if anything pops up there.
12-29-2014 06:33 PM
12-29-2014 06:43 PM
The Slave is holding the bus high. For the I2c in PS, is there a software reset. I tried using XIicPs_Reset() . This is not working.
what exactly is the busy state? if the slave doesn't ack the host is supposed to time-out, retry etc. is your slave holding the clock low or something like that? if so you need to fix your slave so that it releases the wires and lets the master continue.
12-30-2014 12:26 PM