wiki:TY51822r3-uV5

Version 4 (modified by ytsuboi, 8 years ago) ( diff )

--

mbed TY51822r3をMDK-ARM 5で開発する方法

TY51822r3に使用されているNordicのnRF51822のサンプルコードは、次のページからダウンロードすることができます。
https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822

ここには、主に2種類のサンプルコードがあります。
nRF5-SDK-zip…一般的なBLEアプリケーションを開発するときのサンプルコードです。
nRF51-IoT-SDK-zip…IPv6 over BLEアプリケーションを開発するときのサンプルコードです。専用のSoftDeviceを使います。
どちらのSDKを使った場合でも、mbed TY51822r3は、PCA10028用のサンプルコードを使うと、比較的容易にサンプルコードをビルドすることができます。


これらサンプルコードを解凍します。また、MDK-ARMでnRF51のアプリケーションをビルドするためのDeviceFamilyPackをインストールします。
MDKのPackInstallerでうまくDeviceFamilyPackのインストールができない場合、次のURLにウェブブラウザでアクセスして、DeviceFamilyPackをダウンロードしてください。 http://developer.nordicsemi.com/nRF51_SDK/pieces/nRF_DeviceFamilyPack/
この記事を書いた時点では、nRF_DeviceFamilyPack.8.5.0.packを利用しました。


太陽誘電製モジュール用のアプリケーション開発時の注意

mbed TY51822r3に搭載されているモジュールなどは、Nordic製の評価ボードとは異なり、MCUのクロックに32MHzが採用されています。外部クリスタルが32MHzである場合に必要なレジスタ設定を行う必要があります。
詳細は、太陽誘電様の http://www.yuden.co.jp/wireless_module/document/EVBManual/TY_BLE_CN_EVBManual_V1.00_20150914.pdf こちらのドキュメントの7ページ目を確認してください。
要は、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){}
}


※ IoT SDKは、サンプルによってはsystem_nrf51.cを書き換えただけでは問題が残るそうです。他に修正すべき点は、お客様がまとめた記事が参考になるかもしれません。 http://qiita.com/tw_Inudaisuki/items/dc97d11012aab0e0a306
※ 32MHzだからといって、決して外部クリスタルが16MHzの場合と比較して高速に動くわけではありません。恐らくモジュールの小型化のために、小型のクリスタルを採用しているのでしょう。

SoftDeviceの書き込みかた

nRF5-SDKの場合

SoftDeviceを書き込むためのターゲットがプロジェクトに用意されています。「flash_s130_nrf51_2.0.0_softdevice」等のターゲットがあるはずですので、これを選択してください。
ターゲットのオプションを開くか、[Flash]-[Configure Flash Tools...]を選択して「Debug」タブを開いてください。mbedのインターフェースチップがサポートしているプロトコルはCMSIS-DAPですので、「Use:」欄横のドロップダウンリストボックスで「CMSIS-DAP Debugger」を選択します。
次に、「Settings」ボタンをクリックし、「SW Device」という欄に「ARM CoreSight SW-DP」などとnRF51のコアが認識されていることを確認します。表示されていない場合、お手元のパソコンがmbed TY51822r3に接続されていないか、画面左側の「Port」がJTAGになっている等の問題があります。
コアが見えていることを確認したら、「Flash Download」タブを開いてください、そこで、「Remove」ボタンや「Add」ボタンを使い、「Programming Algorithm」を「nRF51 External Connectivity Board」にします。また、「Download Function」を「Erase Full Chip」にしておいてください。

nRF51-IoT-SDKの場合

IoT SDKを解凍すると、 Nordic¥nrf51¥components¥softdevice¥s1xx_iot¥s1xx-iot-prototype2_softdevice.hex というファイルがあります。これがIoT SDK用のSoftDeviceです。
このファイルをMBEDドライブにドラッグ・アンド・ドロップすると、SoftDeviceを書き込むことができます。

アプリケーションの書き込みかた

SDKを問わず共通です。nRF5-SDKでターゲットを切り換えてSoftDeviceを書き込んだ場合、ターゲットをアプリケーションに戻してください。
ターゲットのオプションを開くか、[Flash]-[Configure Flash Tools...]を選択して「Debug」タブを開いてください。mbedのインターフェースチップがサポートしているプロトコルはCMSIS-DAPですので、「Use:」欄横のドロップダウンリストボックスで「CMSIS-DAP Debugger」を選択します。
次に、「Settings」ボタンをクリックし、「Flash Download」タブを開いてください、そこで、「Remove」ボタンや「Add」ボタンを使い、「Programming Algorithm」を「nRF51 External Connectivity Board」にします。また、「Download Function」を「Erase Sectors」にしておいてください。
お好みで「Reset and Run」にチェックを入れていただいても良いと思いますが、さきほど確認したところResetはかかりませんでした。今後、何らかの修正時に対処法を検討します。当面は、リセットボタンを押すか、USBケーブルの挿抜を行ってください。

(2016/07/21 - ytsuboi)

Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.