マイコンテンプレート利用のコツや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を使うよりも簡単で、サンプル流用も可能なマルチタスク実現テンプレートが、お判り頂けたと思います。

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

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

マイコンテンプレートを利用するコツ/Tipsの第2回目はテンプレートの「マルチタスク処理の実現方法」を示します。

組込OSの分割起動

シングルコアのマイコンで、マルチタスク処理の実現方法が、「処理の分割起動」です。
組込OSは、この分割処理=タスクの起動をOSが行います。FreeRTOSの“USING THE FREERTOS REAL TIME KERNEL”から抜粋したFigure 4は、このことを解り易く示しています。

OSのKernelは、tick interrupt毎にタスク切り替えを行います。t2でTask1は「強制的に中断」され、Task2へ切り替わります。t3では、Task2が強制中断され、Task1が「中断処理から再開」されます。

FreeRTOSの分割起動
FreeRTOSの分割起動

ある時刻で動作する処理は、Kernelを含めて1個ですが、tick interrupt毎に処理を切り替えてマルチタスク処理を実現します。

テンプレートの分割起動

分割起動は、テンプレートでも同じです。テンプレートは、第1回目で説明した「細かく分割した処理」をtick interrupt毎に時分割で起動します。組込OSとの差は、(簡単に説明すると)起動処理を強制的に中断したり、再開したりする機能が無いことです。

マイコンテンプレートの分割起動
マイコンテンプレートの分割起動

起動処理1の中断機能が無いので、t2のタイミングまでに「処理1が終了」していることが必要になります。

処理終了のための分割

この「処理終了」は、どうすれば得られるのでしょうか?

第1回説明の「細かい処理の分割」は、結果として処理時間も短くなり、この処理終了をもたらします。

マイコン処理分類(注意点)
マイコン処理分類(注意点)

注意すべきは、赤丸の処理の完了確認が必要な入出力処理です。しかし、ここを「完了確認の処理」と、「その結果で動作する処理」の2つに分けて開発すれば、問題解決です。それぞれの処理が短時間で終了するからです。

同じように割込み処理も、基本的にISR: Interrupt Service Routine内では、「割込み発生確認と割込み要因のクリア」のみを行い、「割込みの結果で動作する処理は別処理」として分割して処理化します。

このような処理分割により、デバッグが容易となり、別アプリへ流用/応用性、部品化も高まります。

勿論、サンプルプログラムのISR処理を「そのまま流用」してもテンプレートへ組込んでもOKです。サンプルプログラムが提供する典型的なISRは、処理時間が短い場合が殆どでだからです。

分割起動後の処理

起動処理で起動される側の処理時間が短くなると、起動処理へ戻る時間が増えます(上図ピンク)。この戻った時の処理が、無限ループの処理です。

テンプレートでは、無限ループ内で起動する処理は、低電力処理のSleep(またはDeep Sleep)です。
この結果、高速マイコンであればある程この「無限ループ:空き時間」が長くなり、マイコン消費電力の大部分を占めるコア動作を停止するSleepを効果的に使えます。

ポイントのまとめ

  • 処理時間を短くするため、「確認処理」と「その結果の処理」を分離
  • 起動処理無しの「空き時間」は、低消費電力処理を起動(SleepとDeep Sleepの差には注意)

次回予告

テンプレートが処理を分割し、これを分割起動するマルチタスク処理の実現方法を示し、処理分割のコツ/Tipsを示しました。次回は、「時分割のタイミング」について説明する予定です。

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

マルチタスク処理と組込OSの前回記事で、マイコンテンプレートを利用するコツ/Tips、ノウハウを示すことになり、その第1回目は「処理分割の重要性」について示します。
※説明するこのコツ/Tipsは、「販売中の全ての弊社マイコンテンプレート」に適用可能です。

処理分類

テンプレートが想定しているマイコンで開発する処理を、下記のように4つに分類してみます。

マイコン処理分類
マイコン処理分類

マイコンのアプリケーションは、これら「4分類の処理を組合せて」開発します。

説明の内容から「その他の処理」を除くと、各処理は数10~数100ステップの単純な処理です。従って、これら単純な処理の品質、バグが無いことが重要です。

