#101 LED Brick
Overview
LEDのBrickです。発光色は5色(青・緑・赤・白・黄)あります。Lチカのおともにもどうぞ。
Connecting
接続例:J-Linke LiteをShinobi_NRF、USB電源をShinobiBatterry,Fabo1010をShinobiアナログコネクタに接続します。
Schematic
Fabo 101 LEDの回路図
Shinobi NRFの回路図
Sample Code
Arduino Motor ShieldのA0コネクタにLED Brickを接続し、一定時間(1秒=1000ms)ごとに点灯/消灯(Lチカ)させています。
1.Keilを起動
任意の場所プロジェクトフォルダの中にLED101のフォルダを作成します。 Project → New μ プロジェクト → プロジェクトファイルを保存します。
プロジェクトファイルが作成され。
2.デバイスの選択
ターゲットとなるマイコンを選択します。Nordic Semiconductorを選択。
nRF52 Series→nRF528232_xxAAを選択します。
3.コンポーネントを選択
MagageRunTimeEnviromentボタンをクリックします。
マイコン起動に必要なコンポーネントを選択します。
依存性を解消します。
4.フォルダの構成
管理しやすいように名前を以下のようにします。
フォルダ名をsrcに変更します。
configフォルダを作成します。
5. custom_board.h の作成
configフォルダにcustom_board.hを追加します。
config/custom_board.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
|
6. sdk_condig.hの取り込み
configフォルダに、[SDK Root]/examples/ble_peripheral/ble_app_template/pca10040/s132/config/sdk_config.hをプロジェクトフォルダにコピーし、Keil上に取り込みます。
コンパイルするモジュールを指定します。
SDK_confing.hを選択し下のconfigration_Wizardタブをクリック。
以下をチェックします。
※SDK configuration header file について https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v12.0.0%2Fsdk_config.html
7.インクルードファイルの設定
Option for Targetボタンを押し、
C/C++をクリックします。Include Pathsの右のボタンをクリックします。
ボタンを押して逐次ヘッダファイルがあるパスを追加します。 選択されると以下のようになります。
フォルダ | 必要なHeader File |
---|---|
プロジェクトのRootパス | 自分自身へのパス |
nRF5_SDK_12.3.0_d7731ad/components/drivers_nrf/hal/ | nrf_gpio.h |
nRF5_SDK_12.3.0_d7731ad/components/libraries/util/ | nrf_assert.h |
nRF5_SDK_12.3.0_d7731ad/components/drivers_nrf/nrf_soc_nosd/ | nrf_error.h |
nRF5_SDK_12.3.0_d7731ad/components/drivers_nrf/delay/ | nrf_delay.h |
nRF5_SDK_12.3.0_d7731ad/components/boards/ | boards.h |
boards.hは、Nordic製の開発ボード使用の際に参照されます。Shinobiの使用時は、さらに、custom_board.hも参照されます。
8.コンパイラ制御の設定
Option for Targetボタンを押し、
Option for Targetボタンを押し、C/C++をクリックPreprocessor SymbolsのDefine:に
nRF52 Shinobiの場合
NRF52832 NRF52 BOARD_CUSTOM NRF52_PAN_12 NRF52_PAN_15 NRF52_PAN_20 NRF52_PAN_31 NRF52_PAN_36 NRF52_PAN_51 CONFIG_GPIO_AS_PINRESET NRF52_PAN_54 NRF52_PAN_55 NRF52_PAN_58 NRF52_PAN_64 BSP_DEFINES_ONLY SWI_DISABLE0
nRF52 DKボード(BOARD_PCA10040)の場合
NRF52832 NRF52 BOARD_PCA10040 NRF52_PAN_12 NRF52_PAN_15 NRF52_PAN_20 NRF52_PAN_31 NRF52_PAN_36 NRF52_PAN_51 CONFIG_GPIO_AS_PINRESET NRF52_PAN_54 NRF52_PAN_55 NRF52_PAN_58 NRF52_PAN_64 BSP_DEFINES_ONLY SWI_DISABLE0
を追加します。
Langeage / Code Generationの項目 ARMコンパイラの最適化レベルの設定 Optimize Level3(-O3)を選択
Misc Controls: --c99を追加します。
9. デバッカの設定
次にDebugタグをクリックします。
ターゲットのフラッシュメモリ プログラム開始アドレスが0x0から始まっていることを確認してください。(無線を使用する場合などで、SoftDeviceを前もってDownloadした場合は、その領域の次にアドレス設定をします。他の項で記述)
使用するデバッカを設定します。J-linkの場合は、J-LINK/J-TRACE Cortexを選択。
Settingボタンを押します。port:をJTAG(4~5線式)からSW(2線式)に変更いたします。
Flash Downloadタブをクリックし、書き込み方法を設定いたします。 書き込み後すぐ実行させるため、Reset and Runを選択します。
OKボタンを押して設定は終了です。
10.main関数追加
Projectファイルと同一のディレクトリにListings,Object,RTEフォルダが自動的に生成されます。 画面の左フォルダSourceGroup 1を左クリックしAdd New Item to Group'SourceGroup 1'を選択します。C File(.c)を選択します。
一番最初に呼ばれるファイルなのでファイル名はmain.cと名前で保存してください。
main.cをクリックして開きます。 次のコードをコピーアンドペーストしてください。
11. 1秒間隔でFaboBrickを点滅させる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
12.直接レジスタ操作によるLED点滅の場合
Arduino PinA0は、NRF52のピン番号はP0.03にとなります。C言語なのでintなどは、マイコンによってバイト数が2バイトである場合と4バイトである場合があり、unsigned char(unsigned int)ではなくuint8_tなどを使ったほうが可読性や移植性の観点から望ましい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
11.boards.hを利用したLED点滅の場合
レジスタ操作は開発効率が悪いので、SDKにはあらかじめ、ボードにあわせたピン定義しているファイルboards.hが存在します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
13.実行
Buildを実行します。(ショートカットキーF7)
エラーが表示されなければ、コンパイラはbuildフォルダに**.axfが生成されます。 並びにメモリサイズも表示されます。
古いファームウェアを削除します。
Flash→Erase
ROMに書き込むため、**.hexファイルが生成され、 Downloadボタン(ショートカットF8)でターゲットに書き込みします。
書き込みが成功すればLEDが点滅します。
Document
NRF52 ドキュメント http://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf
構成パーツParts
- 5mm LED(各色)