0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EFM8開発 - Simplicity Studioを使ってみる - Hardware Configurator編

0
Last updated at Posted at 2025-09-01

目次

1. 初めに
2. プロジェクト作成
3. マイコン I/O設定、ペリフェラル設定
4. ソースコード 定義・処理追加
5. ビルド・実行
6. 終わりに

1. 初めに

前回から引き続き作業を進めて行きます。今回はHardware Configuratorを使ってみます。このツールを使って簡単なソフトを動かすことが目標です。  

Hardware Configuratorとは、ピンI/O設定やペリフェラル設定などのマイコン機能設定をGUIで行うことができるツールで、Simplicity Studioに実装されています。

2. プロジェクト作成

Hardware Configuratorを使うためのプロジェクトを作成します。

これは前回のデバッグ終了画面です。
09-1_デバッグ終了.png

ここで作業中のプロジェクトをクローズしておきます。Project ExplorerEFM8BB3_Blinky ~(省略)~ を右クリックし、Close Project を選択します。
09-2_プロジェクトクローズ操作.png

プロジェクトクローズ後の画面です。Launcherをクリックします。
09-3_プロジェクトクローズ後.png

マイコン基板をPCと接続していれば下記の表示があるはずです。もし表示が無ければ接続し直してください。
Connected Device
EFM8BB3 Busy Bee STK (ID: xxxxxxxxxxxx)
この右側 START をクリックします。
09-4_ランチャー開始.png

COMPATIBLE TOOLS をクリックします。
09-5_OVERVIEW.png

Hardware ConfiguratorLAUNCH をクリックします。
09-6_COMPATIBLE_TOOLS.png

新プロジェクトのセットアップ画面を表示します。 Boards:Part:SDK: いずれも設定済みになっているので、ここでは特に何も入力せず Next をクリックします。
09-8_新プロジェクトセットアップダイアログ.png

新プロジェクトの構成設定画面を表示します。今回は設定済みのものをそのまま用いることとしますので Finish をクリックします。プロジェクト名を変更するのなら Project name: へ新しい名称を、プロジェクトを保存するフォルダを変更するなら Use default location のチェックを外し、 Location: を入力してください。
09-9_新プロジェクトコンフィグレーションダイアログ.png

新しいプロジェクトが追加されています。
09-10_新プロジェクト追加後.png

3. マイコン I/O設定、ペリフェラル設定

マイコンのI/O設定、ペリフェラル設定を行います。

brd5202a_efm8bb31f64g-b-qfn32.hwconf を右クリックし、 Open を選択します。
10-1_ハードウェア構成ファイルオープン.png

DefaultMode Port I/O をクリックしてポート設定画面を表示します。
10-2_ポート設定.png

今回設定するポートはこの通りです。

PIN名 接続先
P0.2 BTN0
P1.4 LED0 (緑)

赤四角形の箇所が対象です。
BTN0_LED0ss.jpg

31/P0.2 をクリックします。
10-3_ポート設定_入力1.png

Property を設定します

Property Value
Skip Skipped

10-4_ポート設定_入力2-1.png

21/P1.4 をクリックします。
10-5_ポート設定_出力1.png

Property を設定します。

Property Value
IOMode Digital Push-Pull Output
Skip Skipped

10-6_ポート設定_出力2.png

Outlineの Port I/O をクリックし、Propertyを設定します。

Property Value
Enable Crossbar Enabled

10-6-1_Outline-PortIO.png

下の画面内を右クリックし、 Generate Source を選択します。
10-7_ソース生成開始.png

ソースコードを生成中ですので、しばらく待ちます。
10-8_ソース生成中.png

ソースコード生成が終了しました。が、この画面だけでは何も変わってないように見えます。そこで InitDevice.c を見てみます。
10-9_ソース生成終了.png

InitDevice.c
//---- 以上省略
extern void
enter_DefaultMode_from_RESET (void)
{
  // $[Config Calls]
  // Save the SFRPAGE
  uint8_t SFRPAGE_save = SFRPAGE;
  PORTS_0_enter_DefaultMode_from_RESET ();
  PORTS_1_enter_DefaultMode_from_RESET ();
  PBCFG_0_enter_DefaultMode_from_RESET ();
  // Restore the SFRPAGE
  SFRPAGE = SFRPAGE_save;
  // [Config Calls]$

}
//---- 以下省略

実は、Generate Sourceを実行する前(ポートの設定をする前)は以下の様になっていました。この範囲だけでも3行の差分が確認できます。

InitDevice.c
//---- 以上省略
extern void
enter_DefaultMode_from_RESET (void)
{
  // $[Config Calls]
  // Save the SFRPAGE
  uint8_t SFRPAGE_save = SFRPAGE;
  // Restore the SFRPAGE
  SFRPAGE = SFRPAGE_save;
  // [Config Calls]$

}

Generate Sourceを実行することでソースコードへ設定内容が追加されるようになっていることがわかります。

4. ソースコード 定義・処理追加

ポートを使用するための定義と、実際に動かすための処理を追加します。
EFM8BB31F64G-B-QFN32_main.c を開いて、下記リストの通りに追加します。

EFM8BB31F64G-B-QFN32_main.c
//=========================================================
// src/EFM8BB31F64G-B-QFN32_main.c: generated by Hardware Configurator
//
// This file will be updated when saving a document.
// leave the sections inside the "$[...]" comment tags alone
// or they will be overwritten!!
//=========================================================

//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <SI_EFM8BB3_Register_Enums.h>                  // SFR declarations
#include "InitDevice.h"
// $[Generated Includes]
// [Generated Includes]$

+ SI_SBIT(BTN0, SFR_P0, 2);
+ SI_SBIT(LED0_G, SFR_P1, 4);

//-----------------------------------------------------------------------------
// SiLabs_Startup() Routine
// ----------------------------------------------------------------------------
// This function is called immediately after reset, before the initialization
// code is run in SILABS_STARTUP.A51 (which runs before main() ). This is a
// useful place to disable the watchdog timer, which is enable by default
// and may trigger before main() in some instances.
//-----------------------------------------------------------------------------
void
SiLabs_Startup (void)
{
  // $[SiLabs Startup]
  // [SiLabs Startup]$
}

//-----------------------------------------------------------------------------
// main() Routine
// ----------------------------------------------------------------------------
int
main (void)
{
  // Call hardware initialization routine
  enter_DefaultMode_from_RESET ();

  while (1)
    {
// $[Generated Run-time code]
// [Generated Run-time code]$
+      LED0_G = BTN0;
    }
}

5. ビルド・実行

前回記事
5. プロジェクトのビルド
6. 実行(デバッグ)
と同様です。

実行の様子です。
BTN0を押すとLED0は緑色に点灯します。
LED0G_ONss.jpg

離すとLED0は消灯します。
LED0G_OFFss.jpg

6. 終わりに

今回もうまく動きました。これで色々なソフトを開発できそうな感じになりました。前回、今回とあまり細かい説明などは省略していますが、今後開発を進めながら説明して行くことになるかと考えています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?