This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

HM-10 clone (BLE-CC41-A) reboot problem + solution

Other Parts Discussed in Thread: CC2541

A few days ago I received a HM-10 clone (BLE-CC41-A) and flashed it with SBL + HostTestApp.

When I provide the board with power, the bootloader executes and jumps to the HostTestApp code, and HCI over UART commands work, no problem. However, when HostTestApp is running and I issue a HCI_EXT_ResetSystemCmd or UTIL_ForceBoot command, the board locks up. If I then send exactly 16 garbage bytes over UART, the board resets/continues on reception of the 16th byte, and everything works again. The same happens when I issue the "enable" command when in bootloader mode, the board locks up, I send 16 bytes, and it works again.

After some investigation (by increasing SBL size to 4K and using LED flashes to tell me what it was doing) I discovered that the problem was being caused by a missing 32 Khz external crystal. The original HM-10 has one but the clone I have (BLE-CC41-A) doesn't. The solution is very easy. Change the SET_32KHZ_OSC()  define in hal_board_cfg.h so that it selects the internal 32 Khz oscillator instead of the non-existing external one.

I flashed the new SBL + HostTestApp and the board can now jump from HostTestApp to SBL and vice versa without any lockups.