C
STM32H750B Discovery Kit
このトピックでは、STM 社のSTM32H750Bディスカバリーキットに関する必要な情報を提供します。
ボードの特長
- ARM Cortex-M7
- 4.3インチRGBタッチディスプレイ
- 128 Mbit SDRAM
- 1 Mbit NORフラッシュ
- 4 Gbyte オンボード eMMC
対応色深度
このボードのリファレンスポートは、16bppおよび32bpp(デフォルト)の色深度をサポートしています。また、24bppもサポートしていますが、リファレンスポートには実装されていません。詳細については、QUL_COLOR_DEPTHおよび「色深度」を参照してください。
注: あらかじめビルド済みのプラットフォームライブラリは 、デフォルトの 32bpp のみに対応しています。16bpp の色深度を使用する場合は、QUL_COLOR_DEPTHの値を 16 に設定してプラットフォームライブラリを再ビルドする必要があります。ソースからプラットフォームをビルドするには、「評価用パッケージを使用したQt Quick Ultraliteプラットフォームライブラリのビルド」を参照してください。
あらかじめビルド済みのデモおよびサンプル
STM32H750B ボード用のパッケージには、あらかじめビルド済みのサーモデモバイナリが含まれています。これはdemo_images ディレクトリ内にあります。
ブートローダーの書き込み方法については「STボード用ブートローダー書き込み手順」(STM32H750Bには必須)を、アプリケーションバイナリをデバイスに書き込む方法については「STボード用書き込み手順」を参照してください。
デバッグメッセージの読み取り
デフォルトでは、qul_printf およびQul::PlatformInterface::log の呼び出しによる出力は、USB経由でホストマシン上に公開される仮想シリアルポートにリダイレクトされます。
ハードウェアアクセラレーション
リファレンスポートは、ハードウェアアクセラレーションによるグラフィックス処理のために、STMicroelectronics社のChrom-Art Accelerator(DMA2D)を利用しています。
DMA2Dは、画像処理に特化したダイレクトメモリアクセス(DMA)アクセラレータです。以下の操作を実行できます:
- 画像を特定の色で塗りつぶす。
- ソース画像を宛先画像にコピーする。
- ピクセル形式の変換を行いながら、ソース画像を宛先画像にコピーする。
- ピクセル形式が異なる 2 つのソース画像を合成し、ピクセル形式の変換を行って結果を受信画像にコピーする。
記載されているすべての操作は、画像の一部または全体に対して実行できます。
詳細については、STMicroelectronicsのドキュメントを参照してください:
- STM32H7 - Chrom-ART
- RM0433 リファレンスマニュアルの「Chrom-ARTアクセラレータコントローラ(DMA2D)」のセクション。
ハードウェア構成
以下に記載する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 ライセンスの下で利用可能です。
詳細はこちら。