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.
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.
已解决! 转到解答。
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.
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.
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.