C
STM32F769I ディスカバリーキット
このトピックでは、STM 社のSTM32F769Iディスカバリーキットに関する必要な情報を提供します。
ボードの特長
- STM32F769NIH6 MCU(ARM Cortex-M7)
- 4 インチの静電容量式タッチ LCD ディスプレイ (800x480)
- 512+16+4 KバイトのRAM
- 128 Mbit SDRAM
- 2 MBのフラッシュメモリ
- 512 Mbit クワッド SPI NOR フラッシュメモリ
詳細については、STM32F769I Discoveryのウェブサイトをご覧ください。
対応カラー深度
このボードのリファレンスポートは、32bppの色深度に対応しています。また、16bppおよび24bppにも対応していますが、これらはリファレンスポートには実装されていません。詳細については、「QUL_COLOR_DEPTH」および「色深度」を参照してください。
フレームバッファの部分的なサポート
このボードは、部分フレームバッファ戦略をサポートしています。これを有効にするには、QUL_PLATFORM_PARTIAL_FRAMEBUFFER を設定し、Platform ライブラリを再ビルドしてください。
部分フレームバッファを使用すると、アプリケーションのメモリ要件を大幅に低減できますが、複雑なアプリケーションではパフォーマンスの低下や、画面のティアリング現象が発生する可能性があります。
あらかじめビルド済みのデモおよびサンプル
STM32f769I-DISCOVERY ボード用のパッケージには、あらかじめビルド済みのthermoデモバイナリが含まれています。Qt Quick Ultraliteはこのボード上でベアメタルとFreeRTOS の両方をサポートしているため、demo_images ディレクトリにはそれぞれに対応したバイナリが用意されています。また、Thermo デモには、メートル法単位版とインペリアル単位版の2つのバリエーションがあります。
デバイスのフラッシュに関する詳細については、「STボードのフラッシュ手順」セクションを参照してください。このボードの場合、外部ローダーとして「MX25L512G_STM32F769I-DISCO 」を選択してください。
デバッグメッセージの読み取り
デフォルトでは、qul_printf およびQul::PlatformInterface::log の呼び出しによる出力は、USB経由でホストマシン上に公開されるSTLink仮想COMポートにリダイレクトされます。シリアル設定は以下の通りです:
Baud rate: 115200
Data bits: 8
Stop bits: 1
Parity: None
Flow control: Noneハードウェアアクセラレーション
リファレンスポートは、ハードウェアアクセラレーションによるグラフィックス処理のために、STMicroelectronicsのChrom-Art Accelerator(DMA2D)を利用しています。
DMA2Dは、画像処理に特化したダイレクトメモリアクセス(DMA)アクセラレータです。以下の操作を実行できます:
- 画像を特定の色で塗りつぶす。
- ソース画像を宛先画像にコピーする。
- ピクセル形式の変換を行いながら、ソース画像を宛先画像にコピーする。
- ピクセル形式が異なる 2 つのソース画像を合成し、その結果をピクセル形式の変換を行って宛先画像にコピーする。
記載されているすべての操作は、画像の一部または全体に対して実行できます。
詳細については、STMicroelectronicsのドキュメントを参照してください:
- STM32F7 - Chrom-ART
- RM0410 リファレンスマニュアルの「Chrom-ART アクセラレータコントローラ (DMA2D)」のセクション。
QSPIにおけるモノタイプデータテーブル
「外部フラッシュへのMonotypeデータテーブルの配置」で説明されているように、リファレンスリンカースクリプトは、Monotypeデータテーブルを外部Quad Serial Peripheral Interface (QSPI) フラッシュに配置します。
「Qt Quick 」のUltraliteサーモスタットデモでは、Qul::validateMonotypeDataTableChecksums() が呼び出され、データテーブルの検証が行われます。これらのデータテーブルを内部フラッシュに保持するか外部フラッシュに保持するか、またデータ検証を行うかどうかは、アプリケーション側で決定します。
ハードウェア構成
STM32CubeMX
STM32f769I-DISCOVERY ボードのハードウェア構成は、STM32CubeMXによって生成されたコードと、STM32Cube MCU Package for STM32F7 series リポジトリの周辺機器用BSPドライバで構成されています。
STM32CubeMXによって生成されたコード(システムクロックの設定を除く)はすべて、stm32f769i-discovery-common/3rdparty/Core フォルダ内に格納されています。このフォルダには、以下の設定が含まれています:
- GPIO -
gpio.c - UART -
uart.c - システムタイマー -
stm32f7xx_hal_timebase_tim.c - 割り込みルーチン -
stm32f7xx_it.c
システムクロックの設定
システムクロックの設定は、Qt Quick のUltraliteプラットフォームのソースファイルstm32f769i-discovery-common/platform_clock.cpp に記載されています。SystemClock_Config() 関数はweakとして宣言されているため、カスタムクロック設定によって上書きすることが可能です。
システムティックタイマー
TIM6 タイマインスタンスが、systick のタイマとして使用されます。初期化関数は、STM32CubeMXによって生成されたソースファイルstm32f769i-discovery-common/3rdparty/Core/Src/stm32f7xx_hal_timebase_tim.c にあります。
割り込みハンドラ
割り込みハンドラは、Qt Quick Ultraliteプラットフォームのソースファイルstm32f769i-discovery-common/3rdparty/Core/Src/stm32f7xx_it.c にあります。また、ディスプレイ関連のDSI割り込みコールバックおよびタッチ割り込みピンのコールバックは、Qt Quick Ultraliteプラットフォームのソースファイルstm32f769i-discovery-common/platform_irq.cpp にあります。
クワッド・シリアル・ペリフェラル・インターフェース(QSPI)
QSPIの設定については、STM32Cube MCUパッケージリポジトリのDrivers/BSP/STM32F769I-Discovery/stm32f769i_discovery_qspi.c ファイル内のBSP_QSPI_Init() を参照して周辺機器の設定を確認し、BSP_QSPI_MspInit() を参照してピン配置およびクロック設定を確認してください。
SDRAM
SDRAMの設定は、STM32Cube MCUパッケージリポジトリのファイルDrivers/BSP/STM32F769I-Discovery/stm32f769i_discovery_sdram.c にあります。
タッチパネル
I2C1ハードウェアインスタンスは、タッチコントローラICの通信インターフェースとして使用されます。タッチパネルIC用のI2C設定は、STM32Cube MCUパッケージリポジトリのパス(Drivers/BSP/STM32F769I-Discovery/stm32f769i_discovery.c )にあります。I2Cx_Init() 関数には、I2Cに必要な設定が含まれています。
ディスプレイ
ディスプレイの設定(LTDCおよびDSIインターフェースの設定)は、Qt Quick にあるUltraliteプラットフォームのソースファイルstm32f769i-discovery-common/platform_display.cpp に記載されています。ディスプレイの設定に関する詳細については、initializeLcdPeripherals() 関数を参照してください。
LTDCのクロック設定はsetLcdClockConfiguration() 関数によって指定され、DSIのクロック設定はsetDsiPllConfiguration() 関数によって指定されます。 STM32Cube MCU パッケージリポジトリファイルDrivers/BSP/STM32F769I-Discovery/stm32f769i_discovery_lcd.c にある `BSP_LCD_MspInit() ` 関数には、LTDC、DMA2D、および DSI インターフェース用の汎用入出力 (GPIO) および割り込み・例外 (NVIC) の設定が含まれています。
乱数生成器(RNG)
RNG 周辺機器の初期化については、Qt Quick Ultralite プラットフォームのソースファイルplatform/boards/st/common/platform_rng.cpp に記載されています。
USART
USART1のハードウェアインスタンスは、仮想COMポート経由のログ出力に使用されます。周辺機器の設定については、Qt Quick のUltraliteプラットフォームソースファイル(stm32f769i-discovery-common/3rdparty/Core/Src/uart.c )を参照してください。クロック設定は、Qt Quick のUltraliteプラットフォームソースファイル(stm32f769i-discovery-common/platform_clock.cpp )内のSystemClock_Config() 関数で定義されています。
既知の問題や制限事項
SDRAMの帯域幅が限られているため、ディスプレイコントローラによるフレームバッファのスキャン中にCPUからSDRAMにアクセスすると、LTDC FIFOのアンダーランにより視覚的なアーティファクトが発生する可能性があります。UI要素が多く、負荷の高いアニメーションを含むアプリケーションでは、LTDC FIFO Underrun というエラーが発生し、視覚的なグリッチが生じる場合があります。 UIを簡素化するほか、Qt Quick のUltraliteコアライブラリについて、別のビルドタイプを使用することを検討してください。例えば、MinSizeRel の代わりに、Debug やRelease を使用します。
RLE 解凍
このボードの CPU では、圧縮された画像を SDRAM 内のフレームバッファに直接ブレンドすることはできません。このような画像は、DMA2D を使用して SDRAM 内のフレームバッファにブレンドされる前に、サイズが制限された中間バッファに展開されます。この方法では、非圧縮画像と比較して、RLE 圧縮された画像をブレンドする際に、パフォーマンスに大きなオーバーヘッドが生じます。
platform_stm32.cpp 内の qul_scratch_buffer のサイズを大きくすることで、RAM 使用量が増えるという代償を払う代わりに、パフォーマンスをある程度向上させることができます。
特定の Qt ライセンスの下で利用可能です。
詳細はこちら。