Hi
I'm currently encountering an IIC slave clock suspension issue in RTD 3.0.0, which I've found to be related to the IIC clock extension function. Following a recommendation from the FAE, it was stated that this issue doesn't exist in the 6.0.0 driver. Due to project timelines and based on the principle of minimal changes, I will...The IIC driver files were extracted from version 6.0.00 and placed in version 3.00.In the RTD, I found it wasn't working properly. After the changes, the IIC couldn't exit the interrupt once it received data.
I would like to ask:
1. Has anyone tried this operation (3.00RTD)?(I've replaced some drivers with version 6.00). Do you support this change? Do I have any other related drivers that haven't been ported yet?
2. I discovered an IIC change item in version 6.0.00, which was fixed in version 4.00. Version 5.00 inherited this fix, but version 6.00 reverted to the logic of version 3.00. However, in the 6.00 release...There is no related description in the notes. Did version 6.00 make other changes to fix this bug?
static void Lpi2c_Ip_SlaveIRQHandlerInternal(uint8 Instance)
{
LPI2C_Type *BaseAddr;
Lpi2c_Ip_SlaveStateType * Slave;
boolean StopDetect = FALSE;
boolean RepeatStartDetect = FALSE;
BaseAddr = Lpi2c_Ip_pxBase[Instance];
Slave = Lpi2c_Ip_pxSlaveState[Instance];
StopDetect = LPI2C_Get_SlaveSTOPDetectEvent(BaseAddr);
RepeatStartDetect = LPI2C_Get_SlaveRepeatedStartEvent(BaseAddr);
/* Check address valid and tx/rx event */
Lpi2c_Ip_SlaveCheckDataEvent(Instance, BaseAddr, Slave);
if (RepeatStartDetect)
{
Slave->RepeatedStarts++;
if ((1U == Slave->RepeatedStarts) && (Slave->Is10bitAddress)) // This has been modified in version 4.00
{
RepeatStartDetect = FALSE;
LPI2C_Clear_SlaveRepeatedStartEvent(BaseAddr);
}
}
if ((TRUE == StopDetect) || (TRUE == RepeatStartDetect))
{
/* Stop/repeated start detected */
Lpi2c_Ip_SlaveStopDetectHandler(BaseAddr, Slave);
if (TRUE == StopDetect)
{
/* reset repetead starts for a new transfer */
Slave->RepeatedStarts = 0U;
}
}
/* Check for slave errors */
Lpi2c_Ip_SlaveCheckErrorEvent(BaseAddr, Slave);
}
Related bug: ARTD-6112
Hi @Reyna_pan45
We do not recommend mixing code from different RTD releases, as this combination has not been validated. For this reason, we can not guarantee the expected functionality or behavior when components from different releases are used together.
Regarding ARTD-81841, in the most recent releases this issue is tracked under ARTDCC2-91. It is currently a known issue and, unfortunately, there is no available workaround at this time, as shown in the image below.
Sorry for any inconvenience this may cause.
BR, VaneB
Hi @VaneB
Is there any more relevant description about this bug? I found during testing that modifying item ARTD-81841 can alleviate some issues (when frequently switching interrupts), even if the root cause cannot be identified.