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?

目次

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

1. 初めに

テーマはUARTです。最初はシンプルなソフトを作成します。PC側で TeraTerm を使いますので、各自インストールしておいてください。

1-1_全体構成図.drawio.png

今回はExampleを用いず、空のプロジェクトを作成後 Hardware Configurator を使ってハードウェア設定を行い、ソースコードを手書きで追加する方法をやって行きます。
開発で必要なものはEFM8開発の初回記事の 2.必要なもの にありますので、参照していただけると良いかと思います。

2. プロジェクト作成

Simplicity Studio を起動し Launcher をクリックします。

2-1_SimplicityStudio起動.png

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

COMPATIBLE TOOLS をクリックします。
2-3_OVERVIEW.png

Hardware ConfiguratorLAUNCH をクリックします。
2-4_COMPATIBLE TOOLS.png

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

新プロジェクトの構成設定画面を表示します。Project Name: は任意の名称を入力します。ここでは "UART_1" と入力します。その入力後 Finish をクリックします。
プロジェクトを保存するフォルダを変更するなら Use default location のチェックを外し、Location: を入力してください。
2-6_Project Configuration.png

プロジェクトが作成できました。
2-7_プロジェクト作成.png

ただ、brd5202a_efm8bb31f64g-b-qfn32.hwconf のファイル名が長いので、短いファイル名へ変更します。(そのままで良ければ変更しなくても構いません)
brd5202a_efm8bb31f64g-b-qfn32.hwconf を右クリックし Rename をクリックします。
2-8_hwconfファイル名変更開始.png

New name: へ任意のファイル名を入力します。ここでは UART_1.hwconf と入力します。その入力後 OK をクリックします。
2-9_hwconfファイル名変更ダイアログ.png

ファイル名が変更できました。
2-10_hwconfファイル名変更後.png

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

I/O設定

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

PIN名 接続先
P0.4 UART1_TX
P0.5 UART1_RX

P0.4P0.5 はマイコン基板とPCとをUART接続する専用ポートです。詳細についてはマイコン基板のドキュメントを参照してください。

UART1_.hwconf を右クリックし、Open を選択します。
3-1_hwconfオープン.png

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

29/P0.4 をクリックします。
3-3_P0.4選択.png

Property を設定します。P0.4は出力ポートとなります。

Property Value
IOMode Digital Push-Pull Output

3-4_P0.4プロパティ.png

28/P0.5 をクリックします。
3-5_P0.5選択.png

このポートの Property 設定はデフォルトのままで良いです。P0.5は入力ポートとなります。
3-6_P0.5プロパティ.png

Port I/O をクリックします。
3-7_PortIO選択.png

Property を設定します。

Property Value 備考
Enable Crossbar Enabled クロスバー 動作を許可する

3-8_PortIOプロパティ.png

Port I/O MappingUART 1 Data のチェックを入れます。(UART 1 は下の方にあるので、下方向へスクロールして表示します)
3-9_PortIO Mapping.png

すると・・・
3-10_PortIO UART1設定異常.png

使う予定の無いポートへ UART1_TXUART1_RX が割り当てられています。そこで、割り当てて欲しくないポートの Property を設定します。

Property Value 備考
Skip Skipped クロスバー でのアサイン(割り当て)対象から除外する

1/P0.0
3-11_P0.0プロパティ.png

32/P0.1
3-12_P0.1プロパティ.png

31/P0.2
3-13_P0.2プロパティ.png

30/P0.3
3-14_P0.3プロパティ.png

これで UART 1 の割り当てができました。
3-15_PortIO UART1設定完了.png

ペリフェラル設定

DefaultMode Peripherals をクリックしてペリフェラル設定画面を表示します。
3-16_DefaultMode Peripherals.png

クロック設定

Clock Control をクリックし、チェックを入れます。
3-17_Clock Control選択.png

Property を設定します。

Property Value 備考
Clock Source Divider SYSCLK / 1 クロックソースを1で分周する(分周しない)

3-18_Clock Controlプロパティ.png

UART 1設定

UART 1 をクリックし、チェックを入れます。UART 1 の文字が黄色になっているのはプロパティに不正な値が存在しているのが理由です。
3-19_UART1選択.png

Property を設定します。

Property Value 備考
Enable Baud Rate Generator Enabled ボーレートジェネレータを有効にする
Baud Rate Prescaler Divide by 1 ボーレートプリスケーラ 1
Expected Baud Rate 115200 ボーレート設定値
Enable Receive Enabled 受信動作を許可する

3-20_UART1プロパティ.png

割り込み設定

Interrupts をクリックし、チェックを入れます。
3-21_Interrupts選択.png

Property を設定します。

Property Value 備考
Enable UART1 Interrupt Enabled UART1割り込みを許可する
Enable All Interrupt Enabled 各割り込みの許可に従って割り込み要求を受け付ける

3-22_Interruptsプロパティ.png

WDT(ウォッチドッグタイマー)設定

Watchdog Timer をクリックし、チェックを入れます。 3-23_Watchdog Timer選択.png

Property を設定します。

Property Value 備考
WDT Enable Disable ウォッチドッグタイマーを無効にする

3-24_Watchdog Timerプロパティ.png

※ここでは無効設定としていますが、実際に製品に組み込むソフトではウォッチドッグタイマーを有効としましょう。EFM8マイコンに限らず、どんなマイコンでもウォッチドッグタイマーは重要なものです。

ソースコード生成

画面内を右クリックし、Generate Source を選択します。
3-25_Generate Source選択.png

ソースコード生成中なので、しばらく待ちます。
3-26_Generate Source実行中.png

InitDevice.cInterrupt.c が生成されています。
3-27_InitDevice.c.png

3-28_Interrupts.c.png

4. ソースコード 処理追加

実際に動かすための処理を追加します。

src/Interrupts.c
SI_INTERRUPT (UART1_ISR, UART1_IRQn)  //UART1割り込みハンドラ
{
    if (SCON1_RI == 1)  //受信割り込み要求あり
    {
        SCON1_RI = 0;   //受信割り込み要求クリア
        SBUF1 = SBUF1;  //UART1:受信バッファから読み出し、そのまま送信バッファへ書き込む
    }
}

関連するレジスタ・フラグの説明です。

名称 説明
SCON1_RI UART受信割り込み要求フラグ
1:割り込み要求あり
※自動でクリアされないので、割り込み処理内でソフトウェア的に0:クリアする必要がある
SBUF1 UART1受信/受信バッファ
・読み出し(Read):受信バッファ 
・書き込み(Write):送信バッファ

SBUF1は同じ名称ながら実態が2つある、といったイメージでしょうか。

5. PCシリアル設定

デバイスマネージャーを開きます。
マイコン基板をPCへ接続すると、シリアルデバイスとして
JLink CDC UART Port (COMx)
の名称で表示します。ここでは COM3となります。
5-1_デバイスマネージャCOM設定.png

Tera Term を起動して、端末の設定とシリアルポートの設定を行います。
5-2_TeraTerm.png

5-3_TeraTerm端末の設定.png

ポート はデバイスマネージャーで確認したもの(ここでは COM3
スピードUART 1設定 で設定した 115200 としてください。
5-4_TeraTermシリアルポート設定と接続.png

6. ビルド・実行

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

Tera Term を実行し文字を入力すると、入力した文字をそのまま表示します。エコーバックですね。
6-1_TeraTerm実行.png

動かない場合は3. マイコン I/O設定、ペリフェラル設定4. ソースコード 処理追加を見直してみてください。

7. 終わりに

今回はかなりシンプルなソフトでした。今後少しずつ手を加えて機能を増やして行く予定です。

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?