2402070_en-US

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2402070_en-US

2402070_en-US

Replacement of some IIC drivers for K312 RTD3.0.0 to RTD6.0.0

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

Reyna_pan45_0-1785920300296.pngReyna_pan45_0-1785920300296.pngReyna_pan45_0-1785920300296.pngReyna_pan45_0-1785920300296.png



Re: K312 RTD3.0.0到RTD6.0.0 IIC部分驱动更换

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.

VaneB_0-1785963496184.pngVaneB_0-1785963496184.pngVaneB_0-1785963496184.pngVaneB_0-1785963496184.png

Sorry for any inconvenience this may cause.


BR, VaneB

Re: K312 RTD3.0.0到RTD6.0.0 IIC部分驱动更换

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.

Re: K312 RTD3.0.0到RTD6.0.0 IIC部分驱动更换

Hi @Reyna_pan45 

At this time, this is all the information available, as the investigation is still ongoing. We apologize for any inconvenience this may cause.

Re: K312 RTD3.0.0到RTD6.0.0 IIC部分驱动更换

Can NXP engineers solve this problem as soon as possible, as we encountered it during the development process and caused inconvenience, and our customers are also chasing us to solve it as soon as possible. Thank you!

タグ(1)
評価なし
バージョン履歴
最終更新日:
3 週間前
更新者: