マイコン選択方法2019

MCU:マイコンは、種類が多くどれを自分の開発や製品に使うのが最適か?分りにくいと言われます。この問いに対する回答を示します。具体例として今年5月トランジスタ技術で紹介されたCypress PSoC 4シリーズのMCUを選択します。他ベンダでも同様です。

MCU選択とスマホ選択の差

毎年新機種が発表されるスマートフォン。特にAndroidスマホは、電話の基本機能は同じでも、カメラなどの付加機能やサービス、価格帯が広く、選択に迷います。それでも、何年かスマホを使っていると、どの機能が自分に必須かが分かってくるのと懐具合との兼ね合い、また、古い機種は数年でカタログから消えるので、スマホ選択幅は収束します。

ところが、MCUの場合は、発表後10年以上販売継続されます。スマホとの一番の差です。
古い選択肢も残ったまま新製品が追加され、選択幅が時間とともに広がるのがMCU選択を困難にする要因の1つです。

そこで、広い選択幅からMCUを選ぶ方法を、4段階で示します。

第1段階:適用製品による大枠選択

MCUベンダは、適用製品に合わせてMCUを大分類します。車載とインダストリアル分野では使用温度や内蔵周辺回路などの要件が異なるからです。そこで、第1段階は、この適用製品でMCUを選択します。

例えば、NXPSTマイクロエレクトロニクストップサイトの“アプリケーションタブ”がこの大枠を示します。
ルネサスエレクトロニクスCypressの場合は、“ソリューションタブ”です。

ここまでは、多くの方がご存じと思います。分かりにくくなるのは、ココカラです。

第2段階:MCU名称による中枠選択

同じインダストリアル分野のMCUでも、シリーズやファミリなど細かく名称が分かれています。名称が異なるには訳があるので、その理由を理解するのが、第2段階です。この段階では、ベンダ間の買収や合併などの歴史も知っている方が良いです。ポイントは、選択の決め手となる最新カタログの取得です。

Cypressのスマートアプリケーション分野のMCUで説明します。

スマートアプリケーション分野MCU使用例(出典:Cypressサイト)
スマートアプリケーション分野MCU使用例(出典:Cypressサイト)

PSoC 6/4/FM4などの複数MCUから構成されるスマート洗濯機です。PSoC X(X=4,6)は、元々のCypress MCUの名称で、FM4は、2014年に合併した米Spansion(実はSpansionに買収された富士通セミコンダクター)のMCU名称です。

Cypressは、Spansion合併でARM Cortex-M0+ライセンスを取得し、Cortex-M0利用のPSoC 4に適用、その結果生まれた新製品がPSoC 4Sです。PSoC 4Sは、特許取得済み静電容量式第4世代タッチセンサCapSense内蔵のPSoC 4000ファミリへと発展しました。

PSoC 4サイトトップページへ行き製品タブを見ると、さらに細かくPSoC 4000/4100/4200/4700とファミリが分類されており付加機能も異なります。この中枠の段階で製品セレクターガイドなどへ行くとMCU選択に迷ってしまします。他のベンダでも同様です。

この中枠MCU選択の重要資料:Brochureをダウンロードします。Brochureとは、製品パンフレット、カタログのことで、ほぼ毎年更新されます。

どのベンダでも、この中枠MCUを対象とした製品カタログがあります。この最新カタログを見つけるのがMCU選択での最重要事項です。

第3段階:最新カタログと評価ボードによる開発MCU選択

製品カタログには、ベンダがアピールしたい最新MCU情報が詳しく掲載されます。継続販売中の古いMCUや歴史は(紙面の都合上)無視されます。但し、これで新旧MCUを選択のふるいにかけることができます。

世間の話題にはなりにくいMCUの発展速度も、スマホやPC並みに早いのです。最新MCUは、低電力動作や処理効率に優れ、市場ニーズに即した開発が期待できます。

製品カタログには、中枠に相当するMCUファミリ一名称や概略を示す一覧図が掲載されます。

PSoC 4の場合は、下図です。ファミリ名の差(=意味)をこの図から理解すれば、開発MCU選択は、殆ど(?!)最終段階です。

PSoC 4ファミリ一覧図(出典:PSoC 4 Brochure)
PSoC 4ファミリ一覧図(出典:PSoC 4 Brochure)

殆どとは、例えば、エントリーレベル灰色の四角:PSoC 4000SファミリにもFlashやROM、内蔵周辺回路数により多くのMCUがあります。つまり、開発に適すMCUを各四角の中から選択する必要がある訳です。

これには、ファミリ毎にベンダが用意する評価ボード搭載MCUが適します。カタログにも評価ボードが記載されています。

ファミリ毎に用意される評価ボード(出典:PSoC 4 Brochure)
ファミリ毎に用意される評価ボード(出典:PSoC 4 Brochure)

評価ボード搭載MCUは、ファミリ内で最も標準的かつ応用範囲が広く、しかもサンプルコードが付いていますので、MCUを直に動作させることができます。低価格で入手性が良いのも特徴です。開発着手のMCUとしては最適です。

第4段階:プロトタイプ開発による製品MCU選択

評価ボードのMCUを基準にプロトタイプ開発を行い、製品化時のMCU選択をします。

プロトタイプMCUでFlash/RAM不足が懸念されならより大容量MCU、性能不足や周辺回路数不足が懸念されるならより高性能MCUを製品MCUとして選択するなどです。プロトタイプ開発により、製品MCU評価が高精度でできます。

以上の4段階で開発や製品に適すMCU選択ができます。プロトタイプ開発結果をどう活かすかで最適な製品MCU選択ができます。

Cypress PSoC 4 MCU選択具体例

弊社開発中のCapSenseテンプレートに用いるCypress PSoC 4 MCUを、上記の方法で選択した結果を示します。

CapSense は、PSoC 4000ファミリの他社差別化機能の1つです。そこで、このCapSenseを活かすプロトタイプ開発テンプレートを目指します。

CapSenseテンプレートに用いる3ファミリMCU:PSoC 4000S、PSoC 4100S、PSoC 4100PSの特徴を一覧で示します(縦長の図がウェブでは上手く表示できます)。

CapSenseテンプレート対象3MCUファミリ比較
CapSenseテンプレート対象3MCUファミリ比較

PSoC 4000S評価ボード:CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kit搭載MCUは、CY8C4045AZI-S413(48ピン)です(下図左)。

PSoC 4100S評価ボード:CY8CKIT-041-41XX PSoC 4100S CapSense Pioneer Kit搭載MCUは、CY8C4146AZI-S433(48ピン)です。トラ技5月号付録PSoC 4100S基板実装のCY8C4146LQI-S433(40ピン)も同じファミリですが、ピン数のみが違います(下図中央)。

PSoC 4100PS評価ボード:CY8CKIT-147 Prototyping Kit搭載MCUは、CY8C4145LQI-PS433(48ピン)です(下図右)。

Cypressの3ファミリ評価ボードは、どれも48ピンで揃っているので、比較しやすいでのすが、弊社は、予算の都合上、PSoC 4100Sファミリは、トラ技付録PSoC 4100S基板実装MCU(40ピン)を用います。

CapSenseテンプレート評価ボードMCU(PSoC 4000S評価ボード、トラ技5月付録PSoC 4100S基板、PSoC 4100PS評価ボード)
CapSenseテンプレート評価ボードMCU(PSoC 4000S評価ボード、トラ技5月付録PSoC 4100S基板、PSoC 4100PS評価ボード)