「その他の処理」は、内容によっては多くの計算や開発ノウハウが必要となる分野です。
そこで、マイコン計算能力や大きなROM/RAMが必要になるかもしれないその内容には踏み込まず、「その他の処理」としてひとくくりにしています。

マイコンテンプレートも、この「その他の処理」の1つです。

サンプルソフト有無

「入力処理」~「割込み処理」のような単純な処理は、ベンダ提供のサンプルプログラムで提供されることも多いのです。だから、1から自分で開発するよりも、サンプルプログラムを利用する方が手間も少なくバグも無くなるのです(サンプルソフトの見つけ方はコチラを参照)。

マイコンテンプレートが、サンプルプログラムの流用/活用を重視するのは、これが理由です。

「骨組み」を提供するテンプレートへ、サンプルから入手した入力~割込みなどの「処理」を、骨組みに「追加」することでアプリケーションを早期完成します。

また、適当なサンプルソフトが無い場合でも、このように分類しておけば、「既存サンプルと似た方法」で開発する指針が与えられます。
つまり、サンプルソフトが提唱するマイコンに適した方法で処理を開発するのです。

サンプルソフトは、単にサンプルではなく、「当該マイコン利用のバイブル」と言っても過言ではありません。サンプルソフトの手法を活用/流用することこそ、開発成功の秘訣です。

テンプレートのメリット

テンプレートを使えば、最も重要で開発時間もかかる「その他の処理へ労力を集中」したアプリケーション開発が可能です。

このアプリケーション早期開発の結果、計算能力が不足した場合には、より高性能なマイコンを利用することや、改版や仕様追加を見越して、より大きなROM/RAMを使うなどの対策が「事前」に取れます。

プロトタイピング開発は、実際のアプリケーション開発に近い環境で、このように現状マイコンに対する予測/見識を持てること、これが最大の目的です。勿論、現状のマイコン能力で十分であれば、アプリケーション開発も完了です。

インタフェースRAM

処理間のデータやり取りにRAMを使うこと、これもテンプレートの特徴です。インタフェースRAMで処理を分離し、部品化するのです。

処理を分離しておけば、処理の中身がデバッグ中、または未完成であっても、完成後の想定データをデバッガでインタフェースRAMへ設定しさえすれば、データを送受する側の処理開発ができます。

RAMにより処理を分離分割し、なるべく単純でデバッグしやすい処理単位で開発することが目的です。

まとめ

要は、
処理単体を、細かく分割、できれば(なるべく)サンプルソフトを利用/流用して開発し、
インタフェースRAMで処理間を分離、当該開発のみでなく、他へも流用/活用できることを狙い、
アプリケーションのプロトタイピング開発ができる骨組み、
これがマイコンテンプレートです。

今回のポイントを下記に示します。

  • 処理を細かく分割する指針、方針を持ってサンプルソフトを読む
  • 分割した処理は、RAM値で動作決定する部品化
  • テンプレートへ、分割処理を追加してアプリケーション開発

次回予定

サンプルソフトは、解り易いシングルタスクの説明に重点を置いているため、「マルチタスク処理への配慮」がありません。そこで、次回は、テンプレートでどのようにマルチタスク処理の実現しているのか、そして今回説明した処理分割とどう結びつくか、などを説明する予定です。

次回以降のテンプレートを利用するコツ/Tipsは、下記内容の説明を予定しています。
第2回:テンプレートのマルチタスク処理
第3回:テンプレートの時分割タイミングとインタフェースRAM(最終回)

マルチタスク処理と組込OS

マイコンにマルチタスク処理をさせるには、FreeRTOSなどの組込OSを使う方法が一般的です。
NXPのLPCXpressoには、 このFreeRTOSを使って評価ボードLEDを点滅させる、いわゆる「Lチカサンプルソフト」が添付されています。
今回は、ARM Cortex-M0/M0+と同程度の性能を持つマイコンの組込OSを考察します。

FreeRTOS Lチカサンプルソフト

