効率的マイコン習得の評価ボード

“学問に王道なし”とは言いつくされた諺です。しかし効率的にマイコンを習得する1番の方法は、ベンダー評価ボードを使うことだと私は思います。理由は、価格と確実動作、サンプルソフトの多さです。複雑な内容を理解、習得するには、文章説明だけでは限界があります。マイコンは、1つでも設定を間違うと、動作しない状態になるのも理由です。

ところが、このベンダー評価ボードも数多くあり、どれが良いか初めての開発者には分かり難い面も多いでしょう。そこで、個人的に最も好きなCypressマイコンの評価ボードを例に、評価ボードを分類し、特徴を解説します。

Cypressマイコンが好きな理由

ルネサス)RL78/G1x、NXP)LPC8xx/LPX111x、Kinetis L/Kと比較して、私がCypress)PSoC/PRoCが好きな理由は、ハード的にはアナログ/デジタル両方の機能が豊富な点、ソフト的にはIDEのPSoC Creatorが使いやすい点です。
また、Cypressサイトも他社より情報が豊富で充実しています。豊富なだけでなく、きちんと整理、分類されているので、検索も容易です。内容が良く解った技術者がサイトを構築すると、このようになると思います。

4種類のCypressマイコン評価ボート

そんなCypressマイコンの評価ボードは、4種類に分類されます。他社サイトでは、評価ボードが一覧で表示されることが多いのですが、最初にこのような分類が無いと混乱します。

4 Evaluation Board Types
4 Evaluation Board Types
Cypressの4種類の評価ボード比較
評価ボード分類 特徴 個人的解釈
Prototyping Kits 超低価格 単独で動作させるには十分だが、サンプルソフトテストには、外付けLEDやハードウエア追加が必要で、その手間暇がかかる。
Pioneer Kits 低価格 サンプルソフトテストに十分な外付けハードも一緒にした評価ボード。さらにArduinoコネクタ実装なので、拡張性も高い。
Arduino Shields Arduinoのシールド Arduinoコネクタ実装の拡張機能基板で、最近のマイコン開発にはArduinoコネクタがデファクトスタンダードになりつつある。
Partner Kits 高機能 高機能/高性能マイコンを評価するためのボード。

お勧めは、Pioneer Kitsです。この分類の評価ボードなら、サンプルソフトをそのままダウンロードして動作確認ができる上、Arduinoシールドを使って自分なりの拡張機能もテストできます。使用するMCUのPioneer Kitsを探して開発に着手すれば良い理由を以下に示します。

マイコン初心者トラブルの回避

経験からマイコン初心者がトラブル箇所で多いのが、MCU初期設定、IDE操作ミスです。いずれも、ユーザーマニュアルの初めの方に記述されていますが、読み間違いや勘違いにより発生します。
その結果、マイコンを思った通りに動かせず、最初の段階でつまずいてしまします。これがアセリを誘発し、さらに悪循環を生みます。チョットした事ですが、一度生じた先入観は簡単には元に戻りません。

Pioneer Kits評価ボード+サンプルソフトで確実にマイコンを動作させると、上記のミスはかなり防げます。とりあえず取説どおりに設定し、サンプルソフトが動けば、嬉しいしアセリは生じません。その後でMCUユーザーマニュアルを読めば、冷静に設定内容も理解できます。

MCUユーザーマニュアルは、文章だけで説明するが役目です。しかし、動く評価ボードを実際に操作しながら内容を理解すると、自分の勘違いやミスにすぐに気が付きます。本当に些細なミスであっても、アセリが有るのと無いのでは、雲泥の差です。

サンプルソフトソースからポイントをつかむ

サンプルソフトは、マイコン開発のバイブルです。しかし付属の説明文章は、細かい内容や、開発のポイントは記載していません。開発で重要となるこの部分は、サンプルソフトのソースから、開発者自らが獲得するのが一番良いと思います。サンプルソフトの読み方は、コチラにも記述しています。“木を見て森を見ず”にならないようにしましょう。

動作ソフトへ変更を加え経験を積む

いろいろなサンプルソフトを動かしていると、ここを変更すればもっと良いのではないか?と思う箇所も発見します。そんな時は、変更を加えトライできます。もしNGなら、その原因が解ります。NG:失敗も経験です。効率的に経験を積むことができる、これがPioneer Kits評価ボードです。