CapSenseで最重要なタッチUIハードウェアは、PSoC 4000S評価ボードのCapSense基板を、PSoC4100S/4100PS各基板と接続してテンプレート動作確認をします。PSoC 4000S → PSoC 4100SでFlash/RAM容量増加、PSoC 4000S → PSoC 4100PSでアナログフロントエンド強化などへ発展します。

※CapSenseテンプレート完成は、計画当初は2019Q3でした。しかし、PSoC 4100PS評価ボードは、トラ技懸賞品をあてにしており、運よく当選し11月Mに当選品が入手できました。2019Eを目途にテンプレート完成の予定です。

PSoC 4100S CapSenseの使い方(最終回)

Cypress PSoC 4 MCU内蔵タッチセンサ:第4世代CapSenseの使い方、最終回は、これまでの関連投稿全体まとめと、PSoC MCU開発時の留意点を説明します。

6月3日発表のInfineon+Cypressが成立するかは不透明です(関連投稿:InfineonがCypress買収で合意)。但し、買収が成立するとCypressのPSoC 4シリーズはよりメジャーMCUになります。このPSoC 4000S/4100S内蔵の最新第4世代CapSense使ったタッチUIテンプレート開発が関連投稿の目的です。

PSoC MCUのソフトウェア開発は、他社ARMコアMCU開発と比べると少々クセがあります。

但し、このクセさえ知っていれば、他社MCUからの移行も容易で、PSoCの特徴を活かした開発もできます。そこで、このクセに対する個人的な留意点と、開発に使用した評価ボードのTipsを初めに示します。

第1回~今回の投稿を基に、PSoC 4000S/4100S専用タッチUIテンプレート開発を進めます。開発完了とテンプレート発売は、少し時間を頂いて、2019/3Qを予定しております。

PSoC MCU開発時の留意点、評価ボードTips

用語とPSoC Creator

Cypress PSoC MCU資料で用いる用語は、他社が使う一般的な用語と異なります(対応表参照)。また、PSoC CreatorのTopDesign.cyschと呼ぶ回路図へコンポーネントを配置し、開発着手するのも他社に無い手法です。

Cypress PSoC MCU用語 他社ARMコアMCU用語
ファームウェア:Firmware ソフトウェア
コンポーネント:Component ハードウェア、周辺回路、コントローラ
コードサンプル:Code Example サンプルプロジェクト、サンプルソフトウェア
PSoC CreatorのTopDesign.cysch(論理回路図) なし

PSoC Creatorも他社同様EclipseベースIDEです。しかし、PSoC MCUの独特な設計手法(これをクセと表現しました)をサポートする強力かつ良くできたツールです。画面構成が他社Eclipse IDEと異なりますが、注意して画面を観察すると、開発中に知りたいリンクがほぼ100%あります。

Cypressは、PSoC/PRoCをMCU:マイコンというより、むしろ、プログラミングも可能なASIC(PSoCがProgrammable System-on-Chipの略から筆者推測)のように考えているため、これらのクセが生じるのだと思います。

Cypress資料

Cypress資料は、質・量・書き方ともに優れています。英語ですが、日本語版もありますので、是非資料を読むことをお勧めします。内容は整理されており、解り易いので、目次のみ見てもほぼ解ります。

筆者はせいぜい数時間しか集中できません。集中力が持続しない方にお勧めの情報把握方法が、目次のみ → 内容類推 → 内容把握です。コンポーネント習得と同様、焦らず段階的、部分的に把握していけば、そのうち全体が見えてきます。

コンポーネントUpdate

PSoC MCUのソフトウェア開発は、コンポーネントAPIのプログラミングです。想定するアプリケーション用に各種コンポーネントを組み合わせて入れた容器、これがデバイスです。

コンポーネントは、それ自身が更新されバージョンを持ちます。例えば、第4世代CapSenseコンポーネントの最新バージョンは、2019年6月現在6.0です。PSoC Creator起動時に、プロジェクト使用中コンポーネント版数を自動的に調べ、Updateがある場合には、Notice Listに通知されます。

殆どの場合、コンポーネントをUpdateしてもトラブルはありません。しかし、コンポーネントUpdateがデバイスハードウェア/ソフトウェア両方に関係するため、コンパイルNGなどになることも稀にあります。

従って、Update時にはArchivesを作成し、元に戻せるようにしましょう。Archives作成は、PSoC CreatorがUpdate時にダイアログを示しますので従ってください。

コンポーネントCode Example

コンポーネント毎にCode Exampleがあります。PSoC Creatorのコンポーネントカタログ掲載のコンポーネントは、いわば標準的なもので、Code Exampleの中には、巧みな使い方をした派生コンポーネントもあります。

CapSenseのCode Example検索方法
CapSenseのCode Example検索方法

評価ボード:KitProg2

本開発で用いた評価ボード:CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kit のKitProg2基板は、2019年5月号トラ技第6章P103~P114のPSoC 5記事のことです。

評価ボードのKitProg2部分
評価ボードのKitProg2部分(出典:PSoC 4000S Prototyping Kit Guide)

筆者はこのPSoC 5搭載KitProg2基板を、トラ技付録基板に接続する予定です。つまり、トラ技記事では別途購入が必要であったUSBシリアル変換アダプタの代わりに、トラ技付録基板へのテンプレートプログラミングやデバッグに活用します。

もちろんKitProg2基板は、トラ技6章記事のような使い方もできます。

KitProg2基板は、「SWD(Serial Wire Debug)を使った“汎用”のPSoC MCUプログラミングインタフェースモジュール」です。

KitProg2とPSoC 6の接続例
KitProg2とPSoC 6の接続例(出典:CY8CPROTO-063-BLE Schematic)

上図はPSoC 6がターゲットMCUの例です。ターゲットMCUとSWD IO/SWD CLK+RST/GND/VTARGの5ピンで接続すれば、USB接続のKitProg2モジュール経由でPSoC Creatorプログラミング/デバッグが可能です。

また、USB ⇔ I2C/シリアル変換アダプタとして利用する場合は、KitProg2裏面掲載のターゲットMCUとの結線追加で可能です(評価ボードI2C、UARTは、基板内で配線済み)。

KitProg2裏面のターゲットUARTとI2Cの結線(中央)
KitProg2裏面のターゲットUARTとI2Cの結線(中央)

USB ⇔ I2C変換アダプタ利用時はPSoC Creator付属Bridge Control Panel、また、USB ⇔ UART変換アダプタ利用時はTera Termなどが接続ツールとして使えます。

開発するCapSense UIモジュールと外部機器、または別MCUとの接続デバッグ時に、上記KitProg2基板のUART、または、I2Cの変換アダプタ機能が活用できます。

その4で示したSCBコンポーネントの3モードのうち、UART/I2Cがこれら変換アダプタ経由でPCとの通信に使えます。従って、SCBコンポーネントを手軽に使うには、接続ツールが用意されているUART/I2Cが適しています。

評価ボード:機能分割と低価格

本開発評価ボードのブロック図です。前章KitProg2とPSoC 4000S、さらにEZ-BLE PRoCの3MCU搭載でわずか$15です。

CY8CKIT-145-40XX_PSoC 4000S_Prototyping_Kit_Block Diagram
CY8CKIT-145-40XX_PSoC 4000S_Prototyping_Kit_Block Diagram

