IoTを狙うデュアルコアMCU

CypressのPSoC 6を中心にNXPとSTM、3社のARMディアルコアMCUを調査しました。Cortex-M4とCortex-M0+を使う個人でも低価格で入手できるディアルコアMCUです。ディアルコアMCUの狙い、アプリケーション、シングルコアMCUソフトウェア開発との違いなどを説明します。

Cortex-A7とCortex-M4を使ったもう1つの超高性能ディアルコアMCUも少しだけ登場します。

ディアルコアMCUの狙い、アプリケーション

ディアルコアMCUの狙い
ディアルコアMCUの狙い(出典:Cypress Cortex-M4 PSoC 6サイト)

CypressのCortex-M4コアPSoC 6サイトの上図がディアルコアMCUの狙いを示しています。

つまり、「IoT市場獲得には、右側アプリケーションプロセッサからと左側マイクロコントローラ:MCUからの2つのアプローチがあり、MCUアプローチのPSoC 6は、処理能力とセキュリティ強化を低コスト、低電力で実現した」ということです。

PSoC 6は、実現手段としてメインコアにCortex-M4(150MHz)、補助コアにCortex-M0+(100MHz)のディアルコアを採用しています。このCortex-M4+Cortex-M0+の2MCU構成は、NXP:LPC54102STM:STM32WB55RGでも見られます。CypressとSTMは、Cortex-M0+側にBluetooth Low Energy無線通信機能を実装済みです。

PSoC 6は、実装セキュリティに応じてPSoC 62/63シリーズと3種類のPSoC 64シリーズに別れます。PSoC 62/63は、PSoC 6のセキュリティ機能とユーザ独自セキュリティファームウェア(ソフトウェア)を使うデバイス(次章参照)、最上位プレミアムセキュリティのPSoC 64は、標準的なセキュリティ機能を全て含むデバイスです。

一方、アプリケーションプロセッサアプローチは、NXP:iMX 7アプリケーションプロセサのようにスマホやRaspberry Piでも用いられたCortex-A7(800MHz)がメインコアで、Cortex-M4(200MHz)が補助コアです。このアプローチは、ソフトウェア開発規模が大きく評価ボードも高価で個人開発向きとは言いにくいと思います。Cortex-A7自身がマルチコアでOS利用が前提なので更に複雑になります。

まとめると、低コスト低電力で処理能力とセキュリティ強化目的のCortex-M4+Cortex-M0+ディアルコアMCUの狙いは、IoTアプリケーションです。PSoC 63搭載の評価ボード:CY8CPROTO-063-BLEの価格は¥2,289(Digi-Key調べ)で、個人でも手が出せる価格帯です。

ディアルコアMCUのソフトウェア開発

PSoC 63 Line with BLE (Applications and Freatures)
PSoC 63 Line with BLE (Applications and Freatures)

Cypress Roadmap: MCU Portfolio、P25から抜き出したPSoC 63のアプリケーションとFeaturesです。具体的なIoTアプリケーションや、実装セキュリティ機能が解ります。
※ご参考までにこのMCU Portfolioには、CapSenseテンプレート開発で用いたPSoC 4000S/4100S仕様も解り易く掲載されています。

同じP25記載のPSoC 63ブロック図です。Cortex-M4とCortex-M0+がメモリ結合されています。

PSoC 63 Line with BLE (Hardware)
PSoC 63 Line with BLE (Hardware)

PSoC 6のソフトウェアは、Cortex-M4とCortex-M0+それぞれのソフトウェアが、2つ同時に別々に動作します。簡単に言うと、各シングルコアMCUソフトウェア同士が、同じデバイス内で動きます。メモリ結合なので、同一メモリアドレス同時アクセスの競合回避手段なども多分あるハズです(←調査不足😌)。

つまり、ディアルコアMCUソフトウェア開発と言っても、従来のCortex-M4やCortex-M0+シングルコアMCUソフトウェア開発の経験やスキルがそのまま活かせるのです。

一方のMCUから見ると、片方のMCUはインテリジェントな周辺回路と同じです。

