주요 내용으로 건너뛰기

MCU

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:

이미지 구성

  • MCU에 통합된 그래픽 가속기의 가용성
  • 시스템 내 캐시 메모리의 가용성

메모리 액세스 및 대역폭

  • 클록 주파수와 서브시스템 버스 주파수
  • 내부 플래시 및 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 MCU마다 내장된 하드웨어 가속 기능이 서로 다른데, 이러한 가속 기능은 고성능 그래픽 애플리케이션을 달성하는 데 도움이 됩니다.

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라고도 불립니다.

다수의 STM32 플랫폼에 통합되어 있는 Chrom-ART 가속기는 CPU 부하 없이 이미지를 조작 및 전송할 수 있습니다. 또한 색상 채우기, 이미지 복사, 혼합, 픽셀 형식 변환 등 대부분의 그래픽 작업을 가속할 수 있습니다.

Chrom-ART 가속기는 두 계층을 블렌딩하여 초기 픽셀 형식을 원하는 출력 픽셀 형식으로 변환하고, 단 한 번의 작업으로 메모리 도착지에 결과를 전송할 수 있습니다.

또한 CLUT(Color Look Up Table)를 사용하는 색상 형식도 지원하므로 메모리 절감에 도움이 됩니다.

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 가속기는 그래픽 애플리케이션에 큰 이점을 제공합니다. 선택한 MCU에서 사용 가능한 경우, TouchGFX는 모든 Chrom-ART 기능을 처리하고 가능한 모든 그리기 작업을 CPU가 아닌 Chrom-ART 주변 장치로 리디렉션합니다.

Chrom-ART 주변 장치는 고성능 STM32 제품군에서 제공됩니다.

