STM32CubeIDE v1.0.1更新

STマイクロエレクトロニクス(以下STM)のSTM32マイコンマンスリー・アップデート2019年7月号P9に、STM32CubeIDEのv1.0.1更新が記載されています。

STM32CubeIDE v1.0.1更新内容

内蔵のコード生成ツールSTM32CubeMXがv5.2.0からv5.2.1に変更されたこと、バグ修正が主な更新内容です(RN0114(2019/07/11))。

STM32CubeIDE v1.0.1更新内容
STM32CubeIDE v1.0.1更新内容

最新のSTM32CubeMX v5.2.1により、STM32G0x LL APIを活かしたソフトウェア開発がSTM32CubeIDE v1.0.1でも可能となりました。つまり、弊社推薦のSTM32MCU開発環境:SW4STM32+STM32CubeMX v5.2.1+STM32G0 FW 1.2.0と同じ土俵に今回の更新でなった訳です。

関連投稿:続報STM32CubeIDE

ベースEclipse IDE状況

STM32CubeIDE v1.0.1のベースEclipse IDE は、ECLIPSE™ 2019-03 です。Eclipse最新版は、ECLIPSE™ 2019-06(2019/06/19)ですので、ベースに合わせてSTM32CubeIDEも更新されるでしょう。

Eclipse IDEは、昨年の2018年6月までは、Photon、Oxygen、Neonなどのリリース名が付いていましたが、6月以降は、ECLIPSE™リリース年-月に変更されました。3か月毎に更新され、次回は2019-09予定です。
※メジャー/マイナー更新かは、判りにくくなりました。

STM32CubeIDE v1.0.1使用所感

今回の更新で期待していた日本語対応に関しては、旧STM32CubeIDE v1.0.0からの改善は見られません。

例えば、SW4STM32プロジェクトをSTM32CubeIDEへインポートすると、日本語ソースコードコメントが文字化けします。Preferences>Text Editors>Colors and Fontsを変えても同様です。

付属エディタを使っての直接日本語入力は問題ありませんが、SW4STM32からのマイグレーションツールでの文字化け発生は、回避手段があるとは思いますが面倒です。Atollic社)TureSTUDIO最終版で見せた日本語メニュー実装などは、先の話になりそうです。

また、旧v1.0.0では正しく表示されていたInformation Centerページも、‘表示できません’となります。

RN0114の2.3 Known problems and limitations項目も多いので、あえて今すぐにSW4STM32に変えてSTM32CubeIDE v1.0.1を使う必要性は感じません。土俵(付属開発ツール版数)が同じになっただけです。

現行SW4STM32 → 新STM32CubeIDE切替えタイミング

コードサイズ制限無しのSTM32MCU無償IDEは、旧Atollic社)TrueSTUDIOは既にDiscontinue、AC6社)SW4STM32も新デバイスへの更新をしない可能性が高いと思います。新しいIDE:STM32CubeIDEへ切替えるタイミングが、そろそろ近づいてきました。

筆者としては、SW4STM32の更新状況を注視しつつ現行IDE使用を維持し、次回のSTM32CubeIDE更新タイミングで新IDEへ切替えるつもりです。



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が有力です。この詳細については、次回評価ボードの解説時に説明します。

LibreOffice最新版6.2.5へ更新