LPCXpresso824評価ボード(LPC824/Cortex-M0+、ROM:32KB、RAM:8KB)の赤LEDを0.5秒、緑を2秒、青を1秒毎に点滅させるFreeRTOS Lチカサンプルソースコードが下記です
(出典:lpcopen_2_19_lpcxpresso_nxp_lpcxpresso_824.zip、日本語コメントは筆者追記)。

FreeRTOSのLチカサンプルソフト
FreeRTOSのLチカサンプルソフト
FreeRTOSのLチカサンプルソフトリソース使用量
text data bss dec hex filename
10060 8 780 10848 2a60 freertos_blinky.axf

 

main()処理は、prvSetupHardware()でスタート処理、xTaskCreate()で各LEDトグルタスクを登録し、vTaskStartScheduler()でOSカーネルを起動します(prv/x/vなどはFreeRTOS関数名の接頭語で決まり文句)。
右側のvLEDTask0~2()がタクス本体です。vTaskDelay()の変更で、トグルタイミングが簡単に変えられます。

このように組込OS:FreeRTOSを使えば「タスク単体開発/変更が容易」であることが解ります。

デバッグビルド時のリソース使用量は、約10kBです(弊社マイコンテンプレートで同じ処理の場合は、半分の5KBで実現、どちらもLPCXpresso v8.0.0でLPCOpenライブラリ込みの結果)。ソースコードから、その殆どがFreeRTOS(含むライブラリ)を利用するためのサイズです。

組込OSのメリットは、「タスク開発の容易さ」、デメリットは、「利用のオーバーヘッド」です。このオーバーヘッドには、上記リソースの他に、様々なOS知識やコツ、利用経験など数値に現れないものも含みます。

従ってこのメリットデメリット両方を天秤に掛け、組込OSを使うか否かを判断する必要があります。

またデバッグは、追加したタスクが主ですが、最終的にはOSも含めたトータル動作確認が必要なため、OSをブラックボックスとして扱えるのかも考慮する必要があります。
※Windowsに代表されるOS改版に悩まされる危険性にも配慮しましょう。

ARM mbed OS

ARM Cortex-M0/M0+クラスのマイコンであるLPC824への上記FreeRTOS適用は、まれな例です。
なぜなら、多くの場合FreeRTOSは、Cortex-M3、例えばNXPならLPC17xx、またはより高性能なマイコンへの適用が多いからです(Cortexの性能比はコチラを参照)。天秤判断の結果でしょう。

GNU General Public License (GPL)のFreeRTOSは、その名の通り無償:Freeで多くのマイコン搭載実績もあります。しかし、ROM/RAMが少なく低価格を追求したCortex-M0/M0+クラスのマイコンには、少し「荷が重い」と個人的にも思います。

このCortex-M0/M0+クラスを含むCortex-Mマイコンに向けてARM社自身が開発中の新OSがmbed OSです。2015年10月リリースの予定でしたが、正式出荷はまだです。

IoT向けの機能も追加するmbed OSは、実質上対応OSが無いCortex-M0/M0+にも使える可能性がある組込OSです。

マイコンテンプレートのLチカソフト

FreeRTOSのLチカサンプルと同じマルチタスク処理を、弊社マイコンテンプレートで行った時のソースコード(一部抜粋)が下記です。
FreeRTOSと同じSysTick割込みを1msに設定していますので、解り易いソースコードとなっています。

テンプレートのLチカサンプルソフト
テンプレートのLチカサンプルソフト
テンプレートのLチカソフト使用量
text data bss dec hex filename
4580 8 20 4608 1200 BlinkyLikeRTOS_824.axf

 

トグルタイミングの変更は、FreeRTOSと比べると複雑ですが難しくはありません。何より、処理が全部見えますので理解や変更は容易です。しかもコードサイズは、半分以下です。

Cortex-M0/M0+、または同程度のマイコン性能でマルチタスク処理をさせるなら「マイコンテンプレート」をお勧めする理由です。

* * *

そこで、次回以後何回かに分けて、簡単にマルチタスク処理が実行でき、デバッグも容易なマイコンテンプレートのTipsや利用のコツを示します。
現在販売中の5種マイコンテンプレートに興味がある方は、コチラを参照してください。

マイコンテンプレートサイト更新完了

