Using the ST BLE Shield (X-NUCLEO-IDB04A1) with the ST Nucleo F401RE board seems to be very straight forward: you plug the shield into the board, then upload the example program and see how the program runs. Well, it turns out, that it’s not that simple.. So here I would like to share a couple of simple steps which will solve the problem of the BLE shield not working with the F401RE board.
I came accross this problem when I was testing the hardware for the IoT Edi Hardware Hackathon, and couldn’t make the BLE shield work as it should. First of all, I tried an example called “Getting Started with BlueNRG Shield” on mbed’s website. It was just what I was looking for, as it was based on the ST F401RE board. However, when I loaded the program on the board, it should have shown up on the list of Bluetooth devices on my Nexus, but it didn’t. Well, that’s strange… And the program seemed to get stuck somewhere during startup.
To find the bug, I downloaded the program from the online compiler and opened it in Keil μVision. Ran the program in debug mode, and eventually found that the program gets stuck on the following line of code:
After a quick search online, I found two posts on the mbed forum, which described how to solve this problem. It turns out that there are two things you need to do:
- Put a jumper wire accross the pins D3 and D13 (or PB_3 and PA_5), which is shown in the picture above. What it does is basically it supplies an SPI clock signal from the pin D13 to the pin D3, through the R10 resistor on the BLE shield (as seen on page 9 of the shield’s System Setup Guide).
- Delete all the instances of led1 in the code and never use it, because led1 is conflicting with the SPI clock signal (SPI SCK) used for communications with the BLE shield.
So here you go. After you did these two simple fixes, the example program should run without any problems and you should be able to see the BLE board in the Available Bluetooth Devices list. Also, you should be able to connect to the board and see a dummy Heart Rate, using the nRF Master Control Panel, or any other similar app on your phone.
In the end I should mention, that I only tried this BLE shield with the Nucleo F401RE, so if you have a chance to test it on another board let me know how you got on 😉