超低価格のPrototyping Kitsでも外付けハードを追加すれば、Pioneer Kitsと同様のことができます。但し、追加の手間がかかります。ハード追加時にミスが発生するとソフト開発は先へ進みません。電子工作習得やハード開発の経験を積む意味では良いのですが、ここは割り切ってソフト開発に適したPioneer Kitsを選ぶのが得策です。

まとめ

マイコンテンプレートも数年前は、Prototyping Kits的な評価ボードを使って販売した経験があります。この時は、ご購入者様からは、ハードウエアを追加したが動ないというご相談を多数頂きました。トラブル原因は、UARTのTX/RX配線ミスなどで解決しましたが、動かないとご購入者様もストレスが溜まります。

そこで、ハード追加が不要なPioneer Kits相当の評価ボードで販売すると、不動作トラブルは無くなりました。簡単に動作することが、初期段階では重要である証左と言えます。

販売中のマイコンテンプレートは、全てPioneer Kits評価ボード相当を動作ボードに選定しています。是非、お試しになり、効率的にマイコンを習得してください。

※一部、配線のみ追加するBaseboardを使って機能拡張しています。配線のみですのでハード追加に比べミス確率は低いです。Baseboardでの機能拡張については、コチラなどを参照ください。

速報:Windows10 1607のマイコンIDE動作確認

Windows 10 Anniversary Update、Red Stone 1(RS1)のリリースが8月2日実施されました。

弊社マイコンテンプレート使用中のマイコンIDEを、このWindows 10 RS1、1607で動作確認しましたのでお知らせします。

IDEは、全て8月3日時点最新版です。マイコンテンプレートソフトのコンパイルと評価ボードへのダウンロード動作を確認しました。

マイコンIDEの詳細はコチラ、評価ボードはコチラに一覧表を掲載しております。

※Windows10 1511で動作していたものは、今のところ1607でも問題なく動作します。
※Windows 7時代に購入した評価ボードは、一部Windows 10で動作しない場合があります。この場合は、ボードドライバ(USBドライバ)の更新で動作するようになります。

