Hi Giorgos
Unfortunately there is a not a lot in the erratas as I see eg. https://www.nxp.com/docs/en/errata/KINETIS_L_1N71K.pdf
but there are many threads about problems:
eg.
https://community.nxp.com/message/460444
https://community.nxp.com/thread/377611
and I was communicating with someone from NXP a couple of years ago responsible for some updates. Although the migration guide was changed to include a few details it looks like that they are not considered as actual chip errata.
Quote:
The migration guide (AN4997) has indeed been updated to include double-buffered I2C requirements - Rev. 1 from 4/2016.
The change is:
First Revision:
5.9.1 Software impact
There is no software impact when using the updated I2C module.
Rev. 1:
5.9.1 Software impact
There is a significant software impact due to the double-buffering feature. Look at the double-buffering
mode section and the flowchart related to the I2C interrupt routine at the end of the I2C module section in
the corresponding MCU reference manual.
Consider these notes:
• Check the EMPTY status flag before writing to the I2C_D register and wait for the EMPTY flag
to write the second value to the I2C_D immediately after the first write (to apply the
double-buffering feature).
• The master must send the NACK before the repeat start in the buffering mode.
• The I2C module on the KLx6/KL34 MCUs must wait for the I2C_D register to be read to start the
next transaction. With the KL43/KL33/KL27/KL17 I2C module in the buffer mode, the TCF is
cleared automatically by the internal reading or writing into the I2C_D data register. You don’t
have to wait to read from/write to the I2C data register manually in the Rx/Tx mode.
• A delay is required during the repeated start sequence due to the EMPTY flag. Send the repeat start,
apply a small delay (depends on the I2C clock selection) before waiting for the EMPTY flag, and
then write to the I2C_D register.
I saw that some delays were built into the NXP drivers but without any explanation of what they were working around or whether they are needed. Delays in drivers tend to change timing slightly to maybe avoid a race state but also look to be random attempts to change some undesired behavior that may or may not work.
In fact I never saw I2C clock glitches so maybe you have something in your system that is changing the clock used by the I2C module for a short time that makes it do this (?)
Regards
Mark