PSoC理解のための必読書

Cypressサイトは、“珍しく”日本語表示の選択肢があり、和訳資料も多くあります。中でも、PSoC理解のための必読書を2つ紹介します。

  1. PSoC 4入門:和訳版あり
  2. PSoC 4 Interrupt:英語版のみ

PSoC 4入門: AN79953

PSoC 4の周辺回路:コンポーネントは、「CPU制御無しで単独動作が可能」です。ここが標準MCUと最も異なる点です。

標準MCU(図5)とPSoC(図6)ブロック図比較(資料1より抜粋)
標準MCU(図5)とPSoC(図6)ブロック図比較(資料1より抜粋)

資料1の図6.PSoCブロック図は、アナログ/デジタルシステムが、ARM Cortex-M0と同列であることを示しています。つまり、アナログ/デジタルシステム単独で、Cortex-M0の代わりも出来るのです。1秒毎の赤LED点滅、いわゆるLチカのソースで違いを示します。

Lチカmainソース、標準(左)とPWM単独(右)の違い
Lチカmainソース、標準(左)とPWM単独(右)の違い

左が標準MCUと同様、Cortex-M0でLチカしたmain()、右がPWM単独でLチカしたmain()です。右側は、PWM初期化:PWM_1_Start()のみで無限ループ内の処理がありません。初期化後、直ぐに赤LED点滅が始まります。どちらの記述でもLチカを実現できます。

従ってPSoCの場合、処理をCortex-M0で行うか、またはコンポーネント単独で行うかの検討も必要になります。方針としては、「できるだけ多くの処理をコンポーネントで行い、残りをCortex-M0で処理する」、これで電力消費の最も多いCortex-M0の処理軽減が可能となります。これがPSoCの特性を活かした設計だと思います。

資料1はコンポーネント単独制御(赤と緑)Lチカサンプルと、IDE: PSoC Creatorの使い方が示されています。

PSoC Creatorは、私が一番使いやすいと思う無償IDEで、最新版は3.3です。旧3.2版にリソースメータなどの機能が追加されており、8週毎にコンポーネントパックなどの更新がなされるそうです。ROM容量制限などはありません。

PSoC Creatorは、回路図(*.cysch)へ使用コンポーネントを配置し、そのプロパティ設定後、回路図レベルで一度BuildすることでファームウエアへのAPI生成を行います。これは、ルネサスCS+のコード生成や、Freescale KDSのProcessor Expert: PEと同様Rapid Application Development: RAD機能です。

PEはコンポーネント選択のみですが、PSoCは、前述のコンポーネント単独でも動作するため、コンポーネント間の接続も記述できる回路図を用います。API生成後は、ソース記述中にVisual Studioライクな入力候補補完機能が働きます。

回路図の青色で追記されたLEDなどは、ソース記述のコメントに相当します。これにより出力LowアクティブでLEDが動作することが一目で解ります。

Cypressは、ソースを「ファームウエア」と記し、上層のアプリケーションソースとは明確に分けるようです。また、ZIP版の本資料で、このサンプルファームも同時提供されます。

PSoC 4 Interrupt: AN90799

Cortex-M0とNVIC(資料2より抜粋)
Cortex-M0とNVIC(資料2より抜粋)

Cortex-M0コアのマイコンは、割込みコントローラ:NVICが使いこなしのポイントです。
3つのサンプルファームが提供される資料2を読むと、レベル/エッジトリガやプライオリティなどの割込み関連をPSoC Creatorでどのように設定するかが解ります。

デフォルト生成されるISR: Interrupt Service Routineは、‘#START~’#END間にユーザ処理を追記すれば再Buildしても保持されるなどは、一般的なEclipse IDEと同じです。

面白いのは、NVICの動作遅延が一覧(Table 3)になっている点です。他社資料でこのような詳細情報は見当たりません。Cypress資料全般に言えるのは、記述が丁寧で適切、しかも詳細な点です。

Figure 17には、資料1にも出てきた使用頻度が高いTCPWMコンポーネントの割込み設定方法が示されています。前述のコンポーネント単独とCortex-M0単独でLチカさせる処理以外に、NVICを使ってLチカさせることもできます。Lチカ実現方法をまとめると下表になります。

Lチカ実現方法 概要
コンポーネント単独制御 TCPWMコンポーネント出力で赤LED制御(資料1の方法)
コンポーネントとCortex-M0で制御 TCPWMコンポーネントのISRで赤LED制御(資料2の方法)
Cortex-M0単独制御 main()で赤LED制御(標準的な方法)

 

資料2は、この他にGPIO入力でLED制御するサンプルや、WDT設定サンプルも記載されています。また、新マイコンテンプレート候補のPSoC 4/PRoCテンプレートで用いるSysTick Timerの記述もあります。
弊社販売中の4種テンプレート(ルネサスのRL/G1xテンプレート、NXPのLPC8xxとLPC111xテンプレート、FreescaleのKinetis Eテンプレート)は、コチラをご覧ください。

* * *

PSoC 4に関する技術資料は、他にもたくさんあります。ここでは、最初に目を通すべき2資料を示しました。

RTOSを使わないマイコンソフトは、Lチカでまとめた3つの方法のどれかで処理を作成します。PSoCは、一般的なMCUでは不可能なコンポーネント単独制御が可能です。これが活用ポイントです。多くの資料から、このポイントをピックアップすると速習できるでしょう。