Windows 10 1607動作確認マイコンIDE
マイコンIDE(ベンダ名) Windows 10 1607動作確認バージョン
CS+ for CC(ルネサス) V4.00.00 [15 Mar 2016]
e2 studio(ルネサス) Version: 5.1.0.022
LPCXpresso(NXP v8.2.0 [Build 647] [2016-07-18]
Kinetis Design Studio(NXP Version: 3.2.0
PSoC Creator(Cypress PSoC Creator  3.3 CP3 (3.3.0.9604)
Arduino IDE(Intel 1.6.10 Hourly Build 2016/07/26

 

Atom新規開発中止とPSoCアナログ特化製品追加

IntelがAtomプロセサの新規開発を中止すると発表しました。
Cypressは、アナログ制御に特化したPSoC 4ベース新製品投入を発表しました。
所感を記載します。

Atom新規開発中止

Surface 3やEdisonなどの既存Atomを使った製品の今後も怪しくなってきますね。Galileoは Pentiumを使ったSoC: System on Chipなのでとりあえず安心ですが…。

少品種大量生産が 半導体メーカーのビジネスモデルなので、マッチしない製品群は、開発停止というユーザにとっては避けてほしいオプションが常に付きまといます。

マイコン開発者にとって、「代替品が可能なデバイス」に魅力を感じるのは、この最悪オプションのためです。

これはIntelの話でしたが、日本メーカー競争力と継続性強化のための方策についてコチラに興味深い記事があります。

PSoCアナログ特化新製品追加

一方Cypressは、Spansion買収で得たCortex-M0+ライセンスを使ったPSoC 4に、オペアンプやコンパレータ、アナログ・マルチプレクサなどのアナログに特化したプログラマブルアナログブロックを統合したPSoC Analog Coprocessor(Cy8C4Axx)新製品を追加しました。

コプロセサ化により、センサの変更を、ホストプロセサソフトへ及ぼさずに短時間でプロトタイピング開発できるメリットがあります。

PSoC Analog Coprocessor Merit
PSoC Analog Coprocessor Merit(記事より抜粋)

モーション、照度、湿度、近接センサ、サーミスタなど搭載の評価ボードCY8CKIT-048を使うと、アナログ・フロント・エンド(AFE)がPSoC Creatorで開発できるので、一般的に40時間かかる方法と比べ4時間で開発できるそうです。「1週間のスケジュールを、半日でできる!」、夢のようです。

無線通信規格の変更容易なコプロセサ化

評価ボードにはArduinoシールドコネクタも実装済みなので、Raspberry Pi 3などのIoTコンピュータ:MPU/SBCに直接搭載も可能でしょう。

また、対ホストプロセサ通信には、UARTが使えます。ここにUART over BLEやUART over Threadの適用が予想できます。

MCUとMPU/SBC間の無線通信規格が流動的な現状では、このアナログコプロセサ機能配分も適していると思います。CY8CKIT-042搭載のBLE 4.1がBLE 4.2に簡単に変更できたように、無線規格変更に対して柔軟に対応できるからです。

解説:マイコン評価ボード

マイコン開発には、各社が低価格で提供している評価ボードは必須です。
弊社マイコンテンプレートも、各ベンダの評価ボードで開発しています。この評価ボードを解説します。

採算度外視の低価格、高信頼ハードウエア

ソフト開発者に「確実に動くハードウエア」を「低価格」で提供する、これが評価ボードです。

マイコン開発には、「専用」のソフトウエアと「専用」のハードウエアの両方が必要です。そして片方のデバッグには、もう片方にバグが無いことが必須です。つまり、ソフトデバッグには、バグなしのハードが必須なのです。そこで、バグなしで確実に動作する「汎用」ハード、これが各ベンダ提供の評価ボードです。

但し、専用ハードがいずれ開発されるので、汎用の評価ボードは低価格とならざるをえない運命です。高ければ誰も買ってくれないからです。しかし開発者にとっては、以下のように優れた教材と言えます。

  1. ソフト開発者が、専用ハードが出来上がる前にソフトデバッグ可能な環境を自由に構築できる
  2. ハード開発者が、そのまま専用ハードにも使える高信頼ハード設計を学べる
  3. マイコン初心~中級者が、ベンダ標準のデバッグ技術で低価格な開発環境を使って自習できる
  4. 評価ボードは、各ベンダフォーラムで多くの情報が記載されており、適用サンプルソフトも多い

ターゲットMCU、デバッグインタフェース、拡張コネクタの3構成

評価ボードは、ターゲットMCU、デバッグインタフェース、拡張コネクタの3つから構成されます。

NXPの評価ボード:LPCXpresso LPC812とルネサスのRL78G13-Stick、CypressのCY8CKIT-042 の例を示します。

LPCXpresso LPC812構成
NXP LPCXpresso LPC812構成
RL78G13-Stick構成
Runesus RL78G13-Stick構成
CY8CKIT-042構成
Cypress CY8CKIT-042構成

ターゲットMCU

ターゲットMCUとは、開発MCUそのものの部分です。残りのデバッグインタフェースと拡張コネクタは、ターゲットMCUが異なっても同一です。

拡張コネクタ

最近はArduino用シールドコネクタを拡張コネクタに用いる評価ボードが多いです。これは、市販Arduinoシールドの種類が増えたため、上手く探せれば汎用の評価ボードに複数のArduinoシールドを拡張コネクタで接続し、専用ハードに近い、いわば「疑似専用ハード」を市販品のみで作れます。ボード単位のハード部品化がもたらした結果と言えます。

個人的には、シールドよりも、mbed – Xpresso Baseboardの方がより低コストで疑似専用ハード実現ができると思っています(こちらに詳しく記載しました)。

デバッグインタフェース

デバッグインタフェースは、IDEデバッグ機能を使うために必要な部分で、ターゲットMCUのシリアル入出力とパソコンUSBを変換する機能もここに含みます。この機能専用のマイコンが実装されることが多くなりました。このマイコンでデバッガ機能も代行するので、別途デバッガを購入せずにソフトデバッグが可能です。

MCUがARM Cortex-M0/M0+の場合には、ARM標準のCMSIS-DAPでMPUコアをデバッグできるインタフェースも実装されます。CMSIS-DAPはこちらの記事も参照してください。

CMSIS-DAPは、ターゲットMCUとデバッグインタフェースを切り離した後に、ソフトデバッグする時、別途ARM専用デバッガが必要ですが使えます。このように、1つの評価ボードで複数のデバッグ方法が使えるのも特徴です。

ARM系コアの場合は、ベンダ評価ボードもほぼ同じ構成で、ARM専用デバッガを1台持っていれば、ベンダ各社の評価ボードをまたがっても使えるのがメリットです。マイコン開発のデファクトスタンダートになりつつあります。

一方、デバッグインタフェースをE1コネクタでしか持たないルネサスのCPUボードをデバッグする際は、別途E1デバッガを接続しないとデバッグができません。この点は、Cortex-M0/M0+コアのMCUと比べるとコスト的に劣ると言えるでしょう。

Runesus QB-R5F104LE-TB構成
Runesus QB-R5F104LE-TB構成

デバッガ機能なしの統合開発環境:IDEの背景

シールドなどのボード単位の部品化が進んだ結果、専用ハードは、もはや既存ハードを組み合わせて、その小型化のみを行う設計、つまり専用基板化が主な開発内容と言えるかもしれません。

同様に、ソフト開発もベンダが、多くのライブラリを提供することで、専用ソフトをライブラリの組合せで完成できるレベルを目指しているようです。IDEにデバッガ機能がないArduino IDEなどは、この現れのような気がします。

ハードとソフトのオープンソース

ハード版オープンソースとしてArduinoシールドコネクタを持つ既成基板は、増えつつあります。

オープンソースを活用したソフト開発は、Unix系では当たり前です。この流れがマイコンソフトへも徐々に浸透する可能性を感じています。この場合、ハードの専用基板化開発に相当するのは、RTOS適用や弊社のマイコンテンプレートになるかもしれません。

マイコンIDE更新

扱うMCUデバイスの追加、WindowsやiOSなどのOS変更、Eclipseそのものの変更、バグ修正など様々な要因によりマイコン開発環境:IDEの更新は発生します。今回は、マイコンIDE更新について解説します。

更新通知と更新理由

マイコンアプリケーションソフト開発中ならば、リスクが増える可能性もあるIDE更新は避けたいものです。
このため「開発者が更新をするか否かを選択」できるのがマイコンIDEの特徴です。Windowsと大きく異なる点ですね。

更新判断には、「更新が発生」したか、「更新の理由」は何か、この2つを知る必要があります。この情報をIDEのWelcome画面のWebリンクで教えてくれるのがEclipseベースのIDEです。NXPのLPCXpressoの例を示します。

LPCXpresso Welcome page
LPCXpresso Welcome page

赤矢印のリンク先をみると、最新版IDEと、変更内容などが解ります。使用中のIDEと版数が異なる場合には、この内容を読んで更新判断ができます。新旧LPCXpressoは、緑囲いで示した版数毎に別フォルダへインストールされるので、IDE更新リスクがフォルダ内に閉じ込められるので安心です。

また、NXPに買収された旧FreescaleのKinetis Design Studio: KDSの例が下図です。Welcome画面に加え、Help>Check for Updatesで更新確認と新版インストールまでバックグラウンドで可能です。この機能は、LPCXpressoにはありません。

Kinetis Design Studio Check for Updates
Kinetis Design Studio Check for Updates

但し、私の環境では、ベースとなるEclipseのメジャー更新が関係しているのかもしれませんが、KDS V3.1からV3.2への更新ができませんでした。V3.2更新は、別途インストーラで可能です。やはりIDE更新確認ツールがあっても、時々サイトでIDEの最新版確認は、必要だと思いました。

また、CypressのPSoC Creatorは、Update Managerツールで更新確認とインストールができます。旧版はアーカイブ保存されるので、万一最新版にトラブルが発生しても安心です。

Cypress Update Manager
Cypress Update Manager

以上3社のマイコンIDEは、どれもEclipseベースのIDEですが、更新方法や旧版の扱いは各社異なります。

一方、ルネサス独自仕様のIDE:CS+もアップデート・マネジャーツールで更新します。独自仕様なので、細かい更新内容確認や、一部選択更新なども可能です。ツール・ニュースなどで更新、バグ情報を知らせてくれるのも役立ちます。
また、更新前に、「開発ツールをパックして保存(K)…」を実行すると、更新トラブル対策も可能です。

Runesus CS+ Packing tool
Runesus CS+ Packing Tool

マイコンIDE更新を安全にするには

マイコンIDEの更新トラブル回避には、OS起因でない場合は、旧版のIDEへ戻せることが必要です。また、Eclipseのメジャー更新時などは、操作方法が変わることもあるので注意が必要です。
開発案件のキリが良い時期に更新するのが安全策でしょう。

マイコンIDE開発経験を活かすには

弊社マイコンテンプレートで使用中の各社IDE特徴を示します。マイコンIDEは、Eclipseベースに集約されつつあるようです。今回は、同じベースでもIDEの更新方法が異なることを示しました。

これは、EclipseベースのIDEを使う時に覚えておくと役立つのが、各社共通のエディタやデバッグなどのコア機能であることを暗示しています。他社IDE使用時に、この経験が活かせるからです。

MCU IDE Comparison
マイコンIDE比較

マイコンIDE習得のコツやTipsは、コチラのページにもまとめています。参考にしてください。

PSoC 4 BLE Pioneer Kitサンプルソフト改版

弊社推薦PSoC 4 BLE/PSoC 4開発キットのPSoC 4 BLE Pioneer Kit:CY8CKIT-042-BLE付属サンプルソフトが、2016/02/12 Revision *Hへ改版されました。Cypress Update Manager起動でUpdate可能です。

Update Manager更新失敗時の対処

殆どの場合Update Managerで更新は成功します。しかし、Windows 10の煩いセキュリティのおかげ?で時たまCY8CKIT-042-BLEのみUpdate失敗があります。この時は、CY8CKIT-042-BLEサイトから直接Download CY8CKIT-042-BLE Kit Only Packageをダウンロードし実行すれば、更新は成功します。

Cypress Update Manager成功時
Cypress Update Manager成功時

更新内容

今回の更新は、PSoC 4 BLEキットに搭載可能なBluetooth 4.2対応のPSoC 4 BLEとPRoCモジュールが増えた事への対処です(コチラの記事も参照)。但し、キットに初めから搭載されているサンプルソフトとモジュールに変更はありません。キットガイト抜粋のサンプルソフトと対応モジュール一覧が下記です。

PSoC 4 BLEサンプルソフトと対応モジュール一覧
PSoC 4 BLEサンプルソフトと対応モジュール一覧

キット搭載のROM 128KBでBluetooth 4.1対応モジュールのPSoC 4: CY8C4247LQI-BL483と、PRoC: CYBL10563-56LQXIが、デフォルトで対応するモジュールのデバイスです。(デバイス差明示のため赤表記)。

PSoC 4 BLEモジュールでは、
Bluetooth 4.1でROMが128KBから256KBへ増えたCY8C4248LQI-BLE483、
Bluetooth 4.2でROMが256KBのCY8C4248LQI-BL583、
PRoC モジュールでも、同じく
Bluetooth 4.1でROMが128KBから256KBへ増えたCYBLE10573-56LQXI、
Bluetooth 4.2でROMが256KBのCYBL11573-56LQXI、
BLEドングルもBluetooth 4.2対応のCYBL11573-56LQXIのサンプルソフト、Projectが対応します。

弊社テンプレートの適用例であるBLE_PSoCプロジェクトのリソースメータが示すように、簡単なアプリケーションでも128KB ROM/RAMの6割以上を使用しますので、デバイスROM容量が256KBへ増えたのは、納得できます(販売中のPSoC 4/PSoC 4 BLE/PRoCテンプレートはコチラを参照してください)。

テンプレート応用例BLE_PSoCのリソースメータ
テンプレート応用例BLE_PSoCのリソースメータ

残念ながら、わずか15$で追加できるBluetooth 4.2対応モジュールを未入手なので確認はできていませんが、モジュール変更時は、デバイス再選択と使用コンポーネントをBLE 4.2へ更新しさえすれば簡単にサンプルソフトを適用できそうです。

この追加モジュールのROM容量とBluetoothの対応が解りやすいのが、ガイトA.5表です。

実装モジュールのROMとBluetooth対応
実装モジュールのROMとBluetooth対応

CySmartアプリソースコード公開

Cypressは、BLEドングルの代わりにAndroidやiOSで使えるCySmartというスマホアプリも公開中です。今回、これらのソースコードも公開されました。時間と能力があれば、モバイルアプリ開発も是非トライしたいと考えています。

※弊社BLE動作テンプレートは、全てBLEドングルを使ってBLE通信動作を確認済みです。CySmart+私のNexus 5:Android 6.0.1という組合せは、原因はNexus側にあると思いますが上手く接続できないのが理由です。

NXPとCypress動向

NXPは2015年にFreescale、Cypressは2014年にSpansionを買収しました。買収後のNXPとCypressのマイコンラインアップがどう変わるかが気になります。
日経テクノロジーOnlineで両社のマイコン新製品と今後の開発動向に関する記事がありましたので、要点をリストアップしました。

NXP: LPCとKinetisを徐々に統合

“新生NXP初のマイコン、旧NXP系で低消費電力がウリモノ” 2016/02/24より

  • NXPのマイコンシェア、車載MCUは世界第2位、車載を除くMCUは世界第1位
  • LPCマイコンと(旧Freescale)Kinetisマイコンは、徐々に統合(Geoff Lee氏談)
  • 新製品は、NXP系のLPC54000シリーズ(Cortex-M4FでコプロセサにCortex-M0+搭載可)

弊社マイコンテンプレートで使った、NXPのLPC8xx/LPC111xと旧FreescaleのKinties Eも現在NXPから全て供給中ですが、統合される可能性があることが解ります。

Cypress: PSoC 4へCortex-M0+コアを採用

“FMマイコンもPSoCも同じツールで開発、Cypressがアルファ版をデモ” 2016/02/29より

  • 新製品PSoC 4 Sは旧Spansionライセンス取得のCortex-M0+を採用。今後新開発PSoC 4もM0+を使う
  • PSoC 4 S搭載の第4世代CapSenceは、第3世代比、雑音耐性向上と低電力化
  • PSoC 4 S Pioneer Kit ($49)、PSoC 4 S Prototyping Kit ($10)発売
  • PSoC CreatorでFM0+マイコン(旧Spansion)も開発できるよう強化中

Cortex-M0+とM0を比較すれば、M0+が優れているので、新開発のPSoC 4系にM0+を採用するのは理解できます。
数あるマイコンIDEの中で私が最も使いやすいと評価するPSoC Creatorですが、PSoC 4とFM0+はアーキテクチャが異なり、さらにPSoC 4系にM0+が採用されれば、ますますFM0+を使う機会は減ると思います。
通常のマイコンソフト開発では、M0+とM0を区別することも少ないので、Creator強化は静観したいと思います。

マイコンでBLE実現の3方法

レガシーなUARTは簡単に使えるマイコン開発者でも、BLE:Bluetooth Low Energyは、新しくかつ仕様も追加されつつあるので手を出しにくいものです。しかし、いざBLEを仕事で使う段になれば、いつものように、厳しいスケジュールでの開発が要求されます。

そのような開発者個人が、入手性が良いマイコン:MCUで電波法の縛りがある日本国内でBLE通信を自習する方法を3つ紹介します。

BLE習得3方法

仕事での開発と違い、個人でBLEの開発環境を整える場合は、「入手性とその金額」が問題になります。金額ベースで安い順に3方法を評価したのが下図です。

BLE実現3方法
BLE実現3方法

Cypress PSoC 4 BLE利用の方法1は、低コスト($49)で環境構築可能ですが、多少BLE仕様を理解する必要があります。しかし、BLEを習得するならお勧めの方法です。

BLEモジュール追加の方法2は、マイコンUART入出力にBLEモジュールを追加する方法です。
マイコン以外にBLEモジュールが必要なため、追加コスト(図示、浅草技研BLESrialの場合4000円)が必要ですが、BLEを無線のドカン(UART over BLE)として使えるので、BLEをブラックボックスとして扱えるのが魅力です。
方法1と方法2のコスト差は、使用マイコンにも依存するので大差ありませんが、後で示す仕様変更時に差が出ます。

ルネサスRL78/G1D利用の方法3は、BLE機能を持つルネサスRL78マイコンを使うので技術資料が日本語ですが、開発には高価な有償版CS+と評価ボードが必要になります。RL78マイコンを仕事で使っている場合は、有利かもしれません。

BLE仕様が変わる現状への対処

マイコンBLEの通信相手は、前回示したMPU/SBCなどのIoT向けPCの他に、スマホが使えます。

スマホBLEには、「BLE 4.0/4.1/4.2など様々な仕様」があります。多くの通信仕様のように、下位互換性がありますが、セキュリティなどの機能強化が図られており、結果、対応マイコンにはますます大容量ROMや高性能化が要求されます。

このようなBLE仕様の変化や仕様追加に対して、PSoC 4 BLE: CY8CKIT-042-BLEは、実装CPUモジュール($15)の載せ替えで対応します(コチラの記事を参照)。一方、BLEモジュール追加の方法は、モジュール購入時で仕様が固まっているので、変更には対応モジュールの再購入が必要です。

総合評価結果

入手性とその金額、BLE仕様変更への対応から、PSoC 4 BLEを使った方法1が、コスト的にも、BLEに関するCypress日本語資料も少なからずありますので、個人でBLE習得するには最も優れた方法だと思います。

IoT時代は、UARTと同じレベルでBLEを使うことが必須です。仕事でせかされる前にBLE技術を習得しませんか? 弊社PSoC 4 BLEテンプレートもお役に立てると思います。

Raspberry Pi 3 Model Bの意味

Raspberry Pi 3 Model Bが発売されました。前のRaspberry Pi 2との差分は、処理能力向上とIEEE 802.11b/g/n、Bluetooth 4.1 (BLE: Bluetooth Low Energy)の無線通信機能搭載です。

Raspberry Pi 3 Model B(記事より抜粋)
Raspberry Pi 3 Model B(記事より抜粋)

IoTでは、数億~数十億個とも予想される情報収集マイコン(MCU)と、これらマイコンを束ねてクラウド側処理に適した変換処理をするRaspberry Piのようなコンピュータ(MPU、SBC)が必要です。

今回Raspberry Pi 3でIEEE 802.11b/g/n、Bluetooth 4.1(BLE: Bluetooth Low Energy)が追加実装されたことは、MCU、MPU/SBC間の通信手段としてこれら方式が有力であることを示しています。また、セキュリティや通信に処理能力が必要なので高性能化も解ります(既にこれら機能実装済みのDragonBoard 410cは、こちらを参照)。

低消費電力が要求されるマイコンMCUとの通信にはBLE、高速大容量が要求されるクラウドとの通信には無線LANが適用されると思われます。

IoT階層構造
IoT階層構造

今後のマイコン開発者には、従来通信の「UARTと同レベルでBLE習得が必須」です。

弊社マイコンテンプレートは、CypressのPSoC 4 BLEテンプレートでこの要求に対応済みです。最新のPSoC Creatorは、よりセキュリティを強化したBLE 4.2へも対応しています。BLEをUARTと同様に簡単に使ってみませんか?

マイコンテンプレート利用のコツやTips:その3

マイコンテンプレートを利用するコツ/Tipsの第3回目は「時分割処理のタイミングとインタフェースRAM」について示します。
販売中のテンプレート処理起動の間隔は、250us/1ms/10ms/100ms/1s/無限ループの6種類です。この6種類の使い方を示します。

処理起動タイミング

マイコンの処理は、電源投入後、「1回のみ実行する」スタート処理と、無限ループで「繰り返し実行する処理」の2つに大別できます(ROM/RAMを初期化するなどのスタートアップ処理は、除いています)。

ここでは無限ループに代わってテンプレートが実行する、繰り返し実行する処理の間隔:「タイミング」を考察します。

テンプレートは、起動する処理が無い無限ループ:空き時間で起動するのは、Sleepなどの低消費電力処理であることは、第2回で示しました。

100msと1sの起動間隔は、マイコンにとっては「遅い処理」、例えば、LED点滅や、LCD初期設定、SWチャタリング対策の起動に適しています。
※LCD初期設定は、無限ループ前のスタート処理で実行することも可能です。

1msと10msの起動間隔は、「早い処理」、例えば、割込みの応答処理などの起動に適しています。

250us起動間隔は、「最も早い処理が必要」な、例えば、UART/I2Cなどのデータ受信処理を起動することを想定しています。

つまり、早いレスポンスが必要な処理ほど処理間隔が短く、起動される処理のソース記述位置も上側になるのです。これがテンプレート時分割起動の「基本的な使い方」です。

実例が下図です。赤/緑/青LEDを、0.5/1/2秒毎にトグル点滅する場合です。赤囲みが、テンプレートへ追加されたLEDトグル処理を表します。それ以外が、テンプレートに初めから記述済みの起動処理です。

LED点滅処理での優先順位の例
LED点滅処理での優先順位の例

起動間隔

起動の間隔は、第2回で示したtick interruptの発生間隔です。
1ms>10ms>100ms>1sの順にレスポンスが早くなりますが、250usだけ特別に超高速応答です。これは、UART受信などの主として「いつ発生するか判らない応答に早く即応する」ためです。

販売中のテンプレートは、全てこの250usを起動間隔として開発しておりますが、実は「250usである必要性は無い」のです。因みに、FreeRTOSなどの組込OSでもtick interruptは1msです。

250usは、経験的にこの最高速でこれまで利用に問題が無かったからです。
この起動間隔を1msにし、UART受信処理を1ms起動に変更しても、メニュードリブンテンプレート動作などには問題ありません。
メニュードリブンテンプレートは、当該マイコンのUART受信バッファが1バイトでも、UARTコマンド長も1バイトなので、受信完了確認後ゆっくりバッファからデータを取り出しても間に合うからです。

起動間隔の設定は、テンプレート購入者様が「独自判断で設定して頂いても構いません」。

但し、250usよりも高速:短くすることは無いと思います。これよりも短いと、処理分割をより細かくする必要があり、開発がより厳しくなるからです。逆に、250usよりも長くすると、処理分割は楽になります。

テンプレートは、マイコン「コア動作速度を最高速」に設定し、起動間隔も「最高速と思われる250us」でデフォルトは設定しております。これは、「最初」にマイコンの最大能力で動作するアプリケーション開発後、「次の段階」としてコア周波数を下げるなどで、低消費電力化するアプローチを想定しているからです。

インタフェースRAM

処理間のデータやり取りにインタフェースRAMを使うことは、第1回で示しました。ルネサスのRL78/G1xは、通常RAMよりも高速アクセス可能なSADDRを持つなど特殊な例もありますが、低価格マイコンではRAMが貴重なリソースであることに変わりはありません。

この貴重なRAMを使う時に、ビット単位構造体を使い、ビット単位フラグでデータをやり取りすると、1バイトRAMで最大8個のフラグを使えるので効率的です。

テンプレートでは、このビット単位アクセスを容易にするため、userdefine.hにユーザ型定義を追記しております。処理間にブラグを多用する場合などにご活用ください。

マイコンテンプレートとは?

第1~3回で示したテンプレートは、「ISRは、サンプルプログラムを一部またはそのまま流用し、その他全処理をポーリング起動するマルチタスク処理の骨組み」と説明すると理解が早いかもしれません。

割込み処理は、ISRで割込みフラグ処理のみを行い、ISR発生をポーリングし割込み実処理を起動する。
サンプルプログラムの無限ループポーリングとの差は、処理に応じた時分割ポーリングである。
骨組みのテンプレートへ、サンプルプログラム流用の処理を組込んでプロトタイピング開発をする。
この理解で良いと思います。

ポイントのまとめ

  • 処理起動間隔は、250usとしているが、変更は可能、かつ任意
  • 高速な応答が必要な処理は、短い起動間隔へ配置
  • インタフェースRAMの効率的な利用に、ビット単位構造体も有効

* * *

3回に分けてマイコンテンプレート利用のコツ/Tipsを示しました。これらは、ソフトウエア開発では当然の事柄とダブる部分も多くありますが、数値では表せないのであえてコツ/Tipsとして記載しました。

組込OSを使うよりも簡単で、サンプル流用も可能なマルチタスク実現テンプレートが、お判り頂けたと思います。

販売中のマイコンテンプレートを活用し、アプリケーションの早期開発を成功させてください。