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: 
Observer bsutin
Observer
3,696 Views
Registered: ‎04-08-2009

i2c Microblaze driver recovery from dropped clock

Jump to solution

I am using the xps_iic 2.00a i2c core with the SDK Microblaze drivers to communicate with Analog Devices ADM1911, which have no hardware reset.  When a clock pulse gets lost, the ADM1911 can be left holding the data line low, which signals that the bus is busy.  The only way to clear the ADM1911 is to send 16 clock pulses.  How do I make the driver send out these pulses?  Do I have to deal directly with the IP core?

 

Thanks in advance,

 

Brian

Tags (3)
0 Kudos
1 Solution

Accepted Solutions
Highlighted
Observer bsutin
Observer
4,282 Views
Registered: ‎04-08-2009

Re: i2c Microblaze driver recovery from dropped clock

Jump to solution

Solution: Send 0x21, 0x00, and 0x01 successively to the xps_iic CR register with 5 us pauses in between. 0x21 puts the core in repeated start, dropping the clock line.  0x00 and 0x01 put the core in and out of slave mode, restoring the clock.

 

Brian

View solution in original post

0 Kudos
1 Reply
Highlighted
Observer bsutin
Observer
4,283 Views
Registered: ‎04-08-2009

Re: i2c Microblaze driver recovery from dropped clock

Jump to solution

Solution: Send 0x21, 0x00, and 0x01 successively to the xps_iic CR register with 5 us pauses in between. 0x21 puts the core in repeated start, dropping the clock line.  0x00 and 0x01 put the core in and out of slave mode, restoring the clock.

 

Brian

View solution in original post

0 Kudos