標準的なEclipse IDEに慣れた開発者、特にソフト担当者は、PSoC Creatorの回路図にコンポーネントを配置することに違和感を覚えるかもしれません。コンポーネントのみでも制御できるPSoCたるゆえんです。
BLEコンポーネントなどは、回路図に配置するだけです。配線も書込めるコンポーネントエントリーシートと思えば良いでしょう。逆にハード担当者にとっては、より身近にマイコン開発ができるツールです。
PSoC On-Demand Trainingを見るとPSoC Creatorの動作が解ります。

要は慣れの問題で、API生成というIDEの目的は、どのマイコンでも同じです。IDE習得のコツなどを参考にすれば、慣れるのも早いと思います。

PSoC 4とPRoC BLE概要

アプリケーションの広い範囲を、一般的なマイコンよりも少ないデバイスでカバーできる」、これがCypressのPSoCです。

  • PSoC:     Programmable System-On-Chip
  • PRoC:     Programmable Radio-On-Chip
  • MCU:      Micro Controller Unit
  • BLE:        Bluetooth Low Energy

PSoCの特徴

一般的なマイコン:MCUは、制御コアとADCやUARTなどのアプリケーションに必要なコンポーネントがセットになったデバイスです。必要なコンポーネントが無い、または不足する場合には、制御コアとコンポーネントの選択肢が記載されたセレクションガイドからアプリに合うMCUを選びます。
つまり、元々アプリケーション起因なので、MCUのアプリ適用範囲は限定的です。

一方、PSoCのコンポーネントは、コンポーネント単体でプログラマブルです。1つのコンポーネントで複数の異なる機能を実現でき、これはデジタル回路だけでなく、アナログ回路のコンポーネントも同じです。また、コンポーネント間接続も、プログラマブルです。これら機能は、動作中でも変えることができるリコンフィグラブルです。

PSoC 4ブロック図(データシートより抜粋)
PSoC 4ブロック図(データシートより抜粋)

PSoCを「カメレオンIC」とトラ技2013年7月特集で呼んだのは、制御コア以外のアナログ/デジタルコンポーネントがこのように状況に応じて変わるからです。
ゆえにPSoCは、MCUよりもアプリケーションの対応自由度が高いのです。

PSoC 4デバイス価格調査

プログラマブルなコンポーネントを持つPSoCはMCUより高価です。制御コアをARM Cortex-M0/M0+とした時のPSoCとMCU価格差をDigikeyで調査した結果が下表です(※ほぼ同じスペックの比較)。

ベンダ
型式
 

CYPRESSCY8C4245AXI-483

 

NXPLPC1114FBD48/302

 

FREESCALEMKL05Z32VLF4

制御コア Cortex-M0 Cortex-M0+
コア最大速度 48MHz 50 MHz 48 MHz
ROM/RAM 32kB/4kB
デジタルコンポーネント 4SPI, 2I2C, 4UART 2SPI, I2C, UART SPI, I2C, UART
アナログコンポーネント 12b ADC, 2OP AMP, 4CMP 10b ADC 12b ADC、12b DAC
GPIO 36 42 41
パッケージ 44-TQFP 48-LQFP 48-LQFP
2015/9 Digikey価格 526 414 339

 

アプリへの柔軟性や部品の共用化へデバイスコストアップをどれだけ許容するか、マイコン選定時の永久課題です。個人的には、面白い機能盛りだくさんのPSoC 4を活用したいと思います。

PSoC 4 BLE動画

PSoC 4に、IoTセンサマイコンのトレンド、Bluetooth 4.1のBLEコンポーネントを追加したのがPSoC 4 BLEです。BLE Pioneer Kitの動画(英語)で、IoTマイコンPSoC 4 BLEの動作や特徴が解ります。

BLE機能を一体化したPSoC 4 BLEやPRoC BLE(後述)と、MCUにBLEを外付けにするアプローチ、どちらが優れているかは検討が必要です。しかし、一体による小型化、iPhone/AndroidやパソコンとのBluetooth通信確認済みのアンテナ、しかも各国の規格認証済みであるなど魅力があると思います。

本ブログの対象Cypressデバイス:
PSoC 4、PSoC 4 BLE、PRoC BLE

制御コアが8051のPSoC 3、ARM Cortex-M3のPSoC 5もありますが、本ブログは、制御コアに8/16ビットマイコンの置き換え市場を狙うCortex-M0を使った以下3デバイスを対象とします。

  1. PSoC 4
  2. PSoC 4 BLE
  3. PRoC BLE

PRoC BLEは、普通のMCUで使うADCやUARTのコンポーネントに、BLEコンポーネントを追加したIoT MCU市場へ殴り込みをかけるCypressデバイスで、アナログコンポーネントブロッグが無いデバイスです(前回記事のブロック図参照)。
今日現在DigiKeyで未販売ですので価格は不明ですが、PSoC 4 BLEよりはかなり安くなると思います。

* * *

PSoCの特徴と3つのブログ対象デバイスについて示しました。これらデバイスは、制御コアがCortex-M0のため、普通のMCU開発者なら試しに使ってみる障壁は少ないと思います。
今後は開発キット、PSoC 4 Pioneer KitBLE Pioneer Kitを使って、デバイスの具体的な使い方、一般的なMCUとの開発の違いなどを記載する予定です。