このページでは

C

STM32H750B ディスカバリーキット

このトピックでは、STM 社のSTM32H750Bディスカバリーキットに関する必要な情報を提供します。

ボードの特長

  1. ARM Cortex-M7
  2. 4.3インチRGBタッチディスプレイ
  3. 128 Mbit SDRAM
  4. 1 Mbit NORフラッシュ
  5. 4 Gbyte オンボード eMMC

対応カラー深度

このボードのリファレンスポートは、16bpp および 32bpp(デフォルト)の色深度をサポートしています。また、24bpp もサポートしていますが、リファレンスポートには実装されていません。詳細については、QUL_COLOR_DEPTHおよび「色深度」を参照してください。

注: あらかじめビルド済みのプラットフォームライブラリは 、デフォルトの 32bpp のみに対応しています。16bpp の色深度を使用する場合は、QUL_COLOR_DEPTHの値を 16 に設定してプラットフォームライブラリを再ビルドする必要があります。ソースからプラットフォームをビルドするには、「評価パッケージを使用したQt Quick Ultraliteプラットフォームライブラリのビルド」を参照してください。

あらかじめビルド済みのデモおよびサンプル

STM32H750B ボード用のパッケージには、あらかじめビルド済みのthermoデモバイナリが含まれています。これはdemo_images ディレクトリ内にあります。

ブートローダの書き込み方法については「STボード用ブートローダ書き込み手順」(STM32H750Bには必須)を、アプリケーションバイナリをデバイスに書き込む方法については「STボード用書き込み手順」を参照してください。

デバッグメッセージの読み取り

デフォルトでは、qul_printf およびQul::PlatformInterface::log の呼び出しによる出力は、USB経由でホストマシン上に公開される仮想シリアルポートにリダイレクトされます。

ハードウェアアクセラレーション

リファレンスポートは、ハードウェアアクセラレーションによるグラフィックス処理に、STMicroelectronics社のChrom-Art Accelerator(DMA2D)を利用しています。

DMA2Dは、画像処理専用のダイレクトメモリアクセス(DMA)アクセラレータです。以下の操作を実行できます:

  • 画像を特定の色で塗りつぶす。
  • ソース画像を宛先画像にコピーする。
  • ピクセル形式を変換しながら、ソース画像を宛先画像にコピーする。
  • ピクセル形式が異なる2つのソース画像を合成し、その結果をピクセル形式の変換を行って宛先画像にコピーする。

記載されているすべての操作は、画像の一部または全体に対して実行できます。

詳細については、STMicroelectronicsのドキュメントを参照してください:

ハードウェア構成

以下に記載するSTM32H750XB MCU固有の周辺機器に関する詳細については、STMicroelectronicsのドキュメントを参照してください:

注: 以下のセクションにおいて 、「低層(LL)」および「ハードウェア抽象化層(HAL)」は、いずれもSTM32Cubeの抽象化層を指します。

STM32CubeMX

STM32H750B-DK ボードのハードウェア構成は、STM32CubeMXによって生成されたコードと、STM32Cube MCU Package for STM32H7 series リポジトリにある周辺機器用BSPドライバで構成されています。

STM32CubeMXによって生成されたコード(システムクロックの設定を除く)はすべて、stm32h750b-discovery-baremetal/3rdparty/Core フォルダ内に格納されています。

このフォルダには、以下の設定が含まれています:

  • ブートローダー、MPU、QSPI、SDRAM -main.c
  • GPIOおよびクロック -stm32h7xx_hal_msp.c
  • 割り込みルーチン -stm32h7xx_it.c
  • USART -usart.c

システムクロックの設定

システムクロックの設定は、Qt Quick のUltraliteプラットフォームのソースファイルstm32h750b-discovery-baremetal/platform_clock.cpp に記載されています。SystemClock_Config() 関数はweakとして宣言されているため、カスタムクロック設定によってオーバーライドすることができます。

システムティックタイマー

ARM Cortex-M SysTick タイマーは、STM32Cube MCU パッケージリポジトリファイルDrivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c 内のHAL_InitTick() 関数によって、タイムベースソースとして設定されています。

低層(LL)の `SysTick_Handler() ` 関数は、Qt Quick Ultralite プラットフォームのソースファイル `stm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_it.c` にあります。

割り込みハンドラ

低層(LL)プロセッサ例外および周辺機器割り込みハンドラは、stm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_it.c にあります。

LCD-TFT ディスプレイコントローラ(LTDC)の割り込みコールバックおよびタッチ割り込みピンのコールバック用のハードウェア抽象化層(HAL)割り込みハンドラは、Qt Quick の Ultralite プラットフォームソースファイルstm32h750b-discovery-baremetal/platform_irq.cpp にあります。

