AnsweredAssumed Answered

Issue with I2C Driver

Question asked by HARI KRISHNA KAPPARAPU on Sep 7, 2018
Latest reply on Oct 4, 2018 by Cristian Zamfirescu


I am seeing a problem with I2C Driver of S32K148.

Driver is properly initialized and I could see that the peripherals connected on I2C bus are communicating. That gives me confidence that the interrupts are working and Hardware is correctly connected.


But here is the problem:

After sometime (may be after a minutes of continuous communication), the driver stops communicating with peripherals by hitting the break condition through DEV_ASSERT at master->rxBuff != NULL as highlighted in the source code below.


I modified this driver code with a microsecond resolution counter instead of OSIF calls for timeouts for these blocking calls. Modified Driver files are attached with this post for reference.


static void LPI2C_DRV_MasterHandleReceiveDataReadyEvent(uint32_t instance, LPI2C_Type *baseAddr, lpi2c_master_state_t *master)
DEV_ASSERT(g_semI2cMasterFlag[instance] != FLAG_UNKNOWN);

/* Received data ready */
DEV_ASSERT(master->rxBuff != NULL);


FYI, I am working with S32K148EVB using S32DS.


Please suggest your recommendations to solve this issue.