LibreOffice版数(2019年7月9日現在)
パッケージ 想定ユーザ 2019/7/4版数
最新版(stable 技術マニア、新しいもの好き、パワーユーザ向け 6.2.4 → 6.2.5
安定版(stable ビジネス組織、法人企業、慎重なユーザ向け 6.1.6(変更なし)

2019年7月4日、パワーユーザ向け新機能を盛り込んだLibreOffice最新版が、6.2.5へマイナー更新されました。安定版は、6.1.6のままです。マイナー更新方法無料テンプレートなどは、リンク先投稿を参照してください。

マイナー更新間隔とメジャー更新予測

マイナー更新実績、下線はメジャー更新予測
パッケージ 更新月日(版数)
最新版 2019/04/19 (6.2.3) → 2019/05/22 (6.2.4) → 2019/07/04 (6.2.5) → 2019/08 (6.3)?
安定版 2019/02/07 (6.1.5) → 2019/05/09 (6.1.6) → 2019/08 (6.2)?

現在LibreOffice提供中のダウンロード版数は、6.2.56.2.4、それと6.1.6です(全て日本語版)。安定版は6.1系のまま、最新版は6.2系で更新中です。

最新版の更新間隔は、おおよそ1か月、安定版は3か月です。最新版は、次回6.3系へのメジャー更新が8月に予定されており、このタイミングで安定版も6.2系へメジャー更新すると思います。

LibreOffice 6.1系と6.2系の差は、こちらの投稿のノートブックバー章を参照してください。

LibreOffice 6.2系の個人評価

筆者は、今年2月からノートブックバーが採用されたLibreOffice最新版6.2系を代々使い続けています。バグにも遭遇せず便利にDraw/WriterをWindows 10 1903で使用中です。

6.3系でどのような機能が追加されるかは分りませんが、個人的にはMicrosoft Office代替としてLibreOfficeはお勧めです。

LibreOffice6.2系とMicrosoft Office 2019/365との機能比較は、こちらの投稿の比較表を参照してください。

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シリーズのデバイスから選ぶのが良いでしょう。

STM32G0動画と専用テンプレート

STマイクロエレクトロニクス(以下STM)の公式ブログで、STM32G0を理解できるPart.0~10の動画(英語版)を紹介しています。
各動画は、休憩時間に視聴するのに丁度良い6分から15分程度の長さです。

動画リスト

13:13     Pt. 0, Install Procedure

6:05       Pt. 1, Saving Content of the Flash of the STM32

13:47     Pt. 2, Blinky

13:09     Pt. 3, PWM

9:10       Pt. 4, External Interrupt

14:20     Pt. 5, Low Power (Pt. 1)

6:23       Pt. 6, Low Power (Pt. 2)

13:19     Pt. 7, Printf

13:27     Pt. 8, Low Layer Drivers

17:37     Pt. 9, DMA

15:14     Pt. 10, Flashing STM32

少し聞きにくい英語ですが、スライドを見るだけでも内容は解ると思います。

開発環境

動画のIDEは、KeilのSTM32G0/F0/L0専用無償版を使っています。既にSTM32CubeIDEやSW4STM32を利用中の方は、これらIDEとKeil専用版を同時インストールすると、STM32G0/F0/L0のみコンパイル可能となるトラブルが発生するらしいので注意してください。

IDE以外は、コード生成ツール:STM32CubeMX、評価ボード:Nucleo-G071RB、通信アプリ:Tera Termなどおなじみの環境での解説です。

STM32G0のSTM32F0/F1をカバーする広い守備範囲、Low Layer API開発メリットや重要性などが理解できると思います。残念なのは、STM32G0x全シリーズ搭載の最新ADC解説が無いことです。ADCに関しては弊社関連投稿を参照ください。

STM32G0x専用テンプレート

動画Part8紹介のLL APIを活用したSTM32G0x専用テンプレートを発売中です。

STM32G0xシリーズのプロトタイプ開発着手時に必要となるLPUARTやLED制御などの複数サンプルソフトがあらかじめ実装済みで、評価ボードADC入力変換値のTera Term出力も実装済みです。

STM32G0xシリーズ性能をフルに発揮したアプリケーション早期開発や、STM32G0習得に最適です。

ご購入、お待ちしております。

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テンプレートにはトラ技付属基板も利用するつもりです)。

ユーザ目線Windows 10 1903更新方法

Windows 10サポート期限は、年2回の大型更新後、1年と半年です。つまり、1809なら2019年末まで。2020年1月14日のWindows 7に比べ超短期です。Windows 10ユーザは、大型更新1903 May Update(19H1)への対応は必須なのです。

前回の1809更新トラブルをまぬかれた筆者を含むラッキーなWin10ユーザが、今回の1903更新をどのように乗り切るかについて私案を示します。

3つの1903更新方法

Microsoftは、前回1809更新一斉配布→トラブル頻発の反省から、今回1903は、段階的配布に変えたそうです。それでも、前回同様、1903も重大な更新トラブルの記事、情報が多くあります。

関連投稿:LibreOffice最新版6.2.4更新のWindows 10 May Update章

この段階的配布により、いつ始まるか判らない自分のPCの1903更新への対応法は、3つあります。

  1. 主体的に1903更新開始:例えば開発が一段落したなどユーザの都合が良い時に、ユーザ自身で1903更新を開始
  2. 受動的に1903更新受付:1903更新開始は、PCにお任せ、ユーザもそれに従う。多くの記事で推薦。
  3. 受動的に1903更新受付、更新延長の場合あり:1903更新の開始は、PCにお任せ。但し、ユーザの都合が悪い場合は、一時的に1903更新を延長

1:主体的に1903更新開始

1903段階的配布の目的は、徐々に明らかになる更新トラブルに対する策を、Microsoftが通常のUpdateで大型更新前に実施し、トラブル発生頻度を少なくすることです。多くの記事が、1903更新をひたすら待てというのは、Microsoftのこの意図を汲んだ結果です。

従って、主体的に1903更新の開始をする時は、更新トラブルの覚悟が必要です。方法は、「何回か更新プログラムのチェック」を押すことです。これにより主体的更新をMicrosoftが検知し更新が始まります。

ユーザメリットは、当然事前にシステムバックアップをしており、万一のトラブルが発生しても自己責任なので精神的に安定して回復できることです。トラブル発生時には回復し、2または3の選択肢となります。

2:受動的に1903更新受付

朗報です。1903からは、Homeユーザでも最大35日の大型更新延長が可能になったそうです。この機能は、次の大型更新後にその効果が明らかになるでしょう。

しかし、現行の1809 Windows Homeユーザには、大型更新延長機能がありません。例えユーザ都合が悪くても、開始した1903更新を受入れる以外に手はありません。

段階的配布で自分のPCの順番が来るのを待ち、トラブルが無い1903更新完了を祈りましょう。

3:受動的に1903更新受付、更新延長の場合あり

1809 Windows Pro以上のユーザが取りえる現在最も大型更新のトラブルリクスが少ない可能性がある方法です。

大型更新を延長する方法は、「更新開始前」に、Windows Updateの下記詳細オプションを設定します。

大型更新の延長設定
大型更新の延長設定(1809 ProのWindows Update詳細オプションデフォルト状態)

赤枠、これは更新インストールの制御であって、更新プログラムはPCへダウンロードされます。一方、橙枠の一時停止は、更新プログラムも再度ダウンロードする必要があります。どちらも、自分のPCに段階的配布順番が回ってきたのは同じですが、橙枠は、再び更新プログラムの配布を待たねばなりません。

いずれも、PCの通知アイコンや、いつもと違う大型更新プログラムダウンロード中の挙動にユーザが気づく必要があります。忙しくてこの挙動に気が付かずにいると、何らかのトラブルが発生する可能性もあります。

その理由は、上記更新延長機能を確かめた記事、情報が見当たらないからです。これらユーザに嬉しい機能はあっても、本当に機能するかは確かめようがありません。

1903大型更新リスクとまとめ

対応案 更新トラブル発生確率 トラブル時のユーザ精神安定度
1. 主体的に1903更新開始 +++ +++
2. 受動的に1903更新受付
3. 受動的に1903更新受付+延長 ++ ++

色々な記事、情報が言うように、受動的に1903更新開始を待つのが大型更新トラブル回避としては、得策なようです。次回、秋の大型更新よりも前までに1903更新完了を待てる方は、リスクが少ない2の対応が良いでしょう。

ちなみに、1903更新でユーザが得られる新機能として筆者が良いなと思うのは、マウスポインタの大きさが大きくなるくらいですが…。

但し、ベンダ純正PCであっても事前にあらゆる組合せに対するトラブル回避策を施すことは不可能です。例えば、自作組込みPCや後付けパーツを組み込んだ純正PCなどに対しては、2や3の対応でもトラブル発生の可能性は、1と大差なしと言えるかもしれません。

更新開始を待ったのに運悪く2や3の対策でも更新トラブルになった時、回復できるバックアップがどの時点のものかが重要です。最悪イニシャルに回復するしかない場合、インストールしたアプリケーションやそれまでのユーザデータは無になります。時間的、精神的にも、かなりの負担です。

更新開始タイミングが主体的な1の対応のみが、最悪イニシャルを避ける策でしょう。

結局、頻繁なシステムとユーザデータバックアップのみが、大型更新トラブル回避策だと筆者は思います。更新開始を主体的にするか、受動的にするのかは、トラブル発生時の精神的な影響に差を生むのみだと思います。

1903 May Updateをどのように乗り切るかについて私案を示しました。筆者自身、どの策にするか未定ですが、ご参考になれば幸いです。