12月30日のPSoC 4、PSoC 4 BLE、PRoCテンプレート発売に間に合わなかったマイコンテンプレートサイトの更新が完了しました。

今回の更新では、LED照明ページを削除し、マイコンテンプレート関連のみのサイトとしました。昨年10月のサイト障害時の、“Simple is Best”の経験が理由です。

LPCXpresso v8.0.0へ更新

Freescaleを買収した新NXP、ARM Cortex-M0/M0+マイコンの今後のラインアップについては、気になるところですが解りません。NXPサイトを観ると、LPC8xx/111x、旧FreescaleのKinetisシリーズ全てがそのまま残っています。暫くは、様子を観察する必要がありそうです。

例えば、Cypressは、2014年末に買収したSpansionのFM0+マイコンを1年経過後の2015年11月、Cypress名で発売しました。このように、買収や合併で既販マイコンがどうなるかの判断は難しいものです。

そんななか、LPCXpressoは、v8へ更新されました(更新日は合併完了直前の2015/11月、LPCOpenは、V2.19のまま更新無し)。また、Kinetis Design StudioやProcessor Expertも更新されております。新マイコン追加等はありませんが、最新版へのUpdateをお勧めします。

Windows XPサポート終了とWindows 10への対応だと思います。どちらのIDEもEclipseベースですので、これも統合などがあるかもしれません。

PSoC 4、PSoC 4 BLE、PRoCテンプレート1.0版発売

CypressのPSoC 4、PSoC 4 BLE、PRoC向けマイコンテンプレート1.0版を1000円(税込)で発売します。
※CypressはマイコンではなくICと仰いますが、ここは解り易く「マイコンテンプレート」と記します。何とか年内発売に間に合いました…(^_^;)。

マイコンテンプレート概要、仕様、動作ボード

テンプレート概要と仕様、PSoC 4開発キットPSoC Pioneer Kit:CY8CKIT-042と、PSoC 4 BLE/PRoC開発キットPSoC 4 BLE Pioneer Kit:CY8CKIT-042-BLEでテンプレートを動作させた時の様子を示します。
これらは、テンプレート付属のもくじ資料P1~P3を抜粋したものです。

PSoC 4/PSoC 4 BLE/PRoCテンプレート概要
PSoC 4/PSoC 4 BLE/PRoCテンプレート概要(もくじP1)
PSoC 4/PSoC 4 BLE/PRoCテンプレート仕様
PSoC 4/PSoC 4 BLE/PRoCテンプレート仕様(もくじP2)
PSoC 4/PSoC 4 BLE/PRoCテンプレート動作(もくじP3)
PSoC 4/PSoC 4 BLE/PRoCテンプレート動作(もくじP3)

開発キット単独でテンプレートを動作させた時を「シンプルテンプレート」、開発キットとBaseboardを接続しLCDやUARTドライバ等の機能を追加して動作させた時を「ベースボードテンプレート」、CY8CKIT-042-BLEのBluetooth Low Energyを動作させた時を「BLEテンプレート」と名付けました。
Bluetooth 4.2認証デバイスの載せ替え搭載については、前回記事を参照ください。

機能追加に使用したBaseboardは、NXPのLPCマイコンテンプレートで使ったものと同じです。詳しくはコチラを参照ください。

Cypress開発キットは、単独でもCapSenseやUART- USB変換等かなりの機能を実装済みで、良質なサンプルファームや自習Videoも多数あります。
そこで、「PSoC 4/PSoC 4 BLE/PRoCの習得」だけでなく、これらサンプルファームを活用、流用したアプリケーションの早期開発、いわゆる「プロトタイピング開発にも役立つテンプレート」として開発しました。

P4以降のもくじに示したように、組込OSを使わずに簡単にマルチタスク処理ができるテンプレートの仕組みや、複数のサンプルファームを流用/活用してテンプレートへ組込み、アプリケーションを開発する方法に重点を置いて説明しています。

既に発売済みのRL78/G1x、LPC8xx、LPC111x、Kinetis Eマイコンテンプレートは、マイコンテンプレートサイトをご覧ください。

マイコンテンプレートサイトは2016年に更新

