Here is an implementation of an I2C EEPROM slave based on the KSDK_2.0.0-FRDM-KL27Z/boards/frdmkl27z/driver_examples/i2c/interrupt project requested in I need an I2C Slave sample . It uses 1 byte data addresses and supports reading an writing simulating an EEPROM or other register mapped device device.
Single and multi-byte writes work. Single and no data address byte reads work. However, multi-byte reads do not work.
Single-byte read: S 0x77 [A] 0x02 [A] S 0x77 [A] [0x03] N P
Multi-byte read: S 0x77 [A] 0x02 [A] S 0x77 [A] [0x03] A
I suspect my issue is in how/where I handle the ACK/NAK from the host after writing the data to the I2C->D register.
Attached is my code which to replace the i2c_interrupt.c in the KSDK_2.0.0-FRDM-KL27Z/boards/frdmkl27z/driver_examples/i2c/interrupt project.
Original Attachment has been moved to: i2c_interrupt.c.zip