cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
bsutin
Observer
Observer
3,782 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
Reply
1 Solution

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

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
Reply
1 Reply
bsutin
Observer
Observer
4,369 Views
Registered: ‎04-08-2009

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
Reply