このサイトへ本PSoC 4、PSoC 4 BLE、PRoCテンプレートの情報も追加予定ですが、今日現在、サイト更新が本テンプレート発売に間に合っておりませんので、ブログでの通知のみとなりました。

全てのもくじ内容を含む「PSoC 4、PSoC 4 BLE、PRoCテンプレート」のご購入方法は、サイト記載と同じですので、ご希望の方は、コチラを参照してください。

年明け後、ゆっくりマイコンサイトの更新をいたします。本年も、いろいろお世話になりました。皆さま、よいお年をお迎えください。

PSoC 4 BLE Bluetooth 4.2認証済み

PSoC Creator起動時に表示されるStart Pageには、最近使ったプロジェクトやサンプルファームだけでなく、Cypressの最新情報が新しい順に表示されます。現在の最上位は、”PSoC 4 BLE now Bluetooth 4.2 Qualified”で、クリックすると当該ページがブラウザで表示されます。

PSoC 4 BLE now Blutooth 4.2 Qualified
PSoC 4 BLE now Bluetooth 4.2 Qualified

上記の関連日本語記事が、12月14日コチラに記載されました。Bluetooth 4.2仕様の4.1からの3つの変更点や、今のところBluetooth SIGの4.2フル機能認証デバイスが、Cypress製品のみであることが解ります。

CY8CKIT-042-BLEへBluetooth 4.2ボード搭載可能

このBluetooth 4.2認証済みのPSOC 4 BLEとPRoC BLEデバイスで、CY8CKIT-042-BLEへ搭載可能なDaughterボードがCypressサイトで各$15で販売中です。

Bluetooth 4.2仕様と4.1仕様のPSoC 4 BLEとPRoC Daughterボード
通称 Bluetooth 4.2 認証済み Bluetooth 4.1認証済み(CY8CKIT-042-BLE搭載)
PSoC 4 BLE CY8C4248LQI-BL583

CY8CKIT-143A
CY8CKIT-143A
CY8C4247LQI-BL483

PSoC BLE Daughterボード
PSoC BLE Daughterボード
PRoC BLE CYBL10573-56LQXI

CY5676
CY5676A
CYBL10563-56LQXI

PRoC BLE Daughterボード
PRoC BLE Daughterボード

 

Bluetooth 4.2仕様のBLEコンポーネントも、BLE 4.1現行版同様、簡単なプロパティ設定で使えます。
現行のCY8CKIT-042-BLE搭載のデバイスで4.2仕様は出来ませんが、同じ設計手法が使えるので安心です。
※CY8CKIT-042-BLE搭載デバイスは、以前の記事を参照してください。

Nexus 5Xなどの新スマホには、Bluetooth 4.2が搭載されています。弊社推薦開発環境のCY8CKIT-042-BLEは、Bluetooth 4.2/4.1両仕様のPSoC 4 BLEとPRoC BLEのDaughterボードが載せ替えられるので便利です。

PSoC 4, PSoC 4 BLE, PRoC習得Videoとテンプレート

2015年11月5日更新のPSoC 101 Video Library、Lesson00~Lesson17を紹介します。
CY8CKIT-042: PSoC 4 Pioneer Kitを使ってCreator基本操作からPSoC 4プログラミングまでが良く分かります。

Lesson内容

  • PSoC 101_Lesson00_Intro
  • PSoC 101_Lesson01_OutputPins
  • PSoC 101_Lesson02_InputPins
  • PSoC 101_Lesson03_Interrupts
  • PSoC 101_Lesson04_HardwarePins
  • PSoC 101_Lesson05_ToggleFF
  • PSoC 101_Lesson06_Basic_Counter
  • PSoC 101_Lesson07_Counter
  • PSoC 101_Lesson08_PWM
  • PSoC 101_Lesson09_Timer
  • PSoC 101_Lesson10_I2CRx
  • PSoC 101_Lesson11_I2CTx
  • PSoC 101_Lesson12_UART
  • PSoC 101_Lesson13_CapSense
  • PSoC 101_Lesson14_StatusReg
  • PSoC 101_Lesson15_ControlReg
  • PSoC 101_Lesson16_Sleep
  • PSoC 101_Lesson17_DeepSleep

