This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Reset button doesn't work on some nRF52840 DK PCA10056 1.0.0 boards

The reset button doesn't seem to work on two of my PCA10056 1.0.0 development kits, but works on two others, and works on some earlier versions.

I tested by running the peripheral/uart and peripheral/blinky examples with SDK 15.0.0 and SDK 15.2.0

nrfjprog -f NRF52 -r works fine.

What could I be doing wrong to make the reset button not work on two specific boards? I'm not modifying the examples to not define CONFIG_GPIO_AS_PINRESET or anything.

Parents
  • Hi.

    Could you first measure if you have a signal on P0.18 when you click on RESET?

    And then measure SB42 when you click on RESET?

    You find SB42 close to DEBUG IN

    - Andreas

  • So on a board where the reset button does work, SB42 and P0.18 are around 3V unrelated to if I am pressing the reset button or not.

    When the board is off, I can see connectivity between P0.18 and SB42, but not to any of the pads of the reset button.

    I don't see a difference on boards that don't have a working reset button.

  • Hi.

    1. Are the kits connected with USB? Make sure your kit is connected with USB. Could you measure using a oscilloscope that there is a pulse from P0.18 when you press reset? I had a 30ms pulse.

    2. If there is no pulse, could you try modifying the following:

    The function found in line 94 in nrf_drv_usbd_errata.h in location nRF5_SDK_15.0.0_a53641a\components\drivers_nrf\usbd

    static inline bool nrf_drv_usbd_errata_type_52840_fp1(void)
    {
        return ( nrf_drv_usbd_errata_type_52840() &&
                   ( ((*(uint32_t *)0xF0000FE8) & 0xF0) == 0x10 ) &&
                   ( ((*(uint32_t *)0xF0000FEC) & 0xF0) == 0x00 ) );
    }
    

    Try changing it to:

    static inline bool nrf_drv_usbd_errata_type_52840_fp1(void)
    {
        return ( nrf_drv_usbd_errata_type_52840() &&
                   ( ((*(uint32_t *)0xF0000FE8) & 0xF0) == 0x20 ) && // note: modified from 0x10 to 0x20!
                   ( ((*(uint32_t *)0xF0000FEC) & 0xF0) == 0x00 ) );
    }


    There could be that this small bug in the SDK is causing your issue.

    - Andreas

Reply
  • Hi.

    1. Are the kits connected with USB? Make sure your kit is connected with USB. Could you measure using a oscilloscope that there is a pulse from P0.18 when you press reset? I had a 30ms pulse.

    2. If there is no pulse, could you try modifying the following:

    The function found in line 94 in nrf_drv_usbd_errata.h in location nRF5_SDK_15.0.0_a53641a\components\drivers_nrf\usbd

    static inline bool nrf_drv_usbd_errata_type_52840_fp1(void)
    {
        return ( nrf_drv_usbd_errata_type_52840() &&
                   ( ((*(uint32_t *)0xF0000FE8) & 0xF0) == 0x10 ) &&
                   ( ((*(uint32_t *)0xF0000FEC) & 0xF0) == 0x00 ) );
    }
    

    Try changing it to:

    static inline bool nrf_drv_usbd_errata_type_52840_fp1(void)
    {
        return ( nrf_drv_usbd_errata_type_52840() &&
                   ( ((*(uint32_t *)0xF0000FE8) & 0xF0) == 0x20 ) && // note: modified from 0x10 to 0x20!
                   ( ((*(uint32_t *)0xF0000FEC) & 0xF0) == 0x00 ) );
    }


    There could be that this small bug in the SDK is causing your issue.

    - Andreas

Children
Related