6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PSoCAdvent Calendar 2018

Day 3

ModusToolboxでPSoC 6のLチカ

Last updated at Posted at 2018-12-02

これは、PSoC Advent Calendar 2018の3日目に突っ込まれた記事です。

##ModusToolbox登場
PSoC 6 MCUの開発環境として、新しくModusToolboxという統合開発環境(IDE)が発表されました。といっても、この記事を書いている2018年12月3日時点では、一般公開されたわけではありません。現在はEarly Adapter Program (EAP)参加者だけにベータ版が公開されている段階です。この記事では、EAP番のModusToolboxを使って使い勝手を紹介します。

##やりたいこと
まず、何をするかといえば、やっぱりLチカでしょう。ここでは、PSoCの流儀に従って、ソフトウェアには極力仕事をさせない方法でLチカを実現します。回路図で描くとこんな感じでしょうか。

GS003904.png

クロックをPWMで分周して、LEDを2Hzで点滅させます。

##使用するハードウェアはCY8CPROTO-063-BLE
本記事で使用する機材は、PSoC 6 BLE Prototyping Kitです。

GS003935.png

この評価ボードでは、CYBLE-416045-02 EZ-BLE™ CREATOR MODULEモジュールが使用されているため、同モジュールを使ったアプリケーションのプロトタイプを作成するのに適しています。基板上に赤と緑の二つのLEDが搭載されているので、Lチカには十分です。

他の評価ボードと同様にプログラマとしてPSoC 5LPが搭載されています。この評価ボードの場合、デフォルトのファームウェアとしてKitProg2が書き込まれています。

##ModusToolboxを開く
それでは、ModusToolboxを開いてみましょう。その前にインストールをしなくてはなりませんが、インストール方法については、どなたかが書いてくれるでしょう。

ModusToolboxは、eclipseをベースとしたIDEです。そのため、作業場所としてWorkspaceを指定しなくてはなりません。ModusToolboxを開いたときに最初にあらわれるのが、Workspaceを指定するダイアログです。

GS003906.png

ModusToolboxでは、複数のプロジェクトを作成してひとつのアプリケーションにまとめ上げるという方法でバイナリを作成します。そのため、アプリケーションごとにWorkspaceを作成した方が使いやすいようです。この記事でも、Lチカアプリケーションのために"C:\MTW\LChika"というWorkspaceを作成します。

LaunchをクリックするとIDE画面が開きます。

GS003907.png

最初は、"Welcome"というタブが全面をおおっていますが、必要ないので閉じてしまいましょう。これで作業画面が出てきます。

GS003908.png

##ターゲットとベースアプリケーションを指定する
次にアプリケーションを作成します。画面左下にある"Quick Panel"タブにある"New Application"をクリックします。

GS003909.png

すると、"ModusToolbox IDE Application"というダイアログが開きます。

GS003912.png

このダイアログでは最初にターゲットとなるハードウェアを指定します。本来であれば、上にある"Dev/Eval Kit"をクリックして評価ボードを選ぶべきなのですが、今回使用するCY8CPROTO-063-BLEは、ModusToolboxに登録されていません。そのため、下の"Custom Hardware"をクリックしモジュールを探すという手順になります。なんで、差別されるんかな。

GS003913.png

リストからモジュールCYBLE-416045-02を選んだら、"Next"ボタンをクリックします。
次は、ベースになるアプリケーションを選択します。ModusToolboxでは、ベースになるアプリケーションから目的のアプリケーションに仕上げていくという手法を考えています。そのため、このステップで目的に一番近いアプリケーションを探します。

GS003914.png

とは言っても、この記事では使い勝手を確認するのが目的ですから、何もしないアプリケーションである"EmptyPSoC6App"を選択します。また、"Name:"フィールドにはこれから作成するアプリケーションの名前を入れます。ここでは、"LChika"という名前にしました。

GS003915.png

"Next"をクリックすると最終確認ダイアログに変化します。ここで、"Finish"をクリックしてしばらくすると、アプリケーションが作成されます。