EZ-BLE PRoCは、PSoC 4000SのEZ-I2Cコンポーネント経由で得たCapSenseボタンやスライド・バー位置を、スマホへのBluetooth無線送信する10 x 10 x 1.8mmサイズのモジュールです。スマホのアプリケーションは、Cypressサイトからダウンロードできます。

EZ-BLE PRoC用途
EZ-BLE PRoC用途

IoT MCUは、Bluetoothなどの無線通信やスマホ活用のエッジMCU制御も必要になります。

この開発に、無線機能付き高性能MCUを使って、RTOSやソフトウェア/ファームウェアを駆使し開発する選択肢もあります。が、評価ボードのようにモジュール分割し、複数の低価格MCUで組めば、わずか$15で実現できます。

しかも、機能分割した各MCUのソフトウェア開発も簡単です。EZ-BLE PRoCソースコードは、評価ボードサンプルプロジェクト内に有りますので参照してください。

評価ボードはバーゲンプライスです。しかし、その機能分割方法や評価ボードやモジュール活用のシステム開発も選択肢に入れるべきと感じる低価格と機能分割の上手さが解ります。低価格MCUでも使い方次第という好例が、本開発の評価ボードです。

PSoC 4000S/4100S内蔵、第4世代CapSenseの使い方(最終回:関連投稿)まとめ

ソフトウェア開発者向けPSoC 4000S/4100S第4世代CapSenseの使い方
項目 PSoC 4000S/4100S内蔵第4世代CapSenseの使い方(要点)
タッチUIテンプレート構想

(その1)

タッチUIモジュール
単独タッチUIモジュール利用が可能
タッチUIハードウェア

(その2)

1. タッチUIは、指をパッドに近づけた時に生じる静電容量変化で検出。確実に静電容量変化を生むPCBハードウェア:パッド設計が重要。

2. ソフトウェア開発者向けPCB設計ガイドラインの要旨を示し、評価ボードパッド形状の理由と、自己容量式(self-capacitance)、相互容量式(mutual-capacitance)差を説明。

3. 評価ボードパッド部分をトラ技付録PSoC 4100S基板とも接続。 PSoC 4100Sでもテンプレートを動作させPSoC 4000S/4100S両方対応テンプレート化を図る。

CapSense設定

(その3前半)

1. コンポーネントカタログからCapSenseを選びTopDesign.cyschへ配置。

2. コンポーネントデータシートを参照しCapSenseプロパティ設定。基本動作は、Basicタブ設定のみで十分。

3. CapSenseコンポーネント使用GPIOピン設定は、ピンエディタで実行。

CapSenseプログラミング

(その3後半)

1. 基本動作プログラミング教科書に評価ボードサンプルプロジェクトmian.cは最適。

2. 基本動作は、スキャン開始と終了の間、CPUスリープで低電力動作可能。

3. 高感度動作は、スキャン中別処理禁止のブロッキングスキャンを検討。

4. CapSenseプログラミングは、他コンポーネントとの並列処理より時分割処理の方がリスクは少ない。

5. 基本動作CapSense APIは6個。さらに多くのCapSense APIあり。