Further reading
  • 자세한 내용은 AN4943 애플리케이션 노트의 Chrom-ART 하드웨어 가속화를 참조하십시오.
  • 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 애플리케이션 노트의 하드웨어 JPEG 코덱을 참조하십시오.
  • Chrom-GRC

    일부 STM32 마이크로컨트롤러의 경우 직사각형이 아닌 새로운 형태의 디스플레이 추세에 맞춰 STM32 Chrom-GRC™(GFXMMU)를 주변 장치로 사용하고 있습니다.

    Chrom-GRC™ 주변 장치를 사용하면 애플리케이션이 직사각형이 아닌 디스플레이를 처리할 때 프레임 버퍼를 저장하는 데 필요한 RAM의 용량을 줄일 수 있습니다.

    원형 디스플레이의 경우 Chrom-GRC™는 메모리 요구 사항을 20%까지 줄여줍니다.

    정사각형이 아닌 화면을 제어할 때 Chrom-GRC™ 주변장치를 반드시 사용해야 하는 것은 아니지만 사용하는 편이 좋습니다.

    Chrom-GRC™ is also utilized when using emulated framebuffer.

    Chrom-GRC 주변 장치를 통한 메모리 최적화

    Further reading
  • 자세한 내용은 AN5051 애플리케이션 노트의 그래픽 메모리 최적화를 참조하십시오.
  • 내부 플래시

    비트맵 리소스를 사용하는 GUI 애플리케이션에서는 데이터를 저장하는 데 비휘발성 메모리가 필요합니다. The execution from and access to internal flash is in some cases up to several times faster than external flash.

    내부 플래시는 크기가 제한되어 있기 때문에 TouchGFX 프레임워크나 화면 정의 및 UI 로직을 저장하는 데 주로 사용하고, 비트맵 데이터는 외부 플래시에 저장되는 경우가 많습니다.

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

    비트맵 데이터의 양이 내부 플래시 용량을 초과할 때는 외부 메모리가 필요할 수 있습니다.

    Further reading
    자세한 내용은 외부 메모리를 참조하십시오.

    TouchGFX 플래시 메모리의 요구사항은 다음과 같습니다.

    • 프레임워크: 60 KB ~ 100 KB.
    • Screen definition and GUI logic: 1kbytes to 100kbytes.

    이러한 수치는 사용되는 프레임워크 기능 그리고 애플리케이션의 크기와 복잡성에 따라 달라집니다.

    내부 RAM

    프레임 버퍼(들)의 크기가 가용 메모리의 용량을 초과하지 않는 경우에는 내부 RAM을 사용하여 프레임 버퍼를 저장할 수 있습니다. 또는 설정에 외부 메모리를 추가할 수도 있습니다.

    프레임 버퍼의 크기 계산은 너비, 높이 및 색심도에 따라 달라집니다. 예를 들어, HVGA 해상도(480x320)와 16비트 색상이 지원되는 디스플레이의 경우 하나의 프레임 버퍼에 필요한 메모리는 다음과 같습니다.

    하나의 프레임 버퍼 크기 = 480 x 320 x 2 = 307,200바이트

    그래픽 애플리케이션에 사용되는 STM32 제품의 내부 RAM 용량은 수 KB에서 수 MB사이입니다.

    Further reading
    외부 메모리의 프레임 버퍼에 대한 자세한 내용은 외부 메모리 섹션을 참조하십시오.

    TouchGFX RAM 요구 사항:

    • 프레임워크: 10 KB ~ 30 KB
    • 위젯: 1 KB ~ 15 KB

    메모리 요구 사항은 애플리케이션마다 다를 수 있습니다.

    LCD 컨트롤러

    MCU 선정 역시 사용할 디스플레이 인터페이스와 해상도에 따라 달라집니다. 예를 들어 800x480 해상도는 데이터 전송 속도 측면에서 효율적인 인터페이스에서만 달성이 가능합니다. RGB-TFT 및 MPI-DSI 인터페이스는 SPI나 병렬 8080/6800보다 대역폭이 높은 경우가 많기 때문에 높은 해상도를 위해 주로 사용됩니다. 해상도가 낮은 디스플레이의 경우 보통 컨트롤러와 GRAM가 내장되어 있으므로 간단한 SPI 또는 8080/6800 인터페이스를 통해 연결이 가능합니다.

    고해상도 디스플레이(WQVGA 이상)에는 컨트롤러와 GRAM이 주로 내장되지 않기 때문에 마이크로컨트롤러 쪽에 컨트롤러가 설치되어야 합니다. RGB-TFT 및 MIPI DSI 인터페이스가 내장된 STM32 MCU에는 컨트롤러가 존재합니다.

    아래 그림은 GRAM 및 디스플레이 컨트롤러가 내장되어 있거나 내장되어 있지 않은 4개의 디스플레이 인터페이스에 관한 예시입니다.

    Further reading
    자세한 내용은 디스플레이 섹션을 참조하십시오.

    패키지 및 I/O

    필요한 I/O의 개수는 선택한 디스플레이 및 외부 메모리에 따라 다릅니다. 병렬 RAM/플래시로 병렬 디스플레이를 실행하려면 많은 수의 I/O가 필요하므로 패키지의 크기가 커질 수 있습니다.

    메모리 연결

    마이크로컨트롤러의 내부 플래시와 RAM의 용량이 충분하지 않은 경우에는 가장 적합한 외부 메모리 인터페이스를 탑재한 MCU를 선택하는 것이 중요합니다. STM32 제품은 NOR, NAND, SRAM, SDRAM, LPSDR SDRAM 및 PSRAM 메모리를 연결할 수 있도록 다양한 메모리 컨트롤러 주변 장치를 제공합니다.

    FMC(Flexible Memory Controller) 및 FSMC(Flexible Static Memory Controller)

    FMC는 정적 RAM을 지원하는 것 외에도 FSMC에 동적 RAM 지원(SDRAM)을 추가합니다. 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는 그래픽 스택에서 데이터를 위한 외부 플래시 메모리와 프레임 버퍼 및 힙 확장을 위한 외부 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.

    병렬 인터페이스에 비해 직렬 메모리 인터페이스는 저가의 외부 플래시 메모리를 소형 패키지에 연결하도록 허용하기 때문에 사용되는 핀 수를 줄일 수 있습니다.

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

    Further reading
    자세한 내용은 AN4760 애플리케이션 노트의 STM32 마이크로컨트롤러의 쿼드 SPI 인터페이스를 참조하십시오.

    Cortex®-M 코어

    STM32 MCU는 다양한 ARM Cortex®-M 아키텍처로 출시되어 있습니다. 다음은 STM32에서 그래픽을 실행하는 데 가장 많이 사용되는 코어입니다.

    Cortex®-M0+

    Cortex®-M0+는 단순한 아키텍처와 저렴한 가격이 특징으로, 낮은 해상도에서 실행되는 소형 정적 그래픽 애플리케이션에 적합합니다.

    Cortex®-M4

    Cortex®-M4M0+보다 많은 기능을 제공하며 계산 속도가 빠릅니다. 여기에는 DSP 명령어 세트와 단정도(single precision) FPU 장치가 포함되어 있습니다. 이들 명령어는 CPU의 부하를 줄이고 계산 속도를 높여줍니다.

    Cortex®-M7

    Cortex®-M7에는 더 복잡한 아키텍처 뿐만 아니라 DSP 명령어 세트가 포함되어 있으며, 데이터와 명령어를 위한 최대 16 KB의 Level 1 캐시 메모리와 배정도(double precision)를 갖춘 보다 효율적인 FPU 장치가 함께 제공됩니다. 이러한 캐시 메모리는 페치(fetch) 시간을 최적화하기 위해 데이터와 명령어를 계산 장치 주변에 배치할 수 있게 해줍니다.

    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(Digital Signal Processing) 확장아니요
    부동 소수점 하드웨어아니요예(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 제품군에는 명령어와 데이터 모두를 저장하는 최대 16 KB의 L1-캐시가 포함되어 있습니다. L1-캐시는 CPU와 가까운 위치에 일련의 데이터 또는 명령어를 저장하므로 CPU가 반복적으로 사용되는 동일 데이터를 계속해서 가져올 필요가 없습니다.

    Further reading
    자세한 내용은 AN4839 애플리케이션 노트의 레벨 1 캐시를 참조하십시오.

    듀얼 코어

    STM32H7 시리즈에는 듀얼 코어 라인이 포함되어 있습니다.

    Arm® Cortex®-M7 코어와 Cortex®-M4 코어는 각각 최대 480 MHz와 240 MHz를 실행할 수 있어 더 많은 프로세싱과 애플리케이션 파티셔닝이 가능합니다. 내장형 SMPS에는 동적 전력 효율을 높이기 위해 듀얼 코어 STM32H7 제품 라인이 제공됩니다.

    두 번째 Cortex®-M4는 그리기/그래픽 작업을 위해 M7 코어를 열어서 과도한 계산 작업을 떠넘길 수 있습니다.

    Note
    듀얼 코어 MCU의 경우, 특정 컨텍스트에 대해 TouchGFX Generator를 활성화해야 합니다. 여기서 단일 동시 컨텍스트만 지원됩니다. 자세한 내용은 TouchGFX Generator 사용자 가이드를 참조하십시오.

    버스 아키텍처

    대다수의 STM32 마이크로컨트롤러는 모든 마스터(CPU, DMA 등)와 슬레이브(플래시 메모리, RAM, FSMC, AHB 및 APB 주변 장치)를 상호 연결하는 32비트 멀티 AHB 버스 매트릭스 제공합니다. 따라서 여러 개의 고속 주변 장치가 동시에 작동하는 경우에도 원활하고 효율적인 운영이 보장됩니다.

    In addition to multi-AHB interconnect, some STM32 products embed 64-bit AXI to expand bandwidth. 따라서 성능과 전력 소모량을 최적의 상태로 조율할 수 있습니다.

    가격

    MCU의 가격은 내부 플래시의 크기, 내부 RAM, 그리고 패키지에 제공되는 핀의 개수에 따라 달라질 수 있습니다. 사용자는 인터페이스, 해상도, 성능 등의 요구 사항을 고려하여 적합한 MCU를 찾고 가격을 추정할 수 있습니다.

    Further reading
  • 구매 가능한 STM32 마이크로컨트롤러는 STM32 32비트 Arm Cortex MCU에서 확인하십시오.