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

UART DFU for nRF52833

HW setup is my boart connected to a windows10 PC with an uart link.

I tried secure_bootloader_pca10100_uart_ses_nRF5SDKThreadv4.1.0.zip example, with some modification for my board, es UART pins in custom_board.h

#define RX_PIN_NUMBER 7
#define TX_PIN_NUMBER 6
//#define TX_PIN_NUMBER 35
#define CTS_PIN_NUMBER 8
#define RTS_PIN_NUMBER 40
#define HWFC true

To validate uart pins changes I tested the uart example in examples\peripheral\uart\pca10100\blank\ses and it works fine both without HW flow control and with HW flow control.

When I send 

nrfutil dfu serial -pkg blinky_pca10100_mbr.zip -p COM5 -b 115200

it seems all freezed: RTS signal from PC goes low, but nRF52833 RTS pin remains high. If I force low that signal PC starts transmitting.

A second question

The DFU example uses (in sdk_config.h) Button for entering DFU mode and set NRF_BL_DFU_ENTER_METHOD_BUTTON_PIN to 25: in my board I cannot access to that pin and I want to use PIN0.2.

I set in custom_board.h

#define BUTTON_4       2

and in sdk_config.h

#define NRF_BL_DFU_ENTER_METHOD_PINRESET 1

I add Enter DFU mode on pin reset

Is it correct ?

How can I debug the DFU example ?

Best Regards

Parents Reply Children
  • For heart_rate_demo, the smartphone Bluetooth had a problem I suppose, because

    I tried

    nrfjprog -f NRF52 --chiperase --program ..\..\tools\heart_rate_demo\heart_rate_demo\heart_rate_demo.hex
    Parsing hex file.
    Erasing user available code and UICR flash areas.
    Applying system reset.
    Checking that the area to write is not protected.
    Programming device.

    and it is ok.

    About the other question, reset seems to have no effect while application firmware is running: with reset button is not possible to enter in bootloader mode.

    Best Regards

  • rcerati said:
    About the other question, reset seems to have no effect while application firmware is running: with reset button is not possible to enter in bootloader mode.

     Sounds like the pinreset is not working then. Please double check that the reset button on your board is connected to P0.18 and also read out UICR.PSELRESET[n] to verify that the register is set. E.g., nrfjprog --memrd 0x10001200.

  • nrfjprog --memrd 0x10001200
    0x10001200: 00000015                              |....|

    and

    nrfjprog --memrd 0x10001204
    0x10001204: 00000015                              |....|

    It seems not setted the right pin

    shuld I reprogram the register with

    nrfjprog --memwr 0x10001200 --val 0x12 --verify

    and

    nrfjprog --memwr 0x10001204 --val 0x12 --verify

    ??

  • It appears to be mismatch between your project configuration and chip target. Make sure the project is built with 'system_nrf52833.c' and not system_nrf52.c

  • The project was built with 'system_nrf52.c': I changed it with 'system_nrf52833.c' and now reset button works.

    I also checked

    nrfjprog --memrd 0x10001200
    0x10001200: 00000012                              |....|

    The project includes also ses_startup_nrf52.s;

    should I change it with ses_startup_nrf52833.s ?

    If I want to test NRF_BL_DFU_ENTER_METHOD_GPREGRET:

    I'm adding

    NRF_POWER->GPREGRET = (uint8_t val) 0x1;

    in an application program.

    Is it all needed to enter in DFU mode or it is needed to force a soft reset ?

    Thank you

    Best Regards

Related