I know this thread has been dormant for nearly a year, but just in case its of any use to anyone reading this...
There are at least 2 other cheap ways to upload to the nRF51 (eg that module from WaveShare which is described above...)
1. Black Magic Probe.
This is Open Source SWD programmer based on the STM32F103 or other hardware.
I have a version of the BMP including precompile binaries for several cheap STM32 boards.
https://github.com/rogerclarkmelbourne/blackmagic/tree/master
You will of course need a STM32 board like a Maple mini, but you can get them for around $6 from eBay
2. STLink
You can buy these SWD programmers very cheaply, on eBay etc, and you can use OpenOCD to program via STLink.
I initially used STLink and OpenOCD but the setup is a bit complex (though it is documented on various sites, just search for "OpenOCD STLink")
BTW.
The modules I have which look similar to the one in the picture, now have the 32kHz crystal, but I"m trying to use a different module, which is half the size and doesnt have the 32khz Crystal
However at the moment even if I make the changes describe above, to use the internal oscillator and change the soft device timing stuff, still don't work :-(
Just for the fun of it, I bought a cheap nRF51822 breakout module on eBay to see if it was able to run mbed code. Initially it didn't work, but after some tweaking I was able to run the health thermometer example. The following steps were taken:
Please note that some of these steps involve tools that are not part of the nRF51822-mkit!
btle_init code change in BLE_API_Native/hw/nRF51822n/btle/btle.cpp
There are probably easier ways to accomplish this! A separate CMSIS-DAP interface maybe? :)