GS003916.png

左上の"Project Explorer"タブを見ると、作成されたアプリケーションには、5個のプロジェクトが存在するのがわかります。

##出力端子を設定する
PSoCでプロジェクト作成直後にやるのは、ハードウェアの設定です。
作成されたプロジェクトのうち、"LChika_config"には、"design.modus"という名前のファイルが有ります。

GS003917.png

このファイルをクリックすると、ハードウェアを設定するための外部プログラムである"Device Configurator"が開きます。

GS003918.png

設定を行うためのタブがいくつかあります。しばらくModusToolboxを使ってみた所、最初は"Pins"タブを開いて端子の設定をするのがよさそうです。

GS003919.png

このアプリケーションでは、評価ボードの赤色LEDを点滅させるためにP6[3]を使用します。まず、P6[3]の隣にあるチェックボックスにチェックをいれて、端子の名前を記述します。ここでは、"Pin_LEDR"という名前をつけました。

次に画面右側の"Parameters"タブの設定を行います。

GS003920.png

  1. "General: Drive Mode"を"Strong Drive, Input buffer off"に設定して、LEDを駆動できるようにします。
  2. "Terminals: Digital Output"を"TCPWM[0] 32-bit Counter 1 pwm_n"に設定して、PWM出力をこの端子から出力できるようにします。

PSoC 6 MCUでは、端子に割り当てられる機能がかなり制限されています。そのため、LEDが接続された端子に対して割り当て可能なPWM出力を選択するという順序で行った方が便利です。

##PWMを設定する
次は、PWMの設定です。さきほど"TCPWM[0] Counter 1"を設定した"Digital Output"の欄に鎖のアイコンが出てきました。

GS003921.png

このアイコンをクリックすると、直接PWMの設定画面に飛ぶことができます。

GS003922.png

端子の設定と同様にチェックボックスにチェックを入れて、名前を付けます。ここでは、"PWM_2Hz"としました。

次に画面右側の"Parameters"タブの設定を行います。

GS003923.png

  1. "Period"の値を500000に設定します。まだ設定をしていませんが、このPWMには1MHzのクロックを使用する予定です。そのため、500,000分周して0.5sec周期のPWM出力を得ようとしています。
  2. "Compare"の値を250000に設定します。"Period"の半分の値に設定することによって、PWM出力のデューティー比は50%になります。
  3. "Clock Signal"を"8 bit Divider 0 clk"に設定します。上述のように1MHzのクロックを出力するためのクロック源を指定します。どのクロックも使用可能です。

また、"Clock Signal"の欄に鎖のアイコンが現れました。このアイコンをクリックして、今度はクロックの設定を行います。

##クロックを設定する
クロック設定タブでは、すでにチェックボックスにチェックが入っています。

GS003924.png

名前を付けたら、画面右側の"Parameters"タブの設定を行います。

GS003925.png

  1. "Divider"に72を設定する。

72MHzの"CLK_PERI"から1MHzのクロックを作成するので、"Divider"に72を設定します。"CLK_PERI"を変えたら、忘れずに"Divider"を設定し直さなくてはなりません。なんて不便なんだ。

以上で三つのブロックの設定と相互接続ができました。"Device Configurator"のメニューから"File→Save"を選択して"design.modus"を保存します。保存ができたら"Device Configurator"を"File→Exit"で終了させます。

##ソフトウェア
このアプリケーションでは、Cortex-M4側ですべての処理を行わせます。このため、"LChika_mainapp"プロジェクトの"main.c"ファイルにソフトウェアを書きます。

GS003926.png

ソフトウェアと言っても、PWMを起動する処理だけです。以下のように3行書くだけでPWMが起動して分周を始めます。

LChika_mainapp/Source/main_cm4.c
int main(void)
{
    /* Set up the device based on configurator selections */
    init_cycfg_all();

    __enable_irq();

    Cy_TCPWM_PWM_Init(PWM_2Hz_HW, PWM_2Hz_NUM, &PWM_2Hz_config);
    Cy_TCPWM_PWM_Enable(PWM_2Hz_HW, PWM_2Hz_NUM);
    Cy_TCPWM_TriggerStart(PWM_2Hz_HW, PWM_2Hz_MASK);

    for(;;)
    {
    }
}

