メイン・コンテンツまでスキップ

マイクロコントローラ

マイクロコントローラ・ユニット(MCU)はすべての組込みソリューションのコアとなるもので、コストと機能の両面で幅広いオプションが用意されています。

グラフィックス用のマイクロコントローラを選択する場合には、サポートされているディスプレイ・インタフェース、マイクロコントローラ・パッケージ・サイズ、達成可能なグラフィック性能を考慮することが重要です。達成可能なグラフィック性能は以下の2つの主要因に左右されます。

画像合成

  • マイクロコントローラに内蔵されたグラフィック・アクセラレータの可用性
  • システム内のキャッシュ・メモリの可用性

メモリ・アクセスと帯域幅

  • クロック周波数とサブシステムのバス周波数
  • 内蔵のFlashメモリおよびRAMメモリへのアクセス

グラフィックス以外で実行される、アプリケーションに求められる機能(モータ制御やワイヤレス通信など)を考慮することも重要です。 これらの要因もマイクロコントローラの選定に影響します。

このページでは、GUI駆動のアプリケーション向けにSTM32マイクロコントローラを選択するときに考慮できるように、さまざまなマイクロコントローラのオプションとパラメータを吟味します。

グラフィックス向けのSTM32マイクロコントローラ

上記のSTM32マイクロコントローラの包括的な概要(内部メモリやペリフェラルに関する情報を含む)については、STM32マイクロコントローラのポートフォリオを参照してください。

Further reading

周波数

コア周波数は、画面リフレッシュ、画面の滑らかな表示、アニメーションの面で、グラフィック・アプリケーションの性能に大きく影響します。

これは、内部または外部のメモリからディスプレイのフレームバッファに転送可能なデータ量に影響し、計算処理やアニメーションの性能にも影響します。

周波数が高いほど、特定の時間枠内で転送可能なデータ量が増え、より複雑なアニメーションが作成可能になります。

STM32マイクロコントローラの最大コア周波数は800MHzです。

Note
周波数が高いほど消費電力も大きくなります。

グラフィック・サブシステム周波数

コアCPU周波数とグラフィック・サブシステム周波数を区別することが重要です。 グラフィック・サブシステム周波数には、内部バスの周波数、グラフィック・アクセラレータの周波数、ならびに内部および外部メモリのアクセス・スピードが含まれます。

グラフィック・サブシステム周波数は、全体のグラフィック性能にも大きく影響します。

グラフィックス・サブシステムの性能の計算方法の例については、この記事をご覧ください。 この記事は外部RAMのフレームバッファに重点を置いていますが、内部RAMにも同じ手順を適用できます。

組込みハードウェア・アクセラレーション機能

それぞれのSTM32マイクロコントローラに多様なハードウェア・アクセラレーション機能が内蔵されており、高性能グラフィック・アプリケーションの実現を可能にしています。

NeoChrom GPU

NeoChrom GPUでは、テクスチャ・マッピング、スケーリング、ベクタ・レンダリングなどの一部のグラフィック操作のハードウェア・アクセラレーションが可能です。 GPU2Dとも呼ばれています。

NeoChrom GPUはNeoChromVG GPUと呼ばれるバージョンにも含まれており、ベクタ・レンダリングをさらに加速させることができます。

NeoChrom GPUの詳細な説明と機能については、 NeoChrom/NeoChromVG上のTouchGFXに関する記事をご覧ください。

Chrom-ART

Chrom-ARTは、グラフィック処理の実行を支援する高度なDMAです。 DMA2Dとも呼ばれています。

Chrom-ARTアクセラレータは、多くのSTM32プラットフォームに内蔵されており、CPUに負荷をかけることなく画像の処理や転送が可能になります。 色の塗りつぶし、画像コピー、ブレンディング、ピクセル・フォーマットの変換など、主要なグラフィック処理を加速させることができます。

Chrom-ARTアクセラレータは、2つのレイヤをブレンディングし、元のピクセル・フォーマットを目的の出力ピクセル・フォーマットに変換し、結果を保存先メモリに転送するという操作を、わずか1回の操作で実行することができます。

Chrom-ARTアクセラレータは、カラー・ルックアップ・テーブル(CLUT)によるカラー・フォーマットもサポートしています。 これによりメモリを節約することができます。

STM32F469-EVALボード上で実行したアプリケーションの例を次に示します。ここでは、Chrom-ARTを有効にするとCPU負荷が82%から4%に減少しています。

