Yes - I'm here flailing about for clues (like person who can't swim in deep end of pool :-) ).
I know, this is more of an Orange Pi/ I2C_sunxi thing, but OPI and Armbian go together, so...
I have an oscilloscope that shows I2C-0 putting out clock bits with my LDC1314's '2A' address data just fine - up to the ninth clock.
On the ninth clock - which follows clocks for bits 6,5,4,3,2,1,0,R/W - and should be where the slave responds with the ACK/NACK bit, the SDA line goes to 1/2Vcc - like the master is fighting the slave. It's like the device is trying its best to pull it low for an ACK, but the Master (OPI pin PA12) is not letting go.
I have a picture - result of issuing 'i2cdetect -q 0 0x2A 0x2A' ...
It gets worse. When attempting a read of a register, it will hang at that 1/2Vcc level - like it latched up - for the duration of the subsequent read clock cycles.
That level is just squeaking in as a '0' (below 2V) - so it sees the ACK as an ACK, until it gets the data - which reads as 0's when it really is 1's.
Like this... ( 010 1010 R ?, ???? ???? 0, ?????11? 1)
I just installed all software for I2C three days ago - should be up-to-date.
I know you're thinking it ... WTF?
Why is the master not releasing SDA after the 8th clock?
Just thought more about what I was seeing... and now I'm really confused'.
SDA does begin to rise just before the ACK bit - at exactly the same relative time as the preceding bits - and plateaus off at 1/2Vcc.
There's no 'little-glitch' suggesting slave is attempting to assert a low, but can't.
But neither does the data rise for the 1's.
It's like the slave SDA pin is going into some sort of latch-up condition.
Really? A condition where it latches up with the open-collector transistor turned on so weakly that it equals the pull-up resistor? Which, by the way, I varied from 4.7K to 20K.
The 4.7K nudged the ACK up to a 'NACK' and 20K failed due to slow rise times - but the mid-level thing remained.
So, I might have to say 'Excuse me - never mind."
This might not be the right forum for this issue (cough-cough-Texas Instruments-cough-cough).
Oh- forgot to mention... this LDC1314 works wonderfully with a little Arduino-clone (ATmega328(8MHz) - and it's SDA ands SCL waveforms are crisp and proper.
I keep switching back and forth from Arduino(works great) to the OPI (fails miserably) hoping to get a clue - but there is this...
The Arduino's I2C bus speed is 100kHz. The OPI is 400kHz.
But... "So what?". It's rated for 400kHz and the timing/edges look good at 400kHz. And it's not like it's flaky - it fails quite consistently.
Oh - here's another thing - there are EIGHT of these chips on my PC board - they all behave equally good and bad.
It's not a 'just that chip' thing.
So, maybe this IS the right forum?!? May you now be as confused as I.
Have a nice day and be glad you're not me. :-)