英語版ですが、たとえ英語が全く分からなくても、私の下手な解説よりも内容が濃く、解り易いことは確実です。解像度は落ちますが、Videoダウンロードも可能ですので、スマホ等でオフライン視聴もできます。

CY8CKIT-042-BLEプロジェクトもダウンロード可能

CY8CKIT-042にBluetooth Low Energyを追加した弊社推薦開発キットCY8CKIT-042-BLE: Bluetooth Low Energy Pioneer Kit用のプロジェクトファイルもダウンロード可能です。CY8CKIT-042-BLEをお使いの方は、こちらを使って同じ内容が習得できるので便利です(BLE機能のVideoは、以前の記事参照)。

これらの内容を習得すれば、シングルタスクのPSoC 4、PSoC 4 BLE、PRoC開発は問題なくできると思います。

PSoC 4/PSoC 4 BLE/PRoCテンプレート

では、どのような時に開発中のテンプレートが役立つのでしょうか?

これらにより、さらに「実務に向いた実践的で、かつ効率的なアプリケーション開発」ができます。PSoC4/PSoC 4 BLE/PRoCテンプレートは、本年末リリース予定です。ご期待ください。

発売中のRL78/G1x、LPC8xx、LPC111x、Kinetis E対応マイコンテンプレートはコチラを参照してください。

PSoC 4 BLE Video Libraryの勧め

弊社推薦の評価キットCY8CKIT-042-BLE: Bluetooth Low Energy Pioneer Kitを使ってCypressのPSoC 4 BLEを自習する際に、とても役立つVideo Libraryを紹介します。

英語版ですが、PSoC CreatorのBluetooth Low Energy: BLEコンポーネント設定方法の解りやすい解説が得られます。Bluetooth仕様を全く知らなくても(=Zero Knowledge)、BLEコンポーネントの設定ができ、BLEを使ったアプリケーション開発ができる(かもしれません)。

ここが、このPSoC 4 BLE Video Library の優れた点です。
つまり、Bluetooth仕様理解よりも実用的な「BLEアプリケーション開発を重点に解説」しているので、解りやすく、かつ評価キットのみで動作確認ができます。「Bluetoothの必要最低限仕様を理解すれば開発ができる」のです。

Video Libraryアクセス方法

  1. PSoC Creator Start PageタブのProduct InformationのPSoC 4 BLEをクリックします。

    PSoC Creatorのクリック
    PSoC Creatorのクリック
  2. Cypressサイトが表示されますので、右のDESIGN SUPPORTのVideo Libraryをクリックします。

    Cypressサイトのクリック
    Cypressサイトのクリック
  3. Video Libraryページが表示されますので、PSoC > PSoC 4 BLEと選択すると、PSoC 4 BLE 101:1~6を含め2015年11月現在13個の動画が閲覧可能です。番号101は、内容が初心者向きであることを表すと思います(たぶん、20X、30Xが、中級/上級内容)。

    Video Libraryのクリック
    Video Libraryのクリック

ネットワーク回線が遅い、またはパソコンVideo能力が低い場合には、解像度は落ちますが個別にダウンロードも可能です。

Videoダウンロードのクリック
Videoダウンロードのクリック

* * *

内容が解りやすいことに加え、CreatorのAPI入力支援機能を使ったファームウエアソースの作成が「みもの」です。少量のソース追記で、実用的なBLEアプリケーション開発ができ、かつ拡張性も高いことが解ります。

これらソースは、Videoのように手動入力も可能ですが、CreatorのCode Exampleやキット付属ファームに同じものがあります。

BLEコンポーネントのGUIでBluetooth仕様が設定でき、さらに基本的な項目の設定さえできれば、その他はデフォルトで良さそうです。これなら、「UARTと同レベル」とまでは言い過ぎですが、簡単にBLEアプリケーションが開発できそうです。

Video Libraryには、紹介したPSoC 4 BLE以外にも多くの動画があります。聞きやすい英語で語られていますので、Cypressマイコン開発時は、是非視聴されることをお勧めします。

PSoC 4、PSoC 4 BLE、PRoC BLEサンプルファーム利用方法