例えば、Windowsソフトウェア開発なら、1つの機能を複数スレッドに分割し、処理効率を上げるなどのマルチコア対応の工夫が必要です。しかし、Cortex-M4+Cortex-M0+デュアルコアMCUの場合は、シングルコアのソフトウェア開発手法がそのまま使えます。

差分は、「2つのMCUに、どの機能を割振るか」です。

FPU内蔵のCortex-M4は、セキュリティなどの計算処理、高速GPIOアクセスのCortex-M0+は、IO処理やBLEモジュール管理、というのが定番(CypressやSTMのディアルコアMCUにみられる)割振りのようです。

まとめると、ディアルコアMCUソフトウェア開発は、シングルコアMCU開発経験がそのまま活かせます。しかも、別々動作の2コアを持つので、RTOSを使わずに処理分離と本当の並列動作ができます。

また、個人入手可能な評価ボード価格も魅力です。

評価ボード搭載のPSoC 63:CY8C6347BZI-BLD43(116-BGA)は、BGAパッケージなので基板実装は簡単ではありません。しかし、このPSoC 63とBLEアンテナをモジュール化したCYBLE-416045-02(14.0 mm x 18.5 mm x 2.0 mm、43-pad SMT with 36 GPIOs、下図)が評価ボードに実装済みで単体購入も可能です。

また、個人利用の場合には、評価ボードを丸ごと基板実装するのも効果的です。

EZ-BLE Creator Modules CYBLE-416045-02
CY8C6347BZI-BLD43搭載のEZ-BLE Creator Modules CYBLE-416045-02

ディアルコアMCUへの対処案

ディアルコアMCUの狙いは、巨大なIoT市場です。

各社がディアルコアMCUを発売する理由は、高度化するセキュリティ機能や、どの規格かが不確定な無線通信機能に対して、現状のシングルARMコアMCUでは、処理能力不足が懸念されるためです。
※近距離無線通信の有力候補が、BLEであることは確かです。

ディアルコアMCUならば、たとえ規格が変わっても、その影響を片方のMCU内に止めることもできます。つまり、ソフトウェア資産が無駄にならない訳です。

IoT市場へは、Cortex-M4+Cortex-M0+と、Cortex-A7+Cortex-M4のアプローチがあります。Cortex-M4を用いる点ではどちらも一致しています。FPU内蔵Cortex-M4ソフトウェア開発や経験が、IoT MCUプログラマの必須要件になるかもしれません。

シングルコアMCU開発経験が活かせ、しかもRTOSを使わずに高速並列処理を実現できるディアルコアMCUのソフトウェア/ハードウエア開発を、評価ボードへの僅かな投資で、IoTが爆発的に普及する前から準備・習得するのは、技術者リスク回避の点からも必要だと思います。

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の使い方(その3前半)

Cypress PSoC 4 MCU内蔵タッチセンサ:第4世代CapSenseの使い方、3回目は、CapSenseの使い方を前後半に分けて示します。前半は、CapSenseのPSoC Creator設定方法、次回の後半は、CapSenseのプログラミングです。

図1 PSoC 4100S/4000S CapSenseの使い方
図1 PSoC 4100S/4000S CapSenseの使い方(第3回前半・後半の内容)

参照情報:PSoC 4 Capacitive Sensing (CapSense) コンポーネントデータシート Version 6.0

PSoC Creatorインストール → トラ技第3章参照

雑誌やブログの場合、各種ツールのインストール手順に多くの紙面が割かれます。本稿も同様でした。しかし、最新IDE:PSoC Creator 4.2インストール手順は、トラ技2019年5月号第3章P129~P142に詳しく記載済みです。

本ブログは、トラ技付録基板も活用予定なので、本稿読者は既にこのトラ技をご購入頂いている前提で、PSoC Creatorインストールや基本的な使い方は、トラ技を参照頂いて省略します(すいません😔)。

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

CapSenseコンポーネントのTopDesign.cysch配置

PSoC Creatorインストール後のPSoC MCU開発手順は、本ブログ記載PSoC Creator 3.3の時と同じです。

