I am using a PSoC 4200 device connected to an RTC (DS3231) and an OLED display (SSD1306). The PSoC is supposed to read time from the RTC and then update the display. After updating the display, PSoC goes to Hibernate power mode and wakes up when the RTC gives an interrupt.
The issue is that the code works fine when the PSoC is powered on (booted) but once it goes to hibernate mode and comes back to active mode after the interrupt it tries to access I2C addr of 0x00 which is wrong and hence the whole code fails. to update the display, and this keeps repeating after every time PSoC wakes up from hibernate. There are two I2Cs in design one for RTC and another one for display, this issue is only seen with the I2C connected to the display,.
This issue is not seen only when the device comes back to active from hibernate, this issue is not seen in the wakeup from DeepSleep of sleep mode.
PSoC 4 MCU
Hi @rahulrajsharma ,
Can you please let us know if you are resetting the OLED display after waking up PSoC 4 device from the hibernate mode?
Also, can you try giving delay after putting the device into hibernate mode and then check the results?
As mention the I2C block is trying to access a wrong addr (please check the attached PulseView logs) after coming back from hibernate, I have tried using a delay but it doesn't help.
Now since PSoC is trying to talk to a wrong I2C addr, I can't do anything with the display. Please also note the display doesn't need a reset as the power to display was not removed.