AnsweredAssumed Answered

KSDK 2.0 I2C Slave Interrupt - Works except can't read multiple bytes

Question asked by Lucas Magasweran on Oct 18, 2016
Latest reply on Nov 7, 2016 by isaacavila

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.

 

SDK: http://cache.nxp.com/lgfiles/sdk/SDK_2.0_FRDM-KL27Z.zip 

 

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

singe byte read with address

 

Multi-byte read: S 0x77 [A] 0x02 [A] S 0x77 [A] [0x03] A

multi-byte read

 

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

Outcomes