EZ_I2C(SCB

(その4)

1. EZ-I2Cは、CapSense出力のリアルタイムモニタ用。

2. リアルタイムモニタは、ユーザ開発パッドのCapSenseプロパティ設定に役立つ。

3. EZ-I2Cは、SCBコンポーネント利用法:I2C通信の1種。

4. CapSenseとEZ-I2C間のデータ送受は、RAM利用。

わずか2個コンポーネント利用の第4世代CapSenseの使い方でも、初めてのPSoC MCU開発者向けに要点をまとめると上記になります。最新CapSense動作確認と、殆ど全てのPSoC MCU開発に必要になるSCBコンポーネントの習得が、評価ボードで手軽にできるので教材としては最適だと思います。

PSoC MCUは、コンポーネント単位の開発経験積重ねができます。

一度PSoC開発を経験しておけば、新しい内容はCapSenseプログラミングだけです。今後は開発アプリケーションに応じて使用するコンポーネントを段階的に増やし、PSoC MCU開発の面白さ、奥深さを実感、習得してください。

但し、新規にプロジェクトを開発する時でも、1からコンポーネントを積重ねるのは非効率です。

PSoC Creatorには、新規プロジェクト開始時にPre-populated schematicというプリセット型プロジェクトもあります。しかし、より実務的でプロトタイプ開発に適し、時分割処理を組込んだプロジェクト、これが弊社テンプレートです。

弊社テンプレートは、プロジェクト開始時に最低限必要なコンポーネントが組込み済みで、プロトタイプ開発スピードを上げる効果があります。また、時分割処理ですので、コンポーネント単位の処理追加・削除も容易です。

関連投稿:テンプレート利用Tips

新開発のPSoC 4000S/4100SタッチUIテンプレート発売は、2019/3Q予定です。

このテンプレートをご購入頂ければ、本稿のまとめ文章だけでなく、豊富な日本語コメント付きソースコードと、開発Know Howなども記載した資料が付属します。より具体的に、しかも初心者・中級者にありがちな開発トラブルを回避した第4世代PSoC 4000S/4100S CapSenseの使い方、PSoC MCU開発が短期で効率的に習得できます。

PSoC 4100S CapSenseの使い方(その4)

Cypress PSoC 4100S/4000S内蔵タッチセンサ:第4世代CapSenseの使い方、4回目は、CapSenseとペアで用いるEZ-I2Cコンポーネントを説明します。

PSoC 4100S/4000S内蔵第4世代CapSenseの使い方第4回内容
PSoC 4100S/4000S内蔵第4世代CapSenseの使い方第4回内容

EZ-I2CはCapSenseリアルタイムモニタ出力

EZ-I2Cコンポーネントは、CapSenseの入力状態をパソコン上でリアルタイムモニタする時に使います。

ユーザが開発したハードウェア:タッチパッドやスライド・バーが所望動作をしているかを確認し、必要に応じてCapSenseコンポーネントのBasicタブ以外の詳細プロパティを設定する時に役立ちます。

※CapSenseコンポーネントのプロパティ設定は、その3前半参照。

本開発の評価ボード:CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kit でこのリアルタイムモニタを試すときは、TopDesign.cysch上のCapSenseコンポーネントを右クリックし、Launch Tunerで起動されるSense Tuner画面で動作確認ができます。

Launch Tuner起動時Sense Tuner画面
Launch Tuner起動時Sense Tuner画面。CapSense指位置リアルタイムモニタが可能。

EZ-I2Cコンポーネント

デバイス間シリアル通信:Serial Communication Block(SCB)コンポーネントは、I2C(EZ-I2C含む)/SPI/UARTの3モードで動作します。EZ-I2Cコンポーネントは、このI2Cモード通信の1種で、PSoCデバイス用に簡素化したI2Cです。

PSoC Creatorのコンポーネントカタログの⊞Communicationを開くと、既にSCBの3モードで主要プロパティ設定済みのコンポーネントが見られます(補足:SCBコンポーネント3モード章の図参照)。この中からEZ-I2C Slave(SCB mode)をクリック&ドロップでTopDesign.cyschへ配置すれば、詳細なデータシートが見られます。

EZ-I2Cコンポーネントで追加するプロパティ設定は、CapSenseコンポーネントの時(その3前半参照)と同様で、Basicタブ設定のみで十分です。

CapSense → EZ-I2Cは、RAM利用

CapSenseコンポーネントとEZ-I2Cコンポーネント間は、RAMでデータを渡します。TopDesign.cyschの両コンポーネント間を接続する配線などが無いのは、このRAM経由のためです。

EZI2CのAPIを使って両コンポーネントのRAMを接続します。CapSenseコンポーネントデータシートのP8に記載例があります。

CapSence出力のEZ_I2CへRAMデータ送信記述例
CapSence出力のEZ_I2CへRAMデータ送信記述例

※上記ソースコードは、CapSenseがブロッキングスキャンで記述されていることに注意してください(ブロッキングスキャンについては、その3後半参照)。

CapSenseの使い方(その4:EZ-I2Cコンポーネント)まとめ

PSoC Creatorの第4世代CapSenseコンポーネントとペアで用いられるEZ-I2Cコンポーネントを説明しました。

  1. EZ-I2Cコンポーネントは、CapSenseコンポーネント出力のリアルタイムモニタ時に利用。
  2. リアルタイムモニタは、ユーザ開発タッチパッドやスライド・バーのCapSenseプロパティ設定に役立つ。
  3. EZ-I2Cコンポーネントは、SCBコンポーネント利用法:I2C通信の1種。
  4. CapSenseコンポーネントとEZ-I2Cコンポーネント間のデータ送受はRAM利用。

補足:SCBコンポーネントの3モード

SCBの3モードと残りリソース数
SCBの3モードと残りリソース数

評価ボード:CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping KitのCE210709_CapSense_Linear_Slider_and_Buttonsプロジェクトは、本稿で示したようにSCBをEZI2CとしてCapSenseリアルタイムモニタのTuner出力用に1個使用中です。

SCBリソースは、PSoC 4000Sは2個、PSoC 4100Sは3個あります(Resource MeterはPSoC 4000Sの例)。そこで残りのSCBを、PSoC 4000S/4100S専用タッチUIテンプレートモジュールと装置や他MCUとの通信用に使う予定です。

通信用SCBの3モード:I2C/SPI/UARTのどれを使うかは、タッチUIテンプレート発売までに決めるつもりです。但し、パソコンとの通信テスト環境が簡単に準備できるUART、またはI2Cが有力です。この詳細については、次回評価ボードの解説時に説明します。

PSoC 4100S CapSenseの使い方(その3後半)

Cypress PSoC 4 MCU内蔵タッチセンサ:第4世代CapSenseの使い方、3回目後半は、CapSenseのプログラミングです。ソフトウェア開発者にとって一番面白い箇所です。

参照情報:AN85951 PSoC® 4 CapSense® Design Guide.pdf(日本語版)

CapSenseプログラミング理解はサンプルソースコードが最適

AN85951のCapSenseの設計フロー:P9をご覧ください。本稿テーマのCapSenseプログラミングは、8. Firmware Designに相当します(9. はPSoC Creatorの一般的な使い方でCapSenseとは無関係)。

これまでのPSoC 4100S CapSenseの使い方に関する一連の投稿は、1~7の内容を抜粋し、かつ、ソフトウェア開発者向けに説明してきました(従って、本ブログで不明な点は、1~7を参照頂ければ、より理解できます)。

8. Firmware Designドキュメントは、P10に示されています。PSoC Creatorサンプルプロジェクトをクリックすると、P45の4.1.4 サンプルプロジェクトと4.2 ハードウェアキットへジャンプします(コンポーネントデータシートは、第4世代より古いCapSenseのこと)。

さて、このジャンプが意味するのは、「CapSenseプログラミングは、サンプルプロジェクトを読みなさい」ということです。

実際に動作するサンプルプロジェクトのソースコードを見れば、文章で細々プログラミングを説明するよりも一目瞭然ということです。

筆者も、これに完全に同意します。やはりソースコードが、一番良いプログラミング教科書です。…と書くと、これで本稿が終わりますので、少々解説を加えます。

CapSenseプログラミング解析

4.2 ハードウェアキットの開発キット3列目が(名称が違いますが)本開発の評価ボード:CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kit です。

このサンプルプロジェクト:CE210709_CapSense_Linear_Slider_and_Buttonsのmain.cの一部を抜粋します。

評価ボードサンプルソースコードの一部抜粋
評価ボードサンプルソースコードの一部抜粋

初期設定:CapSense_Start()後、無限ループ内でCapSenseの3状態(SENSER_SCAN → WAIT_FOR_COMPLETE→ PROCESS_DATA)遷移を繰返します。default : breakがあるので、さらに別状態の可能性もあります。が、ここでは無視します。
※ENABLE_TUNERは、次回EZ_I2Cで示すCapSenseリアルタイムモニタ機能です。今回は無視してください。

注目すべきは、WAIT_FOR_COMPLETE状態のCySysPmSleep()です。

つまり、CapSenseスキャン開始と終了の間は、CPU:Cortex-M0+はスリープしているのです。この間にCPUで別処理をすることも可能です。スキャンとスリープCPUの割込み起動は、CapSenseコンポーネントが行います。

まとめると、ソースコードから以下が解ります。

・コンポーネント初期設定は、コンポーネント名_Start
・コンポーネントAPIは、コンポーネント名_処理内容
※CapSense以外の全てのコンポーネントでも上記2つは同じ
・CapSenseスキャン開始~終了間のハードウェア処理時間が長いため、CPUをスリープにするのが低電力化に良い。スリープ起動にCapSense割込みを使用。
・PSoC 4000S無限ループは、for(;;)の書き方

基本動作CapSense API

サンプルプロジェクトソースコードで使ったCapSense APIは、全部で6個です。

・CapSense_Start()
・CapSense_IsBusy()
・CapSense_ScanAllWidgets()
・CapSense_ProcessAllWidgets()

LED_Control()で、スライド・バー位置やパッドタッチに応じてLED制御を行うため2個使っています。

・CapSense_GetCentroidPos()
・CapSense_IsWidgetActive()

CapSenseコンポーネントデータシートには、CapSense APIが上記以外にも数多くあります。これらを使うとよりきめ細かな制御も可能です。興味ある方は、参照してください。

CapSenseファームウェアの注意書き

AN89548の6.1 ファームウェアP108~P110に以下の注意書きがあります。
※PSoC MCUでは、他社が言うソフトウェアのことをファームウェアと言います。

“CapSenseハードウェアは高感度アナログシステムなので、CPU並列動作によるデバイス電流の急激な変化は、CapSense検出能力に影響を与える可能性がある。CapSenseを、近接センサやオーバーレイ素材が厚い場合など高感度が必要な場合は、以下のブロッキングスキャンを使うこと。”

ブロッキングスキャンのソースコード
ブロッキングスキャンのソースコード(出典:AN89548)

ブロッキングスキャンとは、サンプルプロジェクトで示した状態遷移を止め、CapSense処理中は別処理を禁止するスキャンです。CapSenseのみにデバイス能力を使いますので、高感度ですがスキャン中の低電力化もしません。

“CapSenseといえども低消費電力設計が望ましいが、PSoC 4000デバイス(←Sなしに注意)は、CapSenseスキャン中のスリープは勧められない。” (以上の、” … “ が、6.1の注意書き)。

第4世代CapSense利用PSoC 4000S/4100Sテンプレート開発方針

本開発は、第4世代CapSense内蔵のPSoC 4000S(←S付き)とPSoC 4100Sデバイスが対象です。

従って、サンプルプロジェクトで示した「CapSenseスキャン中スリープ有り」の方法で開発し、高感度が必要な時は、ブロッキングスキャンを検討するアプローチで良いでしょう。

トラ技付録基板のPSoC 4100Sは、PSoC 4000Sに比べ内蔵アナログコンポーネントが豊富です(PSoC4100SとPSoC 4000Sの主な特徴差は、その1比較表参照)。

AN89548の注意書きから、CapSenseコンポーネントスキャン中の電流変動は禁物なので、欲張って他のアナログコンポーネントとデバイスを共用するのは、時分割処理すれば別ですが、CapSenseの性能を引出すのは大変そうな気がします。

この意味で、内蔵アナログ機能の少ないPSoC 4000SをCapSense専用デバイスとして使うのは、開発のスジは良いと思います。

一般的にCapSenseやADCなどのアナログ機能は、ノイズに敏感で動作中の電流変動にも性能を左右されます。また、トラ技2019年5月号P128、ACアダプタのノイズに注意の章記述から、トラ技付録基板利用時は、供給電源の品質も高いものを使うことが重要です。

以上のことから、CapSenseと別のアナログ機能を利用する時は、並列動作は避け、時分割処理の方がリスクも少ないと思います。

弊社テンプレートは、時分割処理動作です。従って、アナログ単独動作時とほぼ同じ性能を多重時でも出せます。

CapSenseの使い方(その3後半:CapSenseプログラミング)まとめ

PSoC 4000S/4100S内蔵第4世代CapSenseコンポーネントのプログラミング要点を示しました。

  1. CapSense基本動作プログラミング理解に、評価ボードサンプルプロジェクトソースコードは最適。
  2. CapSense基本動作なら、スキャン開始と終了の間、CPUスリープで低電力動作可能。
  3. 高感度CapSenseが必要なら、スキャン中別処理禁止のブロッキングスキャンを検討。
  4. CapSenseプログラミングは、他コンポーネントとの並列動作より時分割処理の方がリスクは少ない。
  5. CapSense基本動作で使うCapSense APIは、6個。さらに多くのCapSense APIあり。

PSoC 4100S CapSenseの使い方(その2)

Cypress PSoC 4 MCU内蔵タッチセンサ:第4世代CapSenseの使い方、2回目は、ハードウェアのタッチ・パッドやスライド・バー基板開発時のガイドラインを示します。と言っても、ソフトウェア開発に最低限必要なパッド仕組みを説明します。読者にソフトウェア開発者が多いからです。ハードウェアのPCBアートワーク担当者向けには、情報リンク先を示しています。

PSoC 4100S CapSenseの使い方(第2回内容)
PSoC 4100S CapSenseの使い方(第2回内容)

参照情報:AN85951 PSoC® 4 CapSense® Design Guide.pdf(日本語版)

タッチUIのメリット

メカニカルなボタンやスイッチでは、チャタリングや経年劣化、水濡れへの対応が必要です。タッチUIは、これらに対して有利です。また、パッド形状の自由度が高いので、スマホで一般的になった直感的なタッチ操作による優れたユーザインタフェース(UI)が実現できます。

これらタッチUIは、指をタッチ・パッドに近づけた時に生じる静電容量の変化をPSoC 4000S/4100S内蔵のCapSenseで検出し実現します。従って、確実に静電容量変化を生むパッドの基板設計が重要です。

タッチ・パッド、スライド・バー設計ガイドライン、AN85951の6.4章

静電容量変化の検出には、自己容量式(self-capacitance)、相互容量式(mutual-capacitance)という2方式があります。各方式の仕組みとパッド例が下図です。

自己容量式(左)と相互容量式(右)の仕組みとパッド例
自己容量式(左)と相互容量式(右)の仕組みとパッド例(出典:AN85951)

自己容量式は、1パッドに1個のGPIOを使います。相互容量式は、1パッドにTxとRxのGPIOペアが必要です。Txは複数ボタンで共有も可能で、自己容量式よりもGPIOを多く使うぶんタッチ検出性能が高くなります。電卓やキーパッドのような12個ボタンでも、下図のように7本のGPIOで実現できます。

マトリックス・ボタンのパッド例
マトリックス・ボタンのパッド例(出典:AN85951)

スライド・バーは、操作入力が増加、または減少する場合に用います。また、タッチ・パッドは、XとYの2次元で指位置を検出する方法で、X/Y各軸にスライド・バーを利用した例と考えれば良いでしょう。

※2019年6月現在、PSoC CreatorのCapSenseスライド・バーは、自己容量式のみをサポートしています。相互容量式は、今後のバージョンでサポート予定だそうです(AN85951、English、04/30/2019、P19)。

自己容量式スライド・バーのパッド例
自己容量式スライド・バーのパッド例(出典:AN85951)

このように、入力操作に応じたパッドを基板上にパターン設計(アートワーク)します。また、タッチ部分の基板保護のため、PCB表面に非導電性のオーバーレイ素材(タッチ表面材)を付けます。

CapSenceハードウエア構造
CapSenceハードウエア構造(出典:AN85951)

詳細なPCBレイアウト・ガイドラインは、前出AN85951の6.4章や、AN64846(日本語版)に記載されています。アートワーク担当者は参照してください(本稿は、ソフトウェア開発者が対象ですので、ガイドライン詳細説明は割愛いたします)。

このガイドラインに沿ってPCBアートワークを行えば、確実に静電容量変化を生むタッチUIパッドが開発できます。

評価ボードのパッド形状理由

本開発で用いる評価ボード、CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kitのパッド形状が、なぜこんなカタチになっているか、前章の説明でソフトウェア開発者に理解できたと思います。

PSoC 4000S CapSense Prototyping Kit
タッチ・センサー基板付きで$15と安価なPSoC 4000S CapSense Prototyping Kit

つまり、上側の3パッドは、相互容量式で共有TX(1.3)と左からRX(1.6)、(1.5)、(1.4)の合計4GPIOを使います。下側は自己容量式のスライド・バーで、左から(0.6)、(0.3)、(0.2)、(0.1)、(0.0)の5GPIOを使います。TX(2.6)パターンはありますが、スライド・バーは、ソフトウェアは現在の自己容量式のみ対応です。但しハードウェアは、既に相互容量式に対応済みなのです。

パッド上下のLEDは、指タッチを検出した時に点灯させるインジケータです。また、オーバーレイ素材がパッド基板上に装着済みであることも判ります。

Capsenseパッド基板上のオーバーレイ素材
Capsenseパッド基板上のオーバーレイ素材

ガイドラインに沿って設計済み評価ボードの上側タッチ・パッド、下側スライド・バーの各パッド基板は、簡単に切離しができます。切離したパッド基板を、トラ技付録PSoC 4100S基板へ接続し、PSoC 4100S内蔵CapSenseでも開発したテンプレートを動作させる予定です。

CapSenseの使い方(その2:PCBハードウェア)まとめ

ソフトウェア開発者が最低限知るべきCapSenseのPCBハードウェアの使い方を示しました。

  1. タッチUIは、指をパッドに近づけた時に生じる静電容量変化をCapSenseで検出。このため、確実に静電容量変化を生むPCBハードウェア:パッド設計が重要。
  2. ソフトウェア開発者向けパッドPCB設計ガイドライン要旨を示し、評価ボードパッド形状の理由と、自己容量式(self-capacitance)、相互容量式(mutual-capacitance)のGPIO差を説明。
  3. PSoC 4000S評価ボードのパッド基板を切離し、トラ技付録PSoC 4100S基板と接続。 PSoC 4100SのCapSenseでも開発テンプレートを動作させ、PSoC 4000S/4100S両方対応CapSenseテンプレート化を図る。

PSoC 4100S CapSenseの使い方(その1)

CypressのPSoC 4 MCU内蔵のタッチセンサ:最新の第4世代CapSenseの使い方を何回かに分けて投稿します。目標は、従来のメカニカル入力インタフェース:スイッチやボタンに変わる、新しいタッチユーザインタフェース(タッチUI)入力処理専用のテンプレート開発です。

操作性や装置全体の印象に大きな影響を与えるユーザフレンドリーなタッチUIを、低開発リスク、低価格で実現するこのテンプレートは、競合他社との差別化に役立つと思います。

タッチユーザインタフェーステンプレート
タッチユーザインタフェーステンプレート。ボタンからタッチ・ベースへ変化したユーザ入力処理用PSoC MCUと、それ以外の2MCU構成。プロトタイプ開発速度向上とユーザフレンドリーが狙い。

第4世代CapSense特徴(第3世代比)

・タッチ検出性能向上 → 検出感度、反応特性改善
・木材、厚いアクリル材がタッチ表面材でも反応 → デザイン幅広がる
・液量センシング可能 → シャンプー、薬品ボトル液面検出可能
・自己容量方式と相互容量方式の両方対応 → 近接センサが多くても対応可能
・低消費電流化 → センサ毎に6uAから3uAへ半減

出典:静電容量タッチセンサの性能を大幅改善、対応するマイコンを2製品投入

CapSenseデータシート Version 6.0最初のページに、CapSense v6.Xコンポーネント(=コントローラ)は、v2.Xコンポーネント以前との後方互換は無いと明記されています。また、古いコンポーネントや第3世代CapSense利用経験が有る方のために第4世代マイグレーションガイドもあります。

本稿は、最新の第4世代CapSenseを使い、初めてタッチUI開発する方を対象とします。この第4世代CapSense内蔵MCUは、PSoC 4000S、PSoC 4100S(トラ技付録基板実装)、PSoC 4100S PlusとPSoC Analog Coprocessorです(2019年6月現在)。

低価格PSoC 4000SとタッチUI評価ボード

トラ技2019年5月号で紹介された第4世代CapSense内蔵MCUは、PSoC 4100Sです。同じCortex-M0+コアですが、機能を絞ったのがPSoC 4000Sです。両者の主な仕様差を表1に示します。

関連投稿:GWお勧め本:トラ技5月号PSoC 4100S基板付きで販売中

トラ技付録基板PSoC4100S仕様とPSoC 4000Sの主な特徴差
項目 トラ技付録基板PSoC4100S仕様

CY8C4146LQI-S433

PSoC 4000S仕様

CY8C4045AZI-S413

JPY1個価格(Mouser調べ、2019/06 ¥570 ¥453
CPUコア Cortex-M0+、48MHz
メモリ FLASH 64KB 32KB
SRAM 8KB 4KB
シリアル通信ブロック 3個(I2S/SPI/UART/LINに対応) 2個(I2S/SPI/UARTに対応)
ADC 逐次比較型 12ビット分解能、1Msps なし
シングル・スロープ型 10ビット分解能、11.6ksps
GPIO 34 36
DAC 電流出力型 7ビット分解能×2
その他アナログ・ブロック OPアンプ 2個、6MHzGB積、6V/usスルーレート なし
コンパレータ 3個、内2個はスリープ・モード時も動作 2個スリープ・モード時も動作
静電容量式第4世代タッチセンサ(CapSense 自動調節機能付き(特許取得済み)
論理演算ブロック スマートI/O 3入力1出力のLUT×8

PSoC 4000Sも第4世代CapSense内蔵MCUです。PSoC 4100SのOPアンプなどのアナログ機能を省いた結果低価格で、仕様からCapSense利用のタッチユーザインタフェース(タッチUI)入力処理専用のMCU向きであることが解ります。

例えば、メカニカルボタンを1個50円とすると、ボタン8個で400円。これをタッチUIで置換えるので同程度の低価格MCUは好適です。PSoC 4000SはPSoC 4100Sに比べ少機能なので、ソフトウェア開発も容易です。初心者向きの開発案件とも言えます。さらに、PSoC 4000S実装済みで、タッチ・パッドとスライド・バーが付属した低価格なタッチUI評価ボード:CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kitも用意されています。

PSoC 4000S CapSense Prototyping Kit
タッチ・センサー基板付きで$15と安価なPSoC 4000S CapSense Prototyping Kit

CapSenseの使い方(その1:低開発リスク、低価格のタッチUI実現手段)まとめ

低開発リスク、低価格で第4世代CapSenseを使ったタッチユーザインタフェース(タッチUI)を実現する手段として、PSoC 4000S実装評価ボード:CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kitを使い、タッチUI入力処理専用のテンプレート開発を行います。このテンプレートは、トラ技付録PSoC 4100S基板でも同じように動作します。

最初の図のように、様々な装置や別MCUの入力手段として単独利用もできます。また、個人レベルでチョット変わった下図のようなタッチUIモジュールを手軽に開発する時にも役立つと思います。

タッチUIモジュールイメージ(出典:トラ技P53 AIジェスチャ・スティック図を加工)
タッチUIモジュールイメージ(出典:トラ技P53 AIジェスチャ・スティック図を加工)

次回から、タッチUIのメリット、ハードウエアのタッチUI基板ポイント、CapSense制御ソフトウェアの構造、開発ツールPSoC Creatorの設定方法など、CapSenseの具体的な使い方を、主にソフトウェア開発者向けに判り易く説明していきます。

InfineonがCypress買収で合意

2019年6月3日)、独)Infineonは、米)Cypress買収で合意と発表しました(出典:EE Times記事、InfineonがCypress買収へ、約1.1兆円で

Infineon+Cypressが成立すると、車載半導体ではオランダ)NXPを超え世界シェア1位となります。但し、QualcommのNXP買収断念のように、米国当局の承認が成立のガキとなります(出典:EE Times記事、”InfineonのCypress買収は“弱点の克服”を狙う一手“)。

