S32G can not enter STANDBY mode cause by I2C

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

S32G can not enter STANDBY mode cause by I2C

Jump to solution
1,070 Views
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.

 

Labels (1)
Tags (3)
0 Kudos
1 Solution
1,005 Views
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.

View solution in original post

0 Kudos
4 Replies
1,052 Views
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 Kudos
1,046 Views
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 Kudos
1,006 Views
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 Kudos
1,001 Views
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 Kudos