DIY

X Shifterのスイッチユニットを自作しました。Ver2.0-AE-TYBLE16開発環境の構築-

はじめに

X Shifterのスイッチユニットを自作しました。Ver2.0-BLEモジュール選定-はじめに https://chikuwa-ringyo.com/?p=360 https://chikuwa-ringyo.com/...

前回使用するモジュールを決めたので、このモジュール(AE-TYBLE16)の開発環境の
構築について記載していく。
(実際には、モジュールの検討の段階で環境構築済んでる。)
あくまで私が使用したものと私のやり方を載せていく。これ以外にも方法は多数存在する。
各自のやりやすいやり方でいいと思う。

このページでは、サンプルコードを動かすことをゴールとしている。

使用したもの

AE-TYBLE16

開発対象のBLEモジュール。nRF51822ACが載っている。

秋月電子で購入

J-LINK EDU

FWを書き込むためのデバッガ。↓のようなピン配置となっている。赤丸で囲った箇所がVTref。(J-LINK MINIでもいけるかも?)

RSコンポーネントで購入
J-LINK EDU mini マルツ

連結ソケット(両端オスピン)16P

AE-TYBLE16をブレッドボードに取り付けるために使用
秋月電子で購入

ジャンパーワイヤー オス-メス & ブレッドボード


3.3V出力できる何か。

私は部屋に転がっていたArduinoNanoを使った。
AE-TYBLE16が動けばいいのでボタン電池とかでもいいと思う。

Windows-PC

USBポートがあればOK

必要なソフトウェアのダウンロード&インストール

nRF Connect for Desktop

①nRF Connect for Desktopを以下のリンクからダウンロード(ver3.5.0)して、インストール
ダウンロードページ

②インストール後、nRFConncectを起動してProgrammerをインストールしておく。

GNU Arm Compirar 4.9

① 以下のリンクから”gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe”をダウンロードしてインストール。

ダウンロードページ

インストールの最後の画面で、忘れずにAdd path to environment variableにチェックを入れる。(環境変数を追加してくれる)

②GNU Arm Compirarをインストールしたフォルダのbinフォルダ内に(デフォルトだと
“C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2015q3\bin”)に下記のファイルを追加する。
・make.exe
・libiconv2.dll
・libintl3.dll
上記ファイルは、sorceforge.netのmake-3.81-bin.zipとmake-3.81-dep.zipを解凍すると入っている。

J-LINK Software and Documentation Pack

①J-LINK Software and Documentation Packをダウンロード&インストール
ダウンロードページ

nRF 12.3 SDKを入手

①nRF 12.3 SDKをダウンロードして解凍する。
ダウンロードページ
ダウンロードページが分かりづらいので画像つきで説明すると。
1.nRF 12.3 SDKを選択

2.zipをダウンロード(S130は無くてもいい)

3.ダウンロードしたzipファイルを解凍すると、SDKのzipがあるのでDesktopなどに解凍しておく。

ハードウェアの準備

配線

1.ブレッドボード上にAE-TYBLE16を連結ソケット(両端オスピン)を使い取り付け、J-LINK EDUや電源とジャンパー線で必要な結線を行う。

2.J-LINK EDUをPCに接続する

以上で準備は完了。

ここからは実際にFWを書き込んでみてサンプルコードを動作させてみる。

サンプルを動作させてみる

FWを書き込むことで太陽誘電製のFWが使用できなくなるので自己責任でお願いします。

ソースコードの変更

サンプルコードの設定をAE-TYBLE16に合わせる。ここでは動作確認用のサンプルとしてnRF5_SDK_12.3.0_d7731ad\examples\ble_peripheral\ble_app_hrsを使う。
(1)nRF5_SDK_12.3.0_d7731ad\components-boards-pca10028.hを修正
.source = NRF_CLOCK_LF_SRC_XTAL
→ .source = NRF_CLOCK_LF_SRC_RC
.xtal_accuracy = NRF_CLOCK_LF_XTAL_ACCURACY_20_PPM
→ .xtal_accuracy = NRF_CLOCK_LF_XTAL_ACCURACY_250_PPM

(2)nRF5_SDK_12.3.0_d7731ad\components\toolchain\system_nrf51.cを修正
#define __SYSTEM_CLOCK (16000000UL)
→ #define __SYSTEM_CLOCK (32000000UL)

(3)nRF5_SDK_12.3.0_d7731ad\components\toolchain\system_nrf51422.cを修正
#define __SYSTEM_CLOCK (16000000UL)
→ #define __SYSTEM_CLOCK (32000000UL)

(4)nRF5_SDK_12.3.0_d7731ad\examples\ble_peripheral\ble_app_hrs\main.cを修正
nrf_clock_lf_cfg_t clock_lf_cfg = NRF_CLOCK_LFCLKSRC;
の行を削除して以下の5行を追加
nrf_clock_lf_cfg_t clock_lf_cfg;
clock_lf_cfg.rc_ctiv = 16;
clock_lf_cfg.rc_temp_ctiv = 2;
clock_lf_cfg.source = NRF_CLOCK_LF_SRC_RC;
clock_lf_cfg.xtal_accuracy = NRF_CLOCK_LF_XTAL_ACCURACY_250_PPM;

(5)nRF5_SDK_12.3.0_d7731ad\examples\ble_peripheral\ble_app_hrs\pca10028\s130\config-sdk_config.hを修正。
CLOCK_CONFIG_XTAL_FREQ 255
→ CLOCK_CONFIG_XTAL_FREQ 0
CLOCK_CONFIG_LF_SRC 1
→ CLOCK_CONFIG_LF_SRC 0

hexファイルを作成

(1)スタートメニューからcmdと入力してコマンドプロンプトを起動
(2)”cd ***\nRF5_SDK_12.3.0_d7731ad\examples\ble_peripheral\ble_app_hrs\pca10028\s130\armgcc”と入力して作業ディレクトリを変更。
***はnRF5_SDK_12.3.0_d7731adを解凍したパス。↓はデスクトップに解凍した場合の例

白く塗りつぶしている箇所はユーザー名

(3)”make”と入力してビルドを実行。

成功すると↓の画像のように表示される。

AE-TYBLEに書き込む

(1)nRF Connectを起動させ、Programmerを選択する。

(2)J-LINKを接続して、左上のボックスからJ-LINKの番号を選択する。画像だと000260118424。

番号は、J-LINKをPCに接続した状態でJ-LINK Commanderを起動して確認できる。

(3)右上のAddHexFile->Browser書き込むファイルを選択する。
選択するファイルは
・nRF5_SDK_12.3.0_d7731ad\components\softdevice\s130->hex
 のs130_nrf51_2.0.1_softdevice.hex
・nRF5_SDK_12.3.0_d7731ad\examples\ble_peripheral\ble_app_hrs\pca10028\s130\armgcc\_build
 のnrf51422_xxac.hex
の2つ。選ぶと↓のようになる。

(4)書き込む。
右のErase & Writeを選択する。

(5)書き込み完了後、コマンドプロンプトを起動して、以下のように入力する。
nrfjprog –snr *** –memwr 0x10001008 –val 0xFFFFFF00
***部分はJ-LINK Commanderで確認した接続しているJ-LINKの識別番号。↓みたいな感じになる。

これでJ-LINKとAE-TYBLEの配線を外したうえで3.3Vの電源をリセットすればサンプルコードが動作するようになるはず。
ちゃんと動けば↓のようにiPhoneやAndoroidからNordic_HRMが出てるはず。

動かないや書き込めない分からないなどあればtwitterかお問い合わせフォームでコメントいただければわかる範囲で対応します。