GPIO power failure

Hi,

Our products encountered some problems when doing air upgrades.

  • chip: nRF52832
  • sdk: 17.0.2

The picture above is the switch circuit part of our schematic diagram

When the application program receives the user's DFU instruction, it will call the NVIC_SystemReset(); function to reset the chip. At this time, all the pins on the chip will restore the default state, including my POWER_CTRL. Battery will stop supplying power to the chip once the POWER_CTRL pin is powered off. At this time, the capacitor to ground will supply power to the chip for a short time to ensure that the chip can enter the BootLoader. After entering the BootLoader, I will immediately pull the POWER_CTRL pin high.

The phenomenon I have encountered now is that the low level duration of the 14.0 sdkPOWER_CTRL pin is shorter, and the 17.0.2 version of the sdkPOWER_CTRL low level lasts longer. I would like to ask whether the 17.0.2 version of the SDK will do more before entering the BootLoader?

  • Hi,

     

    The phenomenon I have encountered now is that the low level duration of the 14.0 sdkPOWER_CTRL pin is shorter, and the 17.0.2 version of the sdkPOWER_CTRL low level lasts longer.

    As per your scope pictures, the time is approx. 400 us in both cases, where one of them is marginally longer at GND level, but has a different GND->VDD edge slope.

    This can indicate that the current consumption in RESET state is different in the two scenarios. However, the voltage level in newer SDK is dropping less than the older version. 

     

    I would like to ask whether the 17.0.2 version of the SDK will do more before entering the BootLoader?

    At the time of executing a soft-reset, you go through the MBR located at address offset 0x00, which is the logic that starts up the bootloader.

    Prior to you entering main, you will clear and initialize your RAM areas that are used by global variables, setup the stack, and execute the system_nrf* files (ie. errata workarounds). Timing is therefore dependent on how much RAM you use, how many global variables are initialized to a non-zero value, and so forth. If you have updated the system_nrf files, you can also add execution time to enable newer errata workarounds than the SDK v14 implementation has.

     

    Kind regards,

    Håkon

Related