I2C Write/Read at 3.4Mhz not achivable using Wire on MKR Zero?

Hi,
I'm trying to achieve a simple goal of reading/writing over I2C with rate of 3.4Mhz.
I'm using Arduino MKR Zero (Datasheet) and my slave I2C device is Microchip Power accumulator. (datasheet)

Wire.setClock(3400000); does not work and the maximum I see (using Logic) is 1.8Mhz.
What am I doing wrong?

EDIT:
I understand now that maybe I'll have to tweak the SAMD libraries in order to increase the clock rate.
I have trouble finding 1 simple example of how to do it.
any help?

That datasheet says maximum is Fast Mode Plus - ie, 1MHz, or 1000000 for the setClock:

So it's actually going faster than the stated maximum?

If you get it going that speed I would expect it to be very unreliable. Those specifications are there for a reason and the part is guaranteed to meet that. Going outside the specification probably voids the warranty and what happens when the temperature changes?

Hi,
Thanks for replying :slight_smile:
This is what I read in the datasheet:

and also:

Interesting!

But it does require specific settings in the device to enable that - by default, it's disabled.

Have you enabled it?
Presumably you have to start at a lower speed in order to change the setting?

Do Microchip provide any app notes on this?

Does it require other hardware changes - like lower pullups?

It's probably going to be even more sensitive to bus capacitance; could be an issue if you're using a solderless breadboard ...

Yes.
but it's not enough to make the arduino MCU work in 3.4Mhz.

I have a second project where I try to sample the PAC device using FTDI4222 USB to I2C bridge.
in this case - after setting bit and re initializing the lib with 3.4Mhz it works perfectly!