Tool/software:
Dear TI Support,
We are experiencing an unexpected behavior with the I2C peripheral on the AM2634 device. Specifically, we have observed that the I2C waveform changes significantly depending on the priority of the task executing the transaction.
Here is the code snippet we are using:
/* Set default transaction parameters */
I2C_Transaction_init(&i2cTransaction);
/* Override with required transaction parameters */
i2cTransaction.writeBuf = outdata;
i2cTransaction.writeCount = length;
i2cTransaction.targetAddress = slaveAddress;
i2cTransaction.timeout = I2C_TIMEOUT_US;
// Write data
status = I2C_transfer(i2cHandle, &i2cTransaction);
We have recorded two oscilloscope captures for i2c data and clock (attached as videos) showing the following:
- When the task has high priority, the waveforms are "almost" consistent and repeatable.
- When the task has low priority, the waveforms vary significantly, as if the transfer is being interrupted or delayed.
This raises a few questions:
- Why is the I2C transfer affected by the task priority? Shouldn't the peripheral handle the entire transfer autonomously once initiated?
- Is the “fragmented” waveform observed in the low-priority case compliant with the I2C standard?
- Could this behavior be causing the I2C slave device to freeze, as we have observed in some cases?
We would appreciate your technical insight into this issue and any suggestions for resolving it.
Thank you for your support.
Alessandro Pacifici