Cypress評価キットCY8CKIT-042とCY8CKIT-042-BLEのサンプルファームを整理して示します。
前回の両キットへ機能追加する方法と合わせて、多くのCypress提供サンプルファームを効率よく使って、PSoC 4、PSoC 4 BLE、PRoC BLEを習得するためです。

Cypressの3サンプルファーム提供方法

一般的なマイコンベンダーは、AN:Application Noteと、IDE付属の「2つ」の方法でサンプルソフトを提供します。
※Cypressは、サンプルソフトを上位アプリケーションソフトと区別し、サンプルファームと呼びますので、以後ファームと記述します。

IDE付属は、マイコンの基本機能毎のファーム例、一方ANは、説明:Noteが必要な機能のファーム例です。

Cypressでは、さらに評価キット毎のファーム例も提供しますので、合計「3つ」のサンプルファーム提供方法があります。
評価キット付属ファームは、「キットのみ」で動作確認ができ、IDE付属ファームは、前回示した評価キットに「別途回路追加」が必要なものも含まれる点がその違いです。一覧にすると下表になります。

ファーム提供方法 提供場所 状況と概要(2015/11現在)
評価キット付属 CY8CKIT-042評価キットサイト 下記4種提供中

CY8CKIT-042サンプルファーム

CY8CKIT-042-BLE評価キットサイト 下記9種提供中

CY8CKIT-042-BLEサンプルファーム

AN AN90799などの個々にサイト提供 多数提供中

2015/10/2記事など

IDE付属 PSoC CreatorのCode Exampleで
PSoC 4200 BLEなどデバイス毎に提供
多数提供中

Code Exampleファーム

サンプルファーム留意点

CY8CKIT-042とCY8CKIT-042-BLEどちらの評価キット付属ファームもインストールすること

留意が必要なのは、CY8CKIT-042-BLEキット付属サンプルファームに、CY8CKIT-042キット付属のBlinking_LED(いわゆるLチカ)やDeep Sleepなどの最もベーシックなプロジェクトが無いことです。
理由は、これらプロジェクトが-042キットだけでなく、-042-BLEへも適用できるからです。

従って、CY8CKIT-042-BLEのみ購入した開発者でも、PSoC CreatorへCY8CKIT-042付属サンプルファームもインストールすることをお勧めします。
※⊞Kitsタブを開くとPSoC Creatorにインスト済みのキット付属ファームが表示されます。

なお、キット付属サンプルファーム単体の更新も行われます。因みに、CY8CKIT-042-BLE最新版は、10/06に更新されRevision *Fになりました。更新は、Update Managerまたは自動更新です。

IDE付属ファームのPDF説明書は、CY8CKIT-042を主として記述

CY8CKIT-042のリリースがCY8CKIT-042-BLEよりも早かったために、IDE付属ファームは、ADCなどの基本機能ほどCY8CKIT-042を主体に解説されています。
しかし、IDE付属ファームを基にプロジェクト化した時、Workspace Explorerに表示されるPDF説明書を注意して読めば、両キットのピン対応表などの注意事項が記載されているので、問題はないでしょう。

Workspace ExplorerのPDF説明書
Workspace ExplorerのPDF説明書

* * *

前回の評価キットへ簡単に機能追加するmbed-Xpresso Baseboardを使う方法と、今回の整理結果を念頭に置けば、サンプルファームを利用して効率良くPSoC 4 BLE、PRoC BLE、PSoC 4の習得ができると思います。

先ず評価キットのみで動作させるなら、評価キット付属サンプルファームで動作確認します。CY8CKIT-042-BLEのみ購入した開発者の方でも、CY8CKIT-042のサンプルファームをインストールし、Sleepなどのベーシック機能の動作確認もします。

プロジェクト変換方法

CY8CKIT-042プロジェクトをCY8CKIT-042-BLEプロジェクトへ変換するには、下記2方法が可能です。

  1. CY8CKIT-042-BLEで新規プロジェクトを作成し、CY8CKIT-042のTopDesign.cyschをコピー後、デザイン・ワイド・リソースを設定
  2. プロジェクト毎コピーして、Device SelectorでデバイスをCY8C4245AXI-483からCY8C4247LQI-BL483へ変更。さらにデザイン・ワイド・リソースを修正。