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

マイクロコントローラ

The microcontroller unit (MCU) is at the core of any embedded solution and there are a wide variety of options in terms of both cost and features.

When selecting an MCU for graphics, it is important to consider the supported display interfaces, the MCU package size, and the achievable graphics performance, which depends on two main factors:

画像合成

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

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

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

It is also important to consider other aspects of the application, such as e.g. motor control or wireless communication, which run in addition to the graphics. These factors can influence the choice of MCU.

This page will explore the various MCU options and the parameters to consider when selecting an STM32 MCU for a GUI-driven application.

STM32 MCUs for graphics

For a complete overview of the STM32 MCUs listed above, including information about internal memory and peripherals, see the STM32 MCU portfolio.

Further reading

周波数

The core frequency has a major impact on the performance of a graphical application in terms of screen refresh, fluidity of screens, and animations.

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

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

The core frequency of STM32 MCUs is up to 800MHz.

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

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

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

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

An example of how to calculate the performance of a graphics subsystem can be found in this article. The article focuses on framebuffers in external RAM, but the same procedure can be applied to internal RAM as well.

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

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

NeoChrom GPU

NeoChrom GPU can hardware accelerate some graphical operations such as texture mapping, scaling and vector rendering. It is also known as GPU2D.

NeoChrom GPU also comes in a version called NeoChromVG GPU, which can further accelerate vector rendering.

For a detailed description of NeoChrom GPU and its capabilities, visit the article about TouchGFX on NeoChrom/NeoChromVG.

Chrom-ART

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

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

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

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

Example of an application running on the STM32F469-EVAL board where the CPU load is decreased from 82% to 4% when the Chrom-ART is enabled:

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ハードウェア・コーデック

    Some STM32 families provide a hardware JPEG codec to encode and decode images and videos.

    この機能は、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™ is also utilized when using emulated framebuffer.

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

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

    ビットマップ・リソースを使用するグラフィカル・ユーザ・インタフェース・アプリケーションでは、データを保存するために不揮発性メモリが必要です。 The execution from and access to internal flash is in some cases up to several times faster than external flash.

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

    The portfolio of STM32 products used for graphic applications is between 0 Kbytes and up to a few Mbytes of internal flash memory.

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

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

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

    • フレームワーク: 60KB100KB
    • Screen definition and GUI logic: 1kbytes to 100kbytes.

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

    内部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に加わります。 The flexible memory controller (FMC) with its high external access speed and up to 32 bit data bus, allows for higher throughout from and to external RAM and hence better support of higher resolution. FMCにはメモリ・バンクごとに独立したチップ選択機能があります。 FMCでは、データ用の外部Flashメモリ、フレームバッファ用の外部RAMメモリ、およびグラフィック・スタック用のヒープ拡張をコントロールできます。

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

    Depending on the STM32 product, the serial memory interface is embedded and allows interfacing with single, double, quad, octo, and HyperBus™ flash memories alongside QSPI, PSRAM, OPI PSRAM, and Hyper RAM memories. The serial high speed memory interface can control up to 256Mbytes when in memory mapped mode and 4Gbytes in indirect mode.

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

    However, the efficiency is usually lower with serial flash memory compared to parallel flash memory.

    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

    The Cortex®-M33 is a core with advanced security features. It includes TrustZone® technology, which allows the MCU to run secure and non-secure applications on the same core. It has a simpler architecture compared to the CM7.

    Cortex®-M55

    The Cortex®-M55 is designed for AI and DSP applications and includes Helium technology for vector processing. The CM55 also includes TrustZone® technology.

    機能の概要

    機能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)Yes (SP, DP)あり(SP)Yes (SP, DP, HP)
    内蔵キャッシュなしなしYes (option 4-64kB), I-Cache, D-CacheなしYes (option 4-64kB), I-Cache, D-Cache
    バス・プロトコルAHB Lite、高速I/OAHB Lite、APBAXI4、AHB Lite、APB、TCMAHB, AHB Lite, APBAXI, AHB, AHB Lite, APB, TCM
    デュアル・コア・ロックステップのサポートなしなしありなしあり

    For further reference, check the ARM Cortex-M Processor Comparison Table.

    Level 1 cache

    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バス・マトリックスを提供しています。 これにより、複数の高速ペリフェラルが同時動作する場合でも、シームレスで効率的な動作が確保されます。

    In addition to multi-AHB interconnect, some STM32 products embed 64-bit AXI to expand bandwidth. これにより性能と消費電力の最適なバランスが得られます。

    価格

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

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