Chrom-ARTアクセラレータ(DMA2D)

DMA2D の設定は、Qt Quick Ultralite プラットフォームのソースファイルplatform/boards/st/common/platform_drawing.cpp にあります。

DMA2D用のネスト型ベクタ割り込みコントローラ(NVIC)およびクロック設定は、Qt Quick Ultraliteプラットフォームのソースファイルstm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_hal_msp.c にあります。

表示

LCD-TFTディスプレイコントローラ(LTDC)の設定は、Qt Quick Ultraliteプラットフォームのソースファイルstm32h750b-discovery-baremetal/platform_display.cpp にあります。

setLcdClockConfiguration() 関数を使用することで、LTDCのクロック設定を行うことができます。

LTDCのクロック有効化およびGPIOの設定は、Qt Quick Ultraliteプラットフォームのソースファイルstm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_hal_msp.c にあります。

クワッド・シリアル・ペリフェラル・インターフェース(QSPI)

QSPIの設定については、周辺機器の設定についてはBSP_QSPI_Init() を、ピン配置およびクロック設定についてはDrivers/BSP/STM32H750B-DK/stm32h750b_discovery_qspi.c ファイル内のQSPI_MspInit() を参照してください。

QSPIは、Qt Quick のUltraliteプラットフォームソースファイルstm32h750b-discovery-baremetal/3rdparty/Core/Src/main.c において、メモリマップモードに設定されています。

乱数生成器(RNG)

乱数生成器(RNG)の初期化については、Qt Quick Ultraliteプラットフォームのソースファイルplatform/boards/st/common/platform_rng.cpp を参照してください。

RNGハードウェアインスタンスのクロック設定は、3rdparty/Core/Src/stm32h7xx_hal_msp.c にあります。

SDRAM

SDRAMのBSP設定は、STM32Cube MCUパッケージリポジトリファイルDrivers/BSP/STM32H750B-DK/stm32h750b_discovery_sdram.c 内にあります。

SDRAMのMPU設定は、Qt Quick のUltraliteプラットフォームソースファイルstm32h750b-discovery-baremetal/3rdparty/Core/Src/main.c 内にあります。

タッチパネル

タッチパネルの設定は、STM32Cube MCUパッケージリポジトリファイルDrivers/BSP/STM32H750B-DK/stm32h750b_discovery_ts.c にあります。

タッチパネル用ドライバICはI2C4ハードウェアインスタンスに接続されており、タッチ割り込み信号はGPIOGピン2に接続されています。

I2C4の設定は、MX_I2C4_Init() という関数内にあり、この関数はSTM32Cube MCUパッケージリポジトリファイルDrivers/BSP/STM32H750B-DK/stm32h750b_discovery_bus.c 内にあります。

USART

USART3のハードウェアインスタンスは、仮想COMポート経由のログ出力に使用されます。USART3の設定は、Qt Quick Ultraliteプラットフォームのソースファイルstm32h750b-discovery-baremetal/3rdparty/Core/Src/usart.c にあります。

USART3 の GPIO およびクロックの設定は、Qt Quick Ultralite プラットフォームのソースファイルstm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_hal_msp.c にあります。

既知の問題や制限事項

  • SDRAMの帯域幅が限られているため、ディスプレイコントローラがフレームバッファをスキャンしている最中にCPUからSDRAMにアクセスすると、LTDC FIFOのアンダーランにより表示上の不具合が発生する可能性があります。UI要素が多く、負荷の高いアニメーションを含むアプリケーションでは、LTDC FIFO Underrun エラーが発生し、表示の乱れを引き起こすことがあります。 UIを簡素化するほか、Qt Quick のUltraliteコアライブラリについて、別のビルドタイプを使用することを検討してください。例えば、MinSizeRel の代わりに、Debug またはRelease を使用します。視覚的なアーティファクトの発生を防ぐため、CPUを使用してブレンドする必要がある回転画像や透視変換された画像の使用をできるだけ減らすようにしてください。
  • サポートされているのはSDKバージョン1.12.1のみです。

RLE 解凍

このボードの CPU では、圧縮された画像を SDRAM 内のフレームバッファに直接ブレンドすることはできません。このような画像は、DMA2D を使用して SDRAM 内のフレームバッファにブレンドされる前に、サイズが制限された中間バッファに展開されます。この方式では、非圧縮画像と比較して、RLE 圧縮された画像をブレンドする際に、パフォーマンスに大きなオーバーヘッドが生じます。

platform_stm32.cpp 内の qul_scratch_buffer のサイズを大きくすることで、パフォーマンスをある程度向上させることができますが、その代償として RAM の使用量が増加します。

特定の Qt ライセンスの下で利用可能です。
詳細はこちら。