Other Parts Discussed in Thread: IWR1642
Hello,
I am using an IWR1642 EVM as an I2C slave to send data to a master Arduino controller.
Using the I2C driver and the Slave test provided in the SDK, I was able to make the IWR slave write data to the bus, and the data was received on the Arduino side.
However, when I call the same write function,
I2CSlave_write(I2CSlave_Handle handle, const void *buffer, size_t size)
on the MSS core during the execution of the mmwave demo, I get a failure in the DSS core.
Here is the error on console output:
{module#8}: "../dss_main.c", line 264: error {id:0x10000, args:[0x8139b4, 0x8139b4]}
xdc.runtime.Error.raise: terminating execution
This is the line:
/* Check if previous chirp processing has completed */ DebugP_assert(gMmwDssMCB.dataPathObj.interFrameProcToken == 0);
Here is the call stack during error:
I am not sure at all why this would be happening since the i2c write function is running on a the MSS core. However, the call stack does point to something going wrong with the interrupts. Is it because when the DSS finishes processing a frame, it signals an interrupt to the MSS so MSS can receive it, but in the case of i2c, the i2c driver is blocking mode, so it makes MSS unresponsive to the interrupt originating from DSS? I will look into this further, and hopefully you can share your perspective.
Thank you,
Herman