AnsweredAssumed Answered

I2C Slave Nack [ADuCM350]

Question asked by gimbal on Jun 3, 2018

I'm trying to establish communication between the ADuCM350 and another ARM Cortex M3 part that I have used many times and am familiar with. The ADuCM350 is the slave in my setup. I can use the other micro to write to the ADuCM but when I try to read from it the ADuCM NACKs the address. I'm using the following calls:


adi_I2C_SlaveTransmit(hDevice, (slaveID >> 1), pTxData, 10 )

adi_I2C_SlaveReceive(hDevice, (slaveID >> 1), rxBuff, 100, false )


Also, the only interrupt event I ever see is the STOP event. No Rx / Tx complete or other events. Is there a better example available than the limited loopback test that shows how to setup the I2C peripheral or some documentation on the API?



void i2c_initialize ( void )
/* Initialize I2C driver */
if (ADI_I2C_SUCCESS != adi_I2C_SlaveInit(ADI_I2C_DEVID_0, &hDevice)) {
FAIL("FAIL: adi_I2C_MasterInit");

/* setup a callback */
if (ADI_I2C_SUCCESS != adi_I2C_RegisterCallback(hDevice, i2c_handler, hDevice)) {
FAIL("FAIL: adi_I2C_MasterInit");

/* disable blocking mode... i.e., poll for completion */
if (ADI_I2C_SUCCESS != adi_I2C_SetBlockingMode(hDevice, false)) {
FAIL("FAIL: adi_I2C_SetBlockingMode");

/* Wait for message */