S32G can not enter STANDBY mode cause by I2C

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

S32G can not enter STANDBY mode cause by I2C

跳至解决方案
1,122 次查看
leo_liu2
Contributor III

Hi ,

    Recently,i debug the standby and wakeup function of S32G and VR5510.I have configured I2C3 and use it to communicate to a slave device.All my program run normally when S32G and VR5510 working in run mode.When i let the S32G and VR5510 enter standby mode ,it's enter fail (STBY_PGOOD pin keep HIGH).I am sure that i have deinit the I2C and it's interrupt.

    Though debuging,I found that it may cause by the I2C transmit funtion.

 

leo_liu2_1-1676972837271.png

    Just as the figure show above,I use the api function I2c_Ip_MasterSendDataBlocking to transfer data .There are two different result cause by input different blocking time parmeter.

   (1) When I set the blocking time to 500.In this case,S32G can not enter standby mode but I2C data can transfer normally.(I have try other nonzero  value,it still can not work)

   (2)When I set the blocking time to 0.In this case,S32G can  enter standby mode and can be wakeup  by the wakeup pin i set,but I2C data can not transfer normally.

 

      In summary,it seems that the blocking time i set in I2c_Ip_MasterSendDataBlocking can affect the S32G enter standby mode.Can you tell me the reason why the blocking time can affect S32G enter standby mode and how to solve it?

Addition:the OSIF_COUNTER i use is OSIF_COUNTER_DUMMY.

 

标签 (1)
标记 (3)
0 项奖励
1 解答
1,057 次查看
Daniel-Aguirre
NXP TechSupport
NXP TechSupport

Hi,

Thanks for this feedback.

Are you following any steps/guide to execute this mode transition? Is this a multi-core application? Which RTD/IDE version are you working with? Are you working with an NXP board?

Also, once you send with "I2c_Ip_MasterSendData()" (non-blocking) are you verifying that the message if being transferred correctly? i.e. using the following routine:

while(((I2c_Ip_MasterGetTransferStatus(I2C4_MASTER)) == I2C_IP_BUSY_STATUS) && (timeout > 0))
{
timeout--;
}

As for the 0 timeout not transferring the I²C data correctly, given it is a time out, it may be returning an error.

We understand that your standby-mode transition is working as expected, it behaves like this only when you are adding I2C3 to this project, is this correct?

Please, let us know.

在原帖中查看解决方案

0 项奖励
4 回复数
1,104 次查看
Daniel-Aguirre
NXP TechSupport
NXP TechSupport

Hi,

We may not know the application itself, but we understand that you are sending the I2C message (in blocking mode) and at the same time trying to go to standby mode.

If so, then the blocking function is (as implied) blocking the processor to changing states. Is this same behavior happening with a non-blocking function?

Please, let us know.

0 项奖励
1,098 次查看
leo_liu2
Contributor III

Hi,

    Thanks for your reply firstly,i also try to send data through non-blocking API function,but it also happen.

0 项奖励
1,058 次查看
Daniel-Aguirre
NXP TechSupport
NXP TechSupport

Hi,

Thanks for this feedback.

Are you following any steps/guide to execute this mode transition? Is this a multi-core application? Which RTD/IDE version are you working with? Are you working with an NXP board?

Also, once you send with "I2c_Ip_MasterSendData()" (non-blocking) are you verifying that the message if being transferred correctly? i.e. using the following routine:

while(((I2c_Ip_MasterGetTransferStatus(I2C4_MASTER)) == I2C_IP_BUSY_STATUS) && (timeout > 0))
{
timeout--;
}

As for the 0 timeout not transferring the I²C data correctly, given it is a time out, it may be returning an error.

We understand that your standby-mode transition is working as expected, it behaves like this only when you are adding I2C3 to this project, is this correct?

Please, let us know.

0 项奖励
1,053 次查看
leo_liu2
Contributor III

Hi,

   Thanks for your reply,my problem is solved.It's caused by the module in our product,i forget to power it down before enter the standby mode.

0 项奖励