##プログラムしようとしたのだけど
以上で、設定とプログラムはおしまいです。あとは、PSoC 6 MCUに書き込むだけです。

GS003927.png

左下の"Quick Start"タブの一番下に"LChika Program (KitProg3)"という項目があります。評価ボードを接続し、ここをクリックすると、アプリケーションのビルドとターゲットデバイスへの書き込みまでをしてくれます。クロックすると、コンソールに何やら赤いエラーが現れました。

GS003928.png

「CMSIS-DAPが見つからない」

この評価ボードの初期設定は、KitProgモードになっています。"CMSIS-DAP"を使用するには、SW3(MODE)を押して、モードを切り替えます。すると、LED2(STATUS)が点灯から消灯に切り替わります。これで、"CMSIS-DAP"が使えるようになります。もういちど、"LChika Program (KitProg3)"をクリックします。

GS003929.png

「KitProgファームウェアが古いので、fw-loaderを使って最新版アップデートせよ」

このエラーは、PSoC 5LPにKitProg2が書かれているのが原因です。ModusToolboxで使用するためには、KitProg3が必要になってきます。書き換えるためには、fw-loaderというプログラムを使用する必要があります。

fw-loaderは、実行ファイルが"C:\Users<user id>\ModusToolbox_1.0\tools\fw-loader-1.0\bin"に有りますが、コンソールから開く必要があります。

  1. 実行ファイルのあるフォルダでコマンドラインを立ち上げます。
  2. SW3(MODE)を押して、KitProgモードに入れます。
  3. "fw-loader --device-list"を実行します。
C:\ .. \bin>fw-loader --device-list
Cypress Firmware Updater, Version: 1.0.0.505
(C) Copyright 2018 by Cypress Semiconductor
All Rights Reserved

Info: Start API initialization
Info: Connected - KitProg2-1B14156503068400
Info: Hardware initialization complete (713 ms)
Connected supported devices:
        1: KitProg2-1B14156503068400    FW Version 1.5.0

この出力結果の"KitProg2-1B14156503068400"の部分がCY8CPROTO-063-BLEに搭載されたKitProgのIDです。これを使って、ファームウェアをKitProg3にアップグレードします。

C:\ .. \bin>fw-loader --update-kp3 "KitProg2-1B14156503068400"
Cypress Firmware Updater, Version: 1.0.0.505
(C) Copyright 2018 by Cypress Semiconductor
All Rights Reserved

Info: Start API initialization
Info: Connected - KitProg2-1B14156503068400
Info: Hardware initialization complete (721 ms)
Device 'KitProg2-1B14156503068400' opened successfully
Info: Kit FW is 'KitProg2' ver. 1.05 b000. Upgrade file is 'KitProg3' ver. 1.01 b158
Info: Disconnected - KitProg2-1B14156503068400
Info: Connected - KitProg Bootloader-1B14156503068400
Info: Bootloader Version: Major 1, Minor 1, Build 40
Info: FW Upgrade to version: 1.01 b158
Info: Bootloading ...
Info: Verifying ...
Info: FW Upgrade completed
Info: Connected - KitProg3 CMSIS-DAP BULK-1B14156503068400
FW update completed successfully
Info: Disconnected - KitProg Bootloader-1B14156503068400

これで、KitProg3に書き換えられました。もう一度SW3(MODE)を押してCMSIS-DAPが使えるモードにします。

##再び、プログラム
もういちど、"LChika Program (KitProg3)"をクリックすると、こんどは、うまく書き込めました。LEDも点滅しています。

GS003930.png

ただのLチカなのに、18kBも必要なんですね。

##関連サイト
PSoC 6 BLE Prototyping Kit
ModusToolbox™ Software Environment

6
1
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
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?