nRF52832蓝牙协议栈失效问题
使用一块蓝牙手表平台来调试的适合,发现协议栈卡死在这里:
ret_code = sd_softdevice_enable(&clock_lf_cfg, app_error_fault_handler);
经查协议栈使用到外部32K晶振,而sdk里默认使能了外部晶振,将晶振改为内部RC即可。
原定义:
//==========================================================
// <o> NRF_SDH_CLOCK_LF_SRC - SoftDevice clock source.
// <0=> NRF_CLOCK_LF_SRC_RC
// <1=> NRF_CLOCK_LF_SRC_XTAL
// <2=> NRF_CLOCK_LF_SRC_SYNTH
#ifndef NRF_SDH_CLOCK_LF_SRC
#define NRF_SDH_CLOCK_LF_SRC 0//Hechen 1-->0
#endif
// <o> NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval.
#ifndef NRF_SDH_CLOCK_LF_RC_CTIV
#define NRF_SDH_CLOCK_LF_RC_CTIV 16//HeChen 0-->16
#endif
修改如上2行:
NRF_SDH_CLOCK_LF_SRC由1改成0
NRF_SDH_CLOCK_LF_RC_CTIV由0改成16
如果不能调试,可以尝试先解锁和擦除:
nrfjprog – -recover
nrfjprog --recover
nrfjprog --eraseall -f NRF52
中间2个“-”