Hi all,
I've got a board where I need to manually massage an I2C bus's SDA and SCL bits. Reading the OMAP35x TRM section 18.4.9 it seems that I should be able to do this quite simply. Doing some googling I found some code for the OMAP1510/5910 :
http://svn.openpma.org/svn/openpma/trunk/src/linux-pma/drivers/media/video/omap/sbus_sccb.c
Where someone has been using this interface - I assume successfully. So, I've copied the process on my OMAP3503 :
- Enabled I2C2 FCLK & ICLK
- Muxed I2C2_SDA and I2C2_SCL to Mode 0 / No Pullup / Input enabled
- Set SYSTEST Bits : ST_EN and FREE
- Set SYSTEST TMODE = 3
- Looped
- SET SCL_O and SDA_O low
- Pause 1 sec - dump SYSTEST value
- SET SCL_O and SDA_O high
- Pause 1 sec - dump SYSTEST value
Looking at the output I get the two SYSTEST values as 0xF00A (for low) and 0xF00F (for high). Probing the two lines shows around 0.18v (with the external bus pullups removed). I know I'm looking at the right lines as if I change the code to re-mux as GPIO's and wiggle them that way instead I can see that fine.
I guess I'm missing something subtle to do with pincfg, clocking or other I2C setup regs required. Has anyone got any experience with this?
Best Wishes,
David Peverley