I need advice on software configuration of BMD-300 on custom pcb to boot on power-up and advertise in UART mode

Hi DevZone friends,

I have compiled and downloaded the /examples/ble_peripheral/ble_app_uart project to a ubloxBMD-300 series evaluation board and everything works OK, I can send and receive data without any problem. I designed a simple custom pcb to mount the nRF52832 BMD-300 bluetooth module and connected this to the dev kit for programming. Prior to programming, the custom board advertised as "RigCom" device and could be detected using the Nordic nRF Toolbox app on my mobile. Once programmed however, the device does not advertise and is not visible using the Nordic app. The problem appears similar to that reported earlier "Peripheral_LBS example works on a BMD-300 DK but not on a custom board with BMD-300" in which the solution appears to be a modification of prj.conf file. I should also mention that verify returns OK report once the device is programmed, an un-programmed device plugged into the dev kit returns an error on verify.

At this stage I am unsure if the custom pc is booting, I have a pullup resistor and 1 uF cap on the the  reset line which should serve to deliver a reset pulse on power-up. I can troubleshoot this further but I'm assuming from the suggested fix to the "Peripheral_LBS example works on a BMD-300 DK,,," problem that the system clock is not properly configured.

I have not yet found the specific prj.conf file used by the ble_app_uart example, although I note that sdk_config.h has numerous defines and would appear to make a separate prj.conf file unnecessary. Can anyone advise where I could expect to find the appropriate prj.conf file for the ble_app_uart project or is there a change in the sdk_config.h file I should be making ?

I am running the SEGGER Embedded Studio for ARM, Release 7.32 Build 2023081802.53976, Linux x64

Thanks for your help ;-)

  • I found information from a 10 year old post (Case ID: 100699) advising the custom PCB hosting the BMD-300 requires an external 32 kHz crystal for Bluetooth operation. My custom PC simply hosts the nRF52832 device, power on boot up circuitry and a few GPIO pins to drive LEDs. Is this the root cause of my problem, the lack of an external crystal ?

  • Hi,

    If you do not have the optional 32.768 kHz crystal on your custom board, you need to configure the application to use the internal RC oscillator.

    If you are using nRF5 SDK, this can be configured as described in this post.

    Note that prj.conf are only relevant for nRF Connect SDK samples. The older nRF5 SDK uses the sdk_config.h file for configuration.

    If you are starting a new project and want access to new features/active development, you should use the nRF Connect SDK.nRF5 SDK is only supported in maintenance mode.

    Best regards,
    Jørgen

  • Hi Jorgen,

    thanks for your prompt reply ;-)

    I updated the sdk_config.h file as per the instructions detailed in Case ID: 129248 and observed that the application still executed without problems on the evaluation kit. I programmed my custom board and verified the download was correct however still no joy when powering the custom board separately; the devices do not advertise and fail to appear in the Nordic UART mobile app. I have two prototype custom boards and both behave the same, I need to dig further into this before getting back to you.

    Jorgen your help is much appreciated,

    regards,

    Russell

  • Rather than changing parts of sdk_config.h just eclipse later definitions by adding these lines to the very start of sdk_config.h:

    // No 32kHz crystal
    #define NRFX_CLOCK_CONFIG_LF_SRC         0
    #define CLOCK_CONFIG_LF_SRC              0
    #define NRF_SDH_CLOCK_LF_SRC             0
    #define NRF_SDH_CLOCK_LF_RC_CTIV        16
    #define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV    2
    #define NRF_SDH_CLOCK_LF_ACCURACY        1 // <1=> NRF_CLOCK_LF_ACCURACY_500_PPM

    Make sure it is the correct .h file; some projects have sdk_config.h in the same directory as main.c and others in the config directory for the specific IDE used to build the project

  • Hi HMolesworth,

    Thanks for that suggestion, it does simplify changing the config file. I incorporated the define statements at the start of the sdk_config.h file and re-compiled, downloaded and verified the executable. To double check, I made the changes to the blinky_pca1040_s112 project since I have two of the same GPIO pins driving LED's on my custom pcb. I verified the sdk_config.h file was in the parent example config directory and noted the application ran without problems on the development kit. As with the previous attempts, whilst the program verifies OK on the custom pcb, the application does not run, LED's were not driven (active LOW), no activity was noted. I manually triggered a short to gnd on the RESET pin without any change in activity. As I mentioned before, both prototype custom boards gave the same results.

    Since I have a bare-bones custom pcb, one possibility is that the application may be expecting certain inputs present on the eval kit pcb but not present on the custom pcb. The app could then be sitting in an endless loop waiting for input. Is that a possibility ?

    In any case, I intend to create the simplest app possible and see if that will run.

    Thanks again for your help, I really appreciate it.

Related