Bird-Eat-CoinでのChrom-ARTの使用例

また、STM32H7では、YCbCrフォーマットからRGBフォーマットへの変換機能もChrom-ARTペリフェラルに追加されています。 この機能をJPEGハードウェア・コーデックと組み合わせることで、JPEG画像のエンコーディングおよびデコーディング時のCPUの負荷を軽減することができます。

YCbCrからRGBへの変換によるハードウェア性能

Chrom-ARTアクセラレータは、上記の機能によって、グラフィック・アプリケーションに多大な利点をもたらします。 選択したマイクロコントローラにChrom-ARTが内蔵されている場合は、TouchGFXがすべてのChrom-ART機能を操作し、可能なすべての描画操作を(CPUではなく)Chrom-ARTペリフェラルにリダイレクトします。

Chrom-ARTペリフェラルは、高性能STM32ファミリで使用できます。

Further reading
  • 詳細については、アプリケーションノートAN4943「Chrom-ART Hardware acceleration」を参照してください。
  • JPEGハードウェア・コーデック

    一部のSTM32ファミリには、画像やビデオをエンコードおよびデコードするためにJPEGハードウェア・コーデックが備わっています。

    この機能は、UIアプリケーションでビデオ・ファイルを再生したりJPEG画像を表示したりする必要がある場合に、重要な役割を果たします。

    一般的にJPEG画像のメモリ使用量は大きくありません。 JPEGハードウェア・コーデックでは、CPUの過負荷を招くことなく実行時に画像をデコードできます。

    一部のTouchGFXデモでは、JPEGハードウェア・コーデックを利用して、MJPEGビデオ再生中のCPU負荷を軽減しています。

    JPEGハードウェア・コーデックの性能

    Further reading
  • 詳細については、アプリケーションノートAN4996「Hardware JPEG codec」を参照してください。
  • Chrom-GRC

    STM32 Chrom-GRC™(GFXMMU)は、いくつかのSTM32マイクロコントローラに含まれるペリフェラルであり、最近の非長方形ディスプレイへのトレンドを効率的にサポートすることを目的としています。

    Chrom-GRC™ペリフェラルによりアプリケーションは、非長方形ディスプレイに対するデータ処理時にフレームバッファを保存するために必要なRAMの量を減らすことができます。

    円形ディスプレイの場合、このペリフェラルによってメモリ必要量が20%削減されます。

    非四角形の画面を制御する場合にChrom-GRC™ペリフェラルは必須ではありませんが、使用が推奨されます。

    Chrom-GRC™は、エミュレートされたフレームバッファの使用時にも利用されます。

    Chrom-GRCペリフェラルによるメモリ最適化

    Further reading
  • 詳細については、アプリケーションノートAN5051「Graphic memory optimization」を参照してください。
  • 内部Flash

    ビットマップ・リソースを使用するグラフィカル・ユーザ・インタフェース・アプリケーションでは、データを保存するために不揮発性メモリが必要です。 内部Flashからの実行およびアクセスは、場合によっては外部Flashに対するよりも数倍高速になります。

    内部Flashはサイズに制限があるので、ほとんどの場合はTouchGFXフレームワーク、画面定義、UIロジックを保存するために使用され、ビットマップ・データは外部Flashに保存されています。

    グラフィック・アプリケーションに使用されるSTM32製品のポートフォリオでは、0KBから数MBの範囲の内部Flashメモリが搭載されています。

    ビットマップ・データ量が内部Flash内に収まりきらない場合は、外部Flashが必要になる可能性があります。

    Further reading
    詳細については、「外部メモリ」を参照してください。

    TouchGFXのFlashメモリの必要量は以下のとおりです。

    • フレームワーク: 60KB100KB
    • 画面定義およびGUIロジック: 1KB100KB

    これらの数値は、使用するフレームワーク機能とアプリケーションのサイズや複雑さによって異なります。

    内部RAM

    内部RAMはフレームバッファの保存に使用できますが、それはフレームバッファのサイズが使用可能なメモリ内に収まる場合です。 そうでない場合は、外部メモリを追加して設定することになります。

    フレームバッファのサイズの計算は、幅、高さ、色深度に依存します。 たとえば、HVGA解像度(480x320)で16bitカラーのディスプレイの場合、1つのフレームバッファに必要なメモリは次のように計算されます。

    1フレームバッファのサイズ = 480 x 320 x 2 = 307,200バイト

    グラフィック・アプリケーションに使用されるSTM32製品には、数KBから数MBの範囲の内部RAMが搭載されています。

    Further reading
    外部メモリ内のフレームバッファの詳細については、「外部メモリ」セクションを参照してください。

    TouchGFXのRAM必要量は以下のとおりです。

    • フレームワーク: 10KB30KB
    • ウィジェット: 1KB15KB

    メモリ要件はアプリケーションごとに異なります。

    LCDコントローラ

    マイクロコントローラの選択は、使用するディスプレイ・インタフェースや解像度にも依存します。 たとえば、解像度800x480は、データ転送速度の点で効率的なインタフェースでないと達成できません。 高解像度用にはRGB-TFTおよびMPI-DSIインタフェースがよく使用されます。多くの場合に、SPIまたはパラレル8080/6800よりも高帯域幅だからです。 解像度の低いディスプレイの多くはコントローラやGRAMを内蔵しているので、シンプルなSPIまたは8080/6800インタフェースを介して接続することができます。

    高解像度ディスプレイ(WQVGA以上)の多くはコントローラやGRAMを内蔵していないので、マイクロコントローラ側にコントローラが必要になります。 RGB-TFTおよびMIPI DSIインタフェースを搭載したSTM32マイクロコントローラには、このコントローラを備えています。

    この図は、GRAMおよびディスプレイ・コントローラがある場合(またはない場合)の異なるディスプレイ・インタフェースの4つの例を示しています。

    Further reading
    詳細については、「ディスプレイ」セクションを参照してください。

    パッケージとI/O

    必要なI/Oの数は、選択するディスプレイや外部メモリによって異なります。 パラレルRAM/Flashを使用してパラレル・ディスプレイを使用するには、多数のI/Oが必要になり、パッケージが大きくなります。

    メモリ・インタフェース

    マイクロコントローラの内部Flashと内部RAMの容量が十分でない場合、最適な外部メモリ・インタフェースを搭載した適切なマイクロコントローラを選択することが重要になります。 STM32製品は、NOR、NAND、SRAM、SDRAM、LPSDR SDRAM、およびPSRAMメモリとのインタフェースのために、さまざまなメモリ・コントローラ・ペリフェラルを提供しています。

    フレキシブル・メモリ・コントローラ(FMC)とフレキシブル・スタティック・メモリ・コントローラ(FSMC)

    スタティックRAMのサポートに加えて、FMCではダイナミックRAM(SDRAM)のサポートがFSMCに加わります。 外部アクセス・スピードが速く、最大32bitデータ・バスを備えたフレキシブル・メモリ・コントローラ(FMC)では、外部RAMとの間で高スループットが可能になり、高解像度ディスプレイを適切にサポートできるようになります。 FMCにはメモリ・バンクごとに独立したチップ選択機能があります。 FMCでは、データ用の外部Flashメモリ、フレームバッファ用の外部RAMメモリ、およびグラフィック・スタック用のヒープ拡張をコントロールできます。

    シリアル・メモリ・インタフェース

    STM32製品によっては、シリアル・メモリ・インタフェースが内蔵されており、QSPI、PSRAM、OPI PSRAM、およびHyper RAMと同時に、シングル、ダブル、クワッド、オクト、およびHyperBus™ Flashメモリとのインタフェースが可能になっているものがあります。 シリアルの高速メモリ・インタフェースは、メモリ・マップド・モードで最大256MB、インダイレクト・モードで最大4GBまで対応します。

    パラレル・インタフェースと比較して、シリアル・メモリ・インタフェースでは低コストの外部Flashメモリとの接続が可能となるので、パッケージが小型化し、使用するピン数が少なくなります。

    ただし、シリアルFlashメモリを使用すると、パラレルFlashメモリに比べて通常は効率が低くなります。

    Further reading
    詳細については、アプリケーションノートAN4760「Quad-SPI interface on STM32 microcontrollers」を参照してください。

    Cortex®-Mコア

    STM32マイクロコントローラは、さまざまなArm® Cortex®-Mアーキテクチャで提供されています。 STM32でグラフィックスを実行する場合に、最もよく使用されるコアを以下に示します。

    Cortex®-M0+

    Cortex®-M0+はシンプルなアーキテクチャと低価格を特徴としています。 小規模の静的なグラフィック・アプリケーションを低解像度で実行する場合にお勧めします。

    Cortex®-M4

    Cortex®-M4にはM0+よりも多くの機能が含まれており、計算速度も上がります。 DSP命令セットと単精度の浮動小数点ユニット(FPU)が含まれています。 これらの命令はCPUの負荷を軽減し、計算速度を向上させます。

    Cortex®-M7

    Cortex®-M7にはさらに複雑なアーキテクチャとDSP命令セットが含まれており、倍精度の高効率なFPUと、データおよび命令用の最大16KBのレベル1キャッシュ・メモリが搭載されています。 このキャッシュ・メモリにより、データや命令コードを計算ユニットの近くに配置してフェッチ時間を最適化できるようになります。

    Cortex®-M33

    Cortex®-M33は高度なセキュリティ機能を備えたコアです。 TrustZone®テクノロジを採用しているため、マイクロコントローラでセキュアなアプリケーションと非セキュアなアプリケーションを同じコア上で実行できます。 CM7と比べてシンプルなアーキテクチャを備えています。

    Cortex®-M55

    Cortex®-M55はAIおよびDSPアプリケーション向けに設計されており、ベクタ処理のためのHeliumテクノロジを採用しています。 CM55にもTrustZone®テクノロジが採用されています。

    機能の概要

    機能Cortex-M0+Cortex-M4Cortex-M7Cortex-M33Cortex-M55
    DMIPS/MHzの範囲0.95~1.361.25~1.952.14~3.231.541.69
    Core Mark®/MHz2.463.425.014.104.40
    デジタル信号処理(DSP)拡張なしありありありあり
    浮動小数点ハードウェアなしあり(SP)あり(SP、DP)あり(SP)あり(SP、DP、HP)
    内蔵キャッシュなしなしあり(オプション4KB~64KB)I-Cache、D-Cacheなしあり(オプション4KB~64KB)I-Cache、D-Cache
    バス・プロトコルAHB Lite、高速I/OAHB Lite、APBAXI4、AHB Lite、APB、TCMAHB、AHB Lite、APBAXI、AHB、AHB Lite、APB、TCM
    デュアル・コア・ロックステップのサポートなしなしありなしあり

    詳細については、ARM Cortex-Mプロセッサの比較表を確認してください。

    レベル1キャッシュ

    STM32H7およびSTM32F7シリーズには、命令およびデータ用の最大16KBのL1キャッシュが含まれています。 L1キャッシュは、データまたは命令のセットをCPUの近くに保存するので、CPUは繰り返し使用する同じデータをフェッチし続ける必要がなくなります。

    Further reading
    詳細については、アプリケーションノートAN4839「Level 1 Cache」を参照してください。

    デュアル・コア

    STM32H7シリーズには以下のデュアル・コア・ラインが含まれています。

    Arm® Cortex®-M7コア(最大480MHz)とCortex®-M4コア(最大240MHz)によって、極めて優れた処理性能およびアプリケーション・パーティショニングを実現します。 デュアル・コアのSTM32H7製品ラインにはSMPSが内蔵されており、ダイナミック・パワー効率が向上します。

    2つ目のCortex®-M4によって計算負荷を軽減できるので、M7コアを描画やグラフィック処理用に開放することができます。

    Note
    デュアル・コアのマイクロコントローラでは、特定のコンテキストでTouchGFX Generatorを有効化する必要があります。 1つのコンカレント・コンテキストのみがサポートされています。 詳細については、TouchGFX Generatorユーザガイドを参照してください。

    バス・アーキテクチャ

    ほとんどのSTM32マイクロコントローラは、すべてのマスタ(CPU、DMAなど)とスレーブ(Flashメモリ、RAM、FSMC、AHBおよびAPBペリフェラル)を相互接続する32bitマルチAHBバス・マトリックスを提供しています。 これにより、複数の高速ペリフェラルが同時動作する場合でも、シームレスで効率的な動作が確保されます。

    マルチAHBの相互接続に加えて、一部のSTM32製品は帯域幅を広げるために64bit AXIを内蔵しています。 これにより性能と消費電力の最適なバランスが得られます。

    価格

    内部Flashや内部RAMの容量やパッケージ内で使用可能なピン数が、マイクロコントローラの価格に影響します。 インタフェース、解像度、性能などの要件を検討して、最終的には最適なマイクロコントローラを選択し、価格を見積もることができます。

    Further reading
  • 提供されているマイクロコントローラの詳細については、「STM32 32-bit Arm Cortex MCUs」を参照してください。