= mbed TY51822r3をMDK-ARM 5で開発する方法 = TY51822r3に使用されているNordicのnRF51822のサンプルコードは、次のページからダウンロードすることができます。[[BR]] https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822 [[BR]] [[BR]] ここには、主に2種類のサンプルコードがあります。 [[BR]] nRF5-SDK-zip…一般的なBLEアプリケーションを開発するときのサンプルコードです。 [[BR]] nRF51-IoT-SDK-zip…IPv6 over BLEアプリケーションを開発するときのサンプルコードです。専用のSoftDeviceを使います。 [[BR]] どちらのSDKを使った場合でも、mbed TY51822r3は、PCA10028用のサンプルコードを使うと、比較的容易にサンプルコードをビルドすることができます。[[BR]] [[BR]] これらサンプルコードを解凍します。また、MDK-ARMでnRF51のアプリケーションをビルドするためのDeviceFamilyPackをインストールします。 [[BR]] MDKのPackInstallerでうまくDeviceFamilyPackのインストールができない場合、次のURLにウェブブラウザでアクセスして、DeviceFamilyPackをダウンロードしてください。 http://developer.nordicsemi.com/nRF51_SDK/pieces/nRF_DeviceFamilyPack/ [[BR]] この記事を書いた時点では、nRF_DeviceFamilyPack.8.5.0.packを利用しました。 [[BR]] [[BR]] == 太陽誘電製モジュール用のアプリケーション開発時の注意 == mbed TY51822r3に搭載されているモジュールなどは、Nordic製の評価ボードとは異なり、MCUのクロックに32MHzが採用されています。外部クリスタルが32MHzである場合に必要なレジスタ設定を行う必要があります。[[BR]] 詳細は、太陽誘電様の http://www.yuden.co.jp/wireless_module/document/EVBManual/TY_BLE_CN_EVBManual_V1.00_20150914.pdf こちらのドキュメントの7ページ目を確認してください。[[BR]] 要は、system_nrf51.cの86行目のあたりに、次のコードを書いておく必要があります。 {{{ if (*(uint32_t *)0x10001008 == 0xFFFFFFFF) { NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen << NVMC_CONFIG_WEN_Pos; while (NRF_NVMC->READY == NVMC_READY_READY_Busy){} *(uint32_t *)0x10001008 = 0xFFFFFF00; NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren << NVMC_CONFIG_WEN_Pos; while (NRF_NVMC->READY == NVMC_READY_READY_Busy){} NVIC_SystemReset(); while (true){} } }}} [[BR]] ※ IoT SDKは、サンプルによってはsystem_nrf51.cを書き換えただけでは問題が残るそうです。他に修正すべき点は、お客様がまとめた記事が参考になるかもしれません。 http://qiita.com/tw_Inudaisuki/items/dc97d11012aab0e0a306 [[BR]] ※ 32MHzだからといって、決して外部クリスタルが16MHzの場合と比較して高速に動くわけではありません。恐らくモジュールの小型化のために、小型のクリスタルを採用しているのでしょう。 == SoftDeviceの書き込みかた == === nRF5-SDKの場合 === SoftDeviceを書き込むためのターゲットがプロジェクトに用意されています。「flash_s130_nrf51_2.0.0_softdevice」等のターゲットがあるはずですので、これを選択してください。 [[BR]] ターゲットのオプションを開くか、[Flash]-[Configure Flash Tools...]を選択して「Debug」タブを開いてください。mbedのインターフェースチップがサポートしているプロトコルはCMSIS-DAPですので、「Use:」欄横のドロップダウンリストボックスで「CMSIS-DAP Debugger」を選択します。[[BR]] 次に、「Settings」ボタンをクリックし、「SW Device」という欄に「ARM CoreSight SW-DP」などとnRF51のコアが認識されていることを確認します。表示されていない場合、お手元のパソコンがmbed TY51822r3に接続されていないか、画面左側の「Port」がJTAGになっている等の問題があります。[[BR]] コアが見えていることを確認したら、「Flash Download」タブを開いてください、そこで、「Remove」ボタンや「Add」ボタンを使い、「Programming Algorithm」を「nRF51 External Connectivity Board」にします。また、「Download Function」を「Erase Full Chip」にしておいてください。[[BR]] [[Image(TY51822r3-uV5-pic1.PNG)]] === nRF51-IoT-SDKの場合 === IoT SDKを解凍すると、 Nordic¥nrf51¥components¥softdevice¥s1xx_iot¥s1xx-iot-prototype2_softdevice.hex というファイルがあります。これがIoT SDK用のSoftDeviceです。[[BR]] このファイルをMBEDドライブにドラッグ・アンド・ドロップすると、SoftDeviceを書き込むことができます。 == アプリケーションの書き込みかた == SDKを問わず共通です。nRF5-SDKでターゲットを切り換えてSoftDeviceを書き込んだ場合、ターゲットをアプリケーションに戻してください。[[BR]] ターゲットのオプションを開くか、[Flash]-[Configure Flash Tools...]を選択して「Debug」タブを開いてください。mbedのインターフェースチップがサポートしているプロトコルはCMSIS-DAPですので、「Use:」欄横のドロップダウンリストボックスで「CMSIS-DAP Debugger」を選択します。[[BR]] 次に、「Settings」ボタンをクリックし、「Flash Download」タブを開いてください、そこで、「Remove」ボタンや「Add」ボタンを使い、「Programming Algorithm」を「nRF51 External Connectivity Board」にします。また、「Download Function」を「Erase Sectors」にしておいてください。[[BR]] お好みで「Reset and Run」にチェックを入れていただいても良いと思いますが、さきほど確認したところResetはかかりませんでした。今後、何らかの修正時に対処法を検討します。当面は、リセットボタンを押すか、USBケーブルの挿抜を行ってください。[[BR]] [[Image(TY51822r3-uV5-pic2.PNG)]] ''(2016/07/21 - ytsuboi)''