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

stuck in softdevice_handler_init

Hello,

I was working on a nRF51422 and made a project using the example ble_app_uart_c. It works fine on the DK, but now I want to make it work on a board that has one nRF51822. I can program it, but when it runs it get stuck on the function SOFTDEVICE_HANDLER_INIT(&clock_lf_cfg, NULL); that is inside ble_stack_init().

Can anyone help me to debug it, or have any idea why it is stuck on that function?

Using SD130 v2, SDK11 and nRF51822.

Thanks, Jorge

EDIT1: Saw in on post of old SDK that the problem could be because I was initializing the UART before the BLE. Changed the order of the initialization but still gets stuck on the same function.

EDIT2: I got this on the call stack. I'm still stuck on there, the program doesn't get out from the SOFTDEVICE_HANDLER_INIT funtion. but now is not giving me the error that gave before...

Debug image

EDIT3: This are the two images I get, before and after the stop

before

before_stop

and after

after_stop

Parents
  • The 32 MHz crystal needs to be divided by two to get the require 16 MHz source. Do do that you can either set NRF_CLOCK->XTALFREQ = 32MHZ ( nrf51 RM - chpt 13) on startup. Alternatively, set UICR.XTALFREQ which sets the reset value.

  • I have a 32MHz external crystal but is connected to the XC1 and XC2 pins and I can't change the pins. So from what I understand I can't use it by selecting the external clock ( nrf_clock_lf_cfg_t clock_lf_cfg = NRF_CLOCK_LFCLKSRC;), but can use it by selecting the synthesized clock?

    The errors I got now are:

    • selecting the external clock my chip stays in the softdevice_handler_init waiting to get a signal from the crystal. (I guess I have this error because I don't have a crystal connected to the XL1 and XL2)

    • selecting the internal RC oscillator the chip passes the softdevice_handler_init but then resets when it gets to the err_code = softdevice_enable(&ble_enable_params);

    I don't know if it's easier if I convert this to a new question and Thanks for the help

Reply
  • I have a 32MHz external crystal but is connected to the XC1 and XC2 pins and I can't change the pins. So from what I understand I can't use it by selecting the external clock ( nrf_clock_lf_cfg_t clock_lf_cfg = NRF_CLOCK_LFCLKSRC;), but can use it by selecting the synthesized clock?

    The errors I got now are:

    • selecting the external clock my chip stays in the softdevice_handler_init waiting to get a signal from the crystal. (I guess I have this error because I don't have a crystal connected to the XL1 and XL2)

    • selecting the internal RC oscillator the chip passes the softdevice_handler_init but then resets when it gets to the err_code = softdevice_enable(&ble_enable_params);

    I don't know if it's easier if I convert this to a new question and Thanks for the help

Children
No Data
Related