つまり、TopDesign.cysch:トップデサイン・スケマティックと呼ぶ回路図へ、PSoC 4000S/4100Sコンポーネントカタログからプロジェクトで使うCapSenseコンポーネントをクリック&ドロップで配置 → そのCapSenseコンポーネントのプロパティを設定しビルド → ビルドで生成された各APIをmain.cで利用 → ソフトウェア完成、という流れです。

図1 CapSenseとEZ-I2Cの2コンポーネントを配置した部分がTopDesign.cyschに相当します。本稿では、CapSenseコンポーネントのプロパティ設定を解説します。そして、次回後半が、ビルド後のAPIを使ったCapSenseプログラミング。
EZ-I2Cコンポーネントは、その4で説明します。

CapSenseコンポーネントのプロパティ設定

PSoC CreatorのTopDesign.cyschへCapSenseコンポーネントを配置し、右クリックしたのが図2です。

Open Datasheet…クリックで、最初に示した参照情報のPSoC 4 Capacitive Sensing (CapSense) コンポーネントデータシートがモニタ上に現れます。使用デバイスコンポーネントの詳細なデータシートが、クリックだけで簡単に参照できるのがPSoC Creatorの特徴です。

図2 Capsenseコンポーネントの配置とデータシート取得
図2 CapsenseコンポーネントのTopDesign.cysch配置とデータシート取得

CapSenseコンポーネントの詳細なプロパティ設定も、このデータシートに記載されています。ゆえに、このデータシートを参照してください…と書くと、これで本稿が終わりますので、少し解説を加えます。

図2のConfigure…をクリックします。コンポーネントのプロパティ設定は、どのコンポーネントでも全てConfigure…で現れるダイアログで設定します。

以下、本開発で用いる評価ボード、CY8CKIT-145-40XX PSoC 4000S CapSense Prototyping Kitを使って設定例を示します(図3)。
上側がCapSenseコンポーネント配置直後のプロパティ設定前、下側がプロパティ設定後です。基本動作に必要なコンポーネントプロパティ設定は、Basicタブのみで十分です。

図3 CapSenceコンポーネントのプロパティ設定
図3 CapSenceコンポーネントのプロパティ設定

配置直後の+アイコンクリックで、タッチUIに使うパッド形状:ButtonやLinear Slider選択 → Sensing mode:CSXやCSD選択という流れです。白抜きセル欄は選択肢あり、グレーセル欄は選択肢なし(変更不可)を示します。

CSXは相互容量式(Mutual-capacitance)のタッチ検出方法、CSDは自己容量式(Self-capacitance)のタッチ検出方法のことです。デフォルトはCSD(Self-cap)です。スライド・バー(SLD)は、自己容量式のみサポートですのでCSD、ボタン(BTN0/1/2)は、CSDかCSXの選択が可能で、評価ボードは相互容量式ですのでCSX(Mutual-cap)です(自己容量式、相互容量式は、その2投稿参照)。

CapSenseコンポーネントのプロパティ設定は以上です。繰り返しますが、基本動作はBasicタブの設定だけで十分です。

Advanceやその他のタブで更に詳細なCapSenseコンポーネントプロパティが設定できます。が、これらの設定は、データシートを参照してください。また、これら設定に、その4で説明するEZ-I2Cが役立ちます。

CapSenseコンポーネント使用GPIOピン設定

CapSenseコンポーネントが使うGPIOピン設定は、Workspace ExplorerのPinsクリックで別表示されるピンエディタ画面で行います。

CapSenseコンポーネントのGPIOピン設定
CapSenseコンポーネントのGPIOピン設定。TopDesign.cyschとは別画面で行うことに注意。

CapSenseコンポーネントのBTN0_Rx0使用ピンを、GPIOのP1[4]に設定する時が上図です。同様に、全てのCapSenseコンポーネントの使用GPIOピンを設定します。緑色□マーカーは、GPIO設定に問題が無いことを示しています。黄色が注意、赤色や灰色は設定NGです。