Infineon+Cypressは補完関係

本ブログ対象のCypress MCUは、IoTエッジMCUで優れた製品を持ち、現在パワー半導体シェア1位、車載シェア2位のInfineon製品との重複が極めて少ない補完関係です。買収が成立すれば、車載シェアは、現在首位NXPを抜きトップになるそうです。

記事中に、本ブログ掲載MCU各社の製品特徴を表す図があります。

MCU各社の製品特徴(出典:EE Times記事)
MCU各社の製品特徴(出典:EE Times記事)

MCUコアが同じでも、MCU単体でシステム動作はできません。自動車会社は、周辺部品も含めたトータルでの接続性や、システム構築能力をMCU各社に求めます。Infineon+Cypressはこの点で他社比、優れているというのがこの表の意味です。

買収成立後の車載と32ビットMCUの半導体シェア変動を示すのが下図です。

買収成立時の車載半導体と32ビットMCUシェア(出典:EE Times記事)
買収成立時の車載半導体と32ビットMCUシェア(出典:EE Times記事)

車載は1位へ、32ビットMCUは4位へと、それぞれ上位ビッグ5に入ります。シェア確保は、半導体会社が生き残るには必須で、Infineon、Cypress双方に買収メリットがあります。

買収完了は、2019年末から2020年初めを予定しています。但し、米国当局が買収を認めるかがカギだと記事は解説しています。

