はじめに
BLE 通信を行ってみようと思い、RedBearLab nRF51822 を入手しました。
既に販売終了のようで、開発元の商品ページもアクセスできなくなっていますが、ライブラリ等は GitHub にあるので何とかなるだろうと思っていました。
電源を入れてみると「mbed」ドライブが表示されたので、さっそく Arduino bootloader を格納しようとしましたが、リセットがかかり、それ以降は 「BOOTLOADER」ドライブしか見えなくなりました。
色々と検索した結果、文鎮化を解除するために DaplinkBootloader をアップデートすればよいみたいです。
そこで、DaplinkBootloader(0244_k20dx_bootloader_update_0x5000.bin) と Interface Firmware(0254_k20dx_rbl_0x5000.bin) をアップデートしました。
しかし、状況はかわらず、BOOTLOADER の代わりに「MAINTENACE」ドライブしか見えません。
たまたま、1回だけ「DAPLINK」ドライブが見えたことがありますが、しばらくするとリセットがかかり「MAINTENANCE」ドライブになってしまいます。
英語のページも含めて、似たような現象は記載されていません。
対策
どうも RESET Key が押されたままの状況ではないかと思い、回路図を見てみると RESET から MK20D の PTB1 への経路に 抵抗 R3 が入っているだけです。
このような場合は、内部でプルアップしているはずですが、もしかしたらやっていないのではないかと思い、J9 の RESET と 3.3V を 100KΩ の抵抗で繋いでみました。
結果、無事「DAPLINK」ドライブが見え、Arduino bootloader を保存して再起動すると Arduino IDE からスケッチをアップロードすることができました。
もちろん、RESET Key を押したまま USB ケーブルを繋ぐと「MAINTENANCE」ドライブが見えます。
ピンヘッダに抵抗を挿したままというわけにはいかないので、基板の裏の当該箇所にハンダ付けしました。