CapSenseの使い方(その3前半:CapSenseのPSoC Creator設定方法)まとめ

PSoC 4100S/4000S内蔵第4世代CapSenseコンポーネントのPSoC Creator設定方法を示しました。

  1. コンポーネントカタログからCapSenseを選び、TopDesign.cyschへ配置。
  2. 配置後、CapSenseコンポーネントのデータシートを参照し、CapSenseプロパティ設定。基本動作は、Basicタブ設定のみで十分。
  3. CapSenseコンポーネントが使用するGPIOピンの設定は、ピンエディタ画面で行う。

補足:PSoC Creator、コンポーネント、デバイスの関係

PSoC Creatorは、デバイス選択 → コンポーネントカタログから使用コンポーネントをTopDesign.cysch回路図へ配置 → コンポーネントプロパティ設定 → コンポーネント使用GPIOピン設定、という手順でソフトウェア設計を進めます。

それゆえ最初のデバイス選択を誤ると、コンポーネントリソース不足や、使用できるGPIOピンが無いなどの問題が発生します。PSoC Creatorは、この問題回避のため、設計途中であっても使用デバイスの変更が容易です(Project>Device Selection…で表示されるデバイスリストから代替デバイスを選ぶ)。これは、他社IDEに無いCypress PSoC Creatorの特徴です。

デバイスは、色々なコンポーネントを組合せた入れ物にしか過ぎず、コンポーネントこそがPSoCプログラミングの要です。コンポーネントが使う物理的GPIOピン割付を、論理的なTopDesign.cyschとは別画面のピンエディタで行うのもこのためです。

つまり、コンポーネントのプロパティ設定やコンポーネントAPIを使ったプログラミングは、デバイスが変わっても多くの場合そのまま引継げるのです。コンポーネントプログラミングが開発経験として蓄積できます。

PSoC Creatorとコンポーネント、デバイスの関係を示す図
PSoC Creatorとコンポーネント、デバイスの関係を示す図(出典:PSoC Creatorインストール時の図より)

但し、数多いデバイスリストから、最新の第4世代CapSenseコンポーネントを持つデバイスを再選択するのは、結構大変です(新旧コンポーネント混在や、CapSenseのように後方互換が無い例があるため。第4世代CapSense後方互換性は、その1参照)。

2019年6月現在、第4世代CapSenseコンポーネントを使用する時は、PSoC 4000S、PSoC 4100Sシリーズのデバイスから選ぶのが良いでしょう。

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

2018年IoTトレンドと2019年予想記事をEdge MCU開発者観点で読む

セキュリティ、産業IoT、通信事業者との連携、ウェアラブルデバイスという4テーマで2018年IoTドレンドとその予想結果、2019年のそれらを予想した記事がTechTarget Japanに掲載されています。

本稿はこの記事内容を、マイコン:MCU、特に本ブログ対象Edge MCU開発者の観点から読みたいと思います。

IoTサービス観点からの顧客目線記事

一言でIoTと言っても様々な観点があります。本ブログ読者は、殆どがMCU開発者なので、顧客がどのようなIoT開発を要求し、それに対して自社と顧客双方のビジネス成功をもたらす「ソリューション提供」が最も気にする点だと思います。

一方、要求を出す側の顧客は、記事記載の「IoTサービス」に注意を払います。そのサービス実現手段として、ベンダー動向やMCU開発者自身の意見を聞いてくるかもしれません。そんな時、日頃の技術動向把握結果を具体的に顧客に提示できれば、顧客案件獲得に有効なのは間違いありません。

顧客と開発者のIoT捉え方は異なる。
顧客はサービス観点でIoTを捉える。開発者はソリューション提供でIoTを捉える。

そこで、記事の4テーマ毎にEdge MCU開発者の観点、特にEdge MCU最新動向を関連投稿とともに示します。

セキュリティ

Edge MCUセキュリティ強化策として、昨年頃からMCUにセキュリティ機能を内蔵するか、または、MCU外付けに専用セキュリティチップを追加する動きが出始めました。
要するに、IoTではEdge MCUでデジタルデータ暗号化機能実装が必須になりつつあるのです。
関連投稿:守備範囲が広いSTM32G0のアクセス・ライン製品
関連投稿:IoTマイコンとセキュリティの色々なセキュリティ強化方法

