I am writing my own functions for I2C multimaster communication, for the K64F microcontroller. Strangely, I noticed that the ARBL (Arbitration Lost) bit is never being set. I have written a small program to send data from a FRDM-K64F to an EEPROM, and a testing program in another FRDM-K64F to detect the START event and emulate an I2C transfer to the same EEPEOM (Same ID), but with a higher priority for the next byte. It means that the tested K64 should set ARBL and switch to slave mode. I have verified the correct behavior of the testing board using a logic analyzer. My tested board should send the following hexa bytes: A0 (ID 50 shifted left), 20, AA, 55; and the testing board should send A0, 10, AA, 55. At the bus I get A0, 10, AA, 55, which means that my testing board got the control of the bus and the testing board should release it, but my program does not set my user arbitration flag, which is set when the ARBL flag is tested within my I2C ISR.
Has anyone found any problem with the ARBL bit in the K64 controller? I am using I2C1.