Cypress特許取得PSoC 4100S CapSenseで他社差別化

ADAS(Advanced driver-assistance systems)など高度化する自動車制御に限らず、IoT端末でもMCU単体でのシステム構築は困難です。しかし、一方で、他社とのアナログ差別化技術を用いてMCUシェア拡大と確保を狙う動きも出てきました。

STマイクロエレクトロニクスは、汎用MCUでありながら、より多くのセンサとユーザ機能を実現する先進的アナログ・ペリフェラル搭載のSTM32G4シリーズを発表しました。また、ルネサスエレクトロニクスも、高精度アナログフロントエンド搭載32ビットマイコンRX23E-Aを発表しました。

本件のCypressも、他社アナログ差別化技術という点では長けていると思います。

例えば、前投稿のトラ技記載PSoC 4100Sは、低価格であっても、他社MCUに無いOPアンプや論理演算ブロックが実装済みです。特に、特許取得済みで多くのスマホで採用実績のある検出精度の高い静電容量式タッチ・センス・コントローラ内蔵は特筆すべき点です。

トラ技付属基板PSoC 4100S仕様(出典:トラ技2019年5月号P116、アナログ差別化技術が下線付き)
項目 内容
CPUコア Cortex-M0+、48MHz
メモリ フラッシュ:ROM 64KB
SRAM 8KB
シリアル通信ブロック 3個(I2S/SPI/UART/LINに対応)
ADC 逐次比較型 12ビット分解能、1Msps
シングル・スロープ型 10ビット分解能、11.6ksps
DAC 電流出力型 7ビット分解能×2
その他アナログ・ブロック OPアンプ 2個、6MHzGB積、6V/usスルーレート
コンパレータ 3個、内2個はスリープ・モード時も動作
静電容量式タッチ・センサ(CapSense 自動調節機能付き(特許取得済み)
論理演算ブロック スマートI/O 3入力1出力のLUT×8

タッチユーザインタフェーステンプレート構想

スマホの普及で、あらゆるユーザインタフェース(UI)がボタンから、タッチ・ベースへと変わりました。IoT端末でも同様です。

タッチユーザインタフェーステンプレート
タッチユーザインタフェーステンプレート。ボタンからタッチ・ベースへ変化したユーザ入力処理用PSoC MCUと、それ以外の2MCU構成。プロトタイプ開発速度向上とユーザフレンドリー入力処理が狙い。

このタッチUIへPSoC 4シリーズ特許技術CapSenceを応用し入力処理をテンプレート化、その他の新規開発や複雑な制御は別MCUへ分離した2MCU構成でプロトタイプ開発すると、開発速度が上がり、かつタッチUIも備えたユーザフレンドリーなIoT端末が期待できると思います(勿論、このタッチUIテンプレートにはトラ技付属基板も利用するつもりです)。

GWお勧め本:トラ技5月号PSoC 4100S基板付きで販売中

トランジスタ技術2019年5月号が、サイプレス・セミコンダクター(以下サイプレス)のPSoC 4100S搭載基板付きで1,180円(税込)で販売中です。平成最後のトラ技で、PSoC 4と統合開発環境PSoC Creatorの良さが判る雑誌が、安価に入手できます。

ゴールデンウイークの読物に、MCUソフトウェア開発者だけでなくハードウェア開発者へもお勧めです。

トランジスタ技術平成31年5月号PSoC関連目次
トランジスタ技術平成31年5月号PSoC関連目次(※説明のため着色しています。出典:トランジスタ技術)

弊社ブログ掲載MCU中、筆者が最も好きなMCUが、Cortex-M0のPSoC 4シリーズです。MCU技術、サイプレスサイト掲載情報量と質、どれも競合他社より優れていると思います。但し、中級者以上の方には受けが良くても、初心者や初めてサイプレスサイトを訪れる方が解り易いかは疑問です。

ネット並みの手軽さはありませんが、紙媒体のトラ技は、セキュリティ不安や無駄な広告が無く、図表が多く2色で色分けされた文章は、CQ出版社構成済みです。PSoC 4やサイプレスが初めての方でも、短時間で重要箇所を読み・理解するのも簡単です。

ここからは、トラ技を入手した方を前提に、(少々差し出がましいのですが)PSoC 4やPSoC Creatorに解説を加えます。本ブログ対象の、「個人でも低価格で入手性が良いMCUにPSoC 4が該当」するからです。

PSoC 4と4000Sシリーズ

PSoCファミリラインナップがP60コラムにあります。PSoC 4の位置づけが良く解ります。このPSoC 4(Cortex-M0コア)に旧富士通のFM0+買収で得たCortex-M0+コアを採用し、世代改良したのがPSoC 4000Sシリーズです。S付きがCortex-M0+、無しがCortex-M0です。

PSoC 4000Sシリーズのラインナップが下図です。

PSoC 4000シリーズ分類
PSoC 4000シリーズ分類(出典:Cypress Semiconductorメールの一部抜粋)

メール画面切取り画像のためDigi-keyやMouserリンクは無効ですが、PSoC 4000Sシリーズは低価格で入手性も良いMCUであることが解ります。

Entry Level PSoC 4000Sのアナログ機能強化版であるPSoC 4100S:CY8C4146LQI-S433/Flash:64K/RAM:8K搭載基板がトラ技に付属しています。ブレッドボードなどで動作可能です(特設P115~に詳しい説明あり)。

PSoC 4100Sのトラ技採用理由は、第1部の(重い)処理内容や第2部のハイエンドPSoC 5LP(P104コラム参照)へのガイドがし易いからだと思います。

個人的には、先ずEntry LevelのPSoC 4000Sを使って、PSoCの良さをもっと手軽に読者に認知させた方が良いと感じました。4000Sと4100Sの差分は、内蔵アナログ・コンポーネントとその数だからです(MCU提供サイプレスの思惑もあるかもしれませんが…)。
※内蔵アナログ・コンポーネント解説は、特設P143~に詳しく説明されています。

PSoC Creator

PSoC Creatorは、EclipseベースIDEですが、他社IDEと異なります。使い勝手は、トラ技記事にあるように痒い所に手が届くように良くできたIDEです。モニタ1台ではなく、複数の高解像度モニタを使いたくなります。

簡単に言うと、MCUハードウェア開発者でも使える回路図機能とソフトウェア開発機能を全て盛り込んだ環境です。
※特設P129~のPSoC Creator操作マニュアルに詳しく説明されています。

PSoC Creator操作画面
PSoC Creator操作画面

筆者がPSoC 4000SとPSoC Creatorを勧める具体的理由が下記です。

MCUハードウェア開発者向け:自分で開発したハードウェアのテストプログラムを、できるだけ簡単に自作したいが、ソフトウェア開発技術を習得する時間が無い。

MCUソフトウェア開発者向け:制御ハードウェアの詳細を、データシートを読むよりも効率良く理解したい。ハードウェア担当者に直接聞くのも面倒だ。

これらの方々は、是非PSoC Creatorを試してください。ハード/ソフトの垣根がなく、自分が知りたいことをPSoC Creatorだけで調査でき、求める出力をCreateできるのがPSoC Creatorです。

PSoC Creatorを使うと、ハードウェア・ソフトウェア共に既存資産の活用と組み合わせでMCU開発するのが便利で効率的なのが良く解ります。ハードウェア的に言うとコンポーネント活用、ソフトウェア的に言うとAPI活用です。

PSoCの場合、外付けセンサー接続時にあると便利なアンプやコンパレータなどのアナログディスクリート回路や、AND/OR/NOTデジタルディスクリート回路などもMCU内蔵です。システム完成時の実装部品数が削減できます。

さらに、PSoC 4000Sには、タッチ・センサー制御に強いCapSenseも内蔵で、細かな調整もPSoC Creatorでできます。

一度使ってみれば、PSoC CreatorがPSoCの魅力を引き出すというトラ技解説が良く解ります。

PSoC 4000SとPSoC6テンプレート開発の可能性

弊社のPSoC 4/PSoC 4 BLE/PRoCテンプレートは、Cortex-M0対応で2015年発売当時は最新でした。

しかし、トラ技付属のPSoC 4100S搭載基板を活用できるテンプレートや、Entry Level第4世代PSoC 4000Sを使った新テンプレートも開発したくなりました。Cortex-M0+採用による低電力・高効率化が気になります。

例えば、PSoC 4000S CapSense Prototyping Kit($15)で新テンプレートを開発すると、タッチ・センサー機能も低価格で直にプロトタイプ開発ができそうです。更に高性能で低価格なPSoC 6ファミリ(Cortex-M4/M0+デュアルコア)にも興味があります。

PSoC 4000S CapSense Prototyping Kit
タッチ・センサー基板付きで$15と安価なPSoC 4000S CapSense Prototyping Kit

PSoC 6続報

MONOist組み込み開発ニュースに、PSoC 6と他社製品との性能、消費電力の比較が掲載されています(出典:「業界最小」の消費電力でセキュリティも、サイプレスがIoT向け「PSoC」を投入)。

PSoC 6の目標

「ある程度のシステム制御ができる性能+低消費電力+セキュリティ、これらの同時実現」というPSoC 6の目標のために採用された40nmプロセス技術とデュアルARMコアにより、PSoC 6の他社比、優れた性能が解ります。

PSoC 6 Comparison Table1
PSoC 6 Comparison Table1(記事より)
PSoC 6 Comparison Table 2
PSoC 6 Comparison Table 2(記事より)

青字が性能同等、または、より優れた項目を示しています。PSoC 4でも採用中の高性能CapSenseやアナログコンポーネント、多くのGPIO数、そして100MHz動作のCortex-M0+、ピーク時257DMIPSなど、弊社ブログ対象の従来MCUの性能枠を大きく超えるものです。

1MB ROM、288KB RAM、8KB キャッシュの意味

ディアルコアで、1MB ROM、288KB RAM、8KB キャッシュものリソースを持つPSoC 6制御には、RTOSが必要になると思います。MCU開発も、よいよOS必須時代になるのでしょうか?

PSoC Creator News and InformationにNew FreeRTOS on PSoC 4 port が掲載されています(PSoC Creator 4.0のStart Pageからもアクセス可能)。弊社マイコンテンプレートで使ったCY8CKIT-042 評価ボードへも適用できそうです。ARMコアなので、mbed OS 5も気にはなりますが、FreeRTOSですので、RTOSへの備え記事が、理解に有効に活用できるでしょう。

弊社自作FreeRTOSサンプルソフト状況

RTOSへの備え記事は、LPCXpresso 824-MAXを使ってFreeRTOSサンプルソフトを自作しています(Lチカ、Q-通信、セマフォ同期、ミューティックス排他制御の4種)。

この自作サンプルを横展開してLPCXpresso 812/812-MAX、LPCXpresso 1114/5へ適用する予定でした。しかし、LPCXpresso 824-MAXで動作するサンプル(勿論GPIOとLPCOpenライブラリのみ変更)が、Lチカを除いて他の評価ボードでは動作確認ができないのが現状です。

原因が(僅か数十行の)自作サンプルにあるのか、それとも、それ以外かの見極めも、結構大変です。FreeRTOSもv9では、スタティックなセマフォ、ミューティックス割付ができるなど改良が進んでいるのでデバッグには良さそうですが、現状のv8は未だ非対応です。

LPCXpresso 824-MAX版だけでもFreeRTOSサンプルソフトを無償リリースするか、それとも、当初の予定どおり全評価ボード対応として問題解決後リリースするか3月末を目途に検討中です。

Bluetooth 5.0対応のIoT向けマイコンPSoC 6発表

3月14日のEE Times Japanに“Cypress、低消費でより強固なセキュリティ実現”という記事が掲載されました。この記事から、2017/4Q(10月~12月)量産予定のCypressの新しいIoT MCU、PSoC 6の特徴をまとめました。

PSoC 6の特徴

  • Cortex-M4+Cortex-M0+ のデュアルARMコア
  • プロセス技術にウルトラローパワー40nm SONOS採用(従来は130nm)した結果、Cortex-M0+:15uA/MHz、Cortex-M4:22uA/MHz、ローパワーモード動作電圧:1.1V、ウルトラローパワーモード動作電圧:0.9Vを実現。消費電流は、下表参照。
PSoC 6 Current consumption
PSoC 6 Current consumption(記事より)
  • ハードウエアでのセキュア データストレージ機能を備えたTEE : Trust Execution Environment実装
  • 暗号化アルゴリズム:楕円曲線暗号(ECC)、AES(Advanced Encryption Standard)、ハッシュ(SHA-1/2/3)ハードウエア実装
  • Bluetooth Low Energy 5.0対応
  • 評価ボード:PRoC 6 BLE Pioneer Kit(CY8CKIT-062-BLE)は75米ドル。
    弊社マイコンテンプレート使用中のPRoC 4 BLE Pioneer Kit (CY8CKIT-042-BLE)は49米ドルです、ディアルコアを考慮するとお買い得?

ハードによるセキュリティ機能はIoT MCUに必須

IoTマイコンにARMコアを使う場合、新しいCortex-M23/33コアによるアプローチと、従来コアにTEEなどのセキュリティ機能を付加したアプローチの2つがありそうです。CypressのPSoC 6は、後者です。

いずれも、ハッキングやウイルス対策に、ハードによるセキュリティ対策は必須です。私個人の感触では、どの程度の処理を MCUで行うかにもよりますが、たとえ専用セキュリティハードを追加したとしても、Cortex-M0/M0+/M23クラスの処理能力では、IoT通信制御だけでも重すぎるのではないかと思います。

そこで、より能力の高いCortex-M33やCortex-M3、M4を使うか、M0クラスとのディアルコア化も解として有力かもしれません(コア性能差は、コチラを参照、Cortex-Mxの特徴はコチラを参照)。

PSoC 6はBluetooth 5.0とデュアルコアでしたが、IoT通信規格の決定だけでなく、MCUアーキテクチャ、これら両方の観察がIoT MCU選択に必要になりそうです。