産業IoT

産業機器データ収集と分析の重要性は顧客に認識されていますが、IoT導入は記事にあるように初期段階です。Edge MCUも、産業用にも流用できるメリットを示すIoT MCU新製品もありますが、車載用の新製品が多い状況です。
関連投稿:NXP新汎用MCU S32K1

通信事業者との連携

国により大きく異なる通信事業者とそのサービスや連帯を一言で表すことは困難です。ただし、日本国内でのIoTフィールドテストは、今一つ盛り上がりに欠ける感じが個人的にはします。やはり、黒船(海外発のIoT通信デファクトスタンダードとその普及)が必要かな?と思います。

ウェアラブルデバイス

Edge MCUに近距離無線通信(NFC)機能を搭載したり、AI機能(機械学習)を搭載しHuman Activity Recognition:人間活動認識を実現したりする新しいEdge MCI製品が登場しています。
関連投稿:NFCを使うLPC8N04のOTA
関連投稿:MCUのAI機能搭載

2019年2月18日速報:タイムリーなことに、Motor Fan Techという自動車関連の情報誌で、次世代ARM v8.1-Mアークテクチャが、業界最小の組み込みデバイス向けに、強力な信号処理を実現が掲載ました。次世代Cortex-Mプロセサは、機械学習(ML)パフォーマンスを最大15倍、信号処理パフォーマンスを最大5倍向上させるそうです。

IoTサービス例を顧客に示せるEdge MCUテンプレート構想

2018年3月の弊社LPC8xxテンプレートV2.5改版以降、新開発のマイコンテンプレートはありません。その理由は、記事にもあるIoTの急速な普及・変化が無かったことも1つの理由です。

これまでの弊社マイコンテンプレートの目的は、「開発者個人が低価格でMCU開発を習得すること」でした。このため、各ベンダーの汎用MCUとBaseboardを使い、そのMCU基本的動作開発までを1つの到達点としてきました。

2018年後半から新しいIoTトレンドに沿った新Edge MCUが各ベンダーから発売済みです。そこで、マイコンテンプレートも、顧客目線やその観点を取り入れた到達点へステップアップしようと思います。

顧客は単にMCUが動作するだけでなく、何かしらのサービス提供をしているIoT MCUを見たいでしょう。この「IoTサービス例を、開発者個人が、低価格かつ簡単に示せるマイコンテンプレート」が新しいEdge MCUテンプレートの構想です。

IoTサービス例を示すEdge MCUテンプレート
IoTサービス例を示すEdge MCUテンプレート

この場合の顧客とは、ビジネス顧客に限らず、開発者の上司や同僚、さらに、開発者自身でも良いと思います。開発結果がIoTサービスに関連していれば、誰でもその効果が判り易いハズです。

期待されているIoTサービスならば、開発者もMCU開発がより楽しく、その習得や応用サービスへの発展もより具体的かつアグレッシブになると思います。と言っても、クラウドを含めたIoTサービスを開発・提供するのは、個人レベルでは無理です。
従って、ほんの触り、一部分のIoTサービスになります。それでも、見る側からは、開発内容が解りやすくなります。

もはやMCUが動作するのは、当たり前です。その上で、+αとしてEdge MCUがIoTで出来るサービス例を示し、さらに、Edge MCU習得も効率的にできるのがEdge MCUテンプレートです。

今後開発するEdge MCUテンプレートは、IoTサービス指向の結果、これまでマイコンテンプレートが持っていた汎用性が少し犠牲になる可能性もあります。ただ、従来の汎用MCUの意味・位置づけもIoTで変わりつつあります。
関連投稿:RL78ファミリから解る汎用MCUの変遷
関連投稿:STM新汎用MCU STM32G0

MCU基本動作に加え、何らかのIoTサービス提供例を示す工夫をEdge MCUテンプレートへ加えるつもりです。