C
STM32F769Iディスカバリー・キット
このトピックでは、STM の STM32F769I Discovery Kit について必要な情報を提供します。
ボードの特徴
- STM32F769NIH6 MCU(ARM Cortex-M7)
- 4インチ静電容量式タッチLCDディスプレイ(800x480)
- 512+16+4KバイトのRAM
- 128-Mbit SDRAM
- 2MBフラッシュメモリ
- 512-Mbit Quad-SPI NORフラッシュ・メモリ
詳細はSTM32F769Iディスカバリーウェブサイトをご覧ください。
サポートされる色深度
このボードのリファレンス・ポートは32bppの色深度をサポートしています。このボードは16bppと24bppもサポートしていますが、リファレンス・ポートには実装されていません。詳細については、QUL_COLOR_DEPTHおよび色深度を参照してください。
フレームバッファの一部サポート
このボードは、パーシャルフレームバッファ戦略をサポートしています。これを有効にするには、QUL_PLATFORM_PARTIAL_FRAMEBUFFER を設定し、Platform ライブラリを再構築します。
パーシャル・フレームバッファを使用すると、アプリケーションに必要なメモリを大幅に削減できますが、複雑なアプリケーションではパフォーマンスが低下し、ビジュアル・ティアリングが発生する可能性があります。
ビルド済みデモとサンプル
STM32f769I-DISCOVERY ボード用パッケージには、組み込み済みのサーモデモ・バイナリが付属しています。Qt Quick Ultraliteはこのボード上でベアメタルとFreeRTOS の両方をサポートしているため、demos_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ハードウェア・アクセラレーション
リファレンス・ポートは、ハードウェア・アクセラレーション・グラフィックス用にSTマイクロエレクトロニクスのChrom-Artアクセラレーター(DMA2D)を利用しています。
DMA2Dは、画像操作専用のダイレクト・メモリ・アクセス(DMA)アクセラレータです。以下の操作が可能です:
- 画像を特定の色で塗りつぶす。
- ソース画像をデスティネーション画像にコピーする。
- コピー元画像を、ピクセル・フォーマットを変換したコピー先画像にコピーする。
- 異なるピクセル形式を持つ2つの完全なソース画像をブレンドし、その結果をピクセル形式変換付きで宛先画像にコピーします。
列挙した操作はすべて、画像の一部分または全体に対して実行できます。
詳細については、STマイクロエレクトロニクスのドキュメントを参照してください:
- STM32F7 - Chrom-ART
- RM0410 リファレンスマニュアルセクション Chrom-Art アクセラレータコントローラ (DMA2D)。
QSPIのMonotypeデータテーブル
リファレンス・リンカのスクリプトは、Monotype データ・テーブルを外部フラッシュに配置する で説明したように、Monotype データ・テーブルを外部 QSPI(Quad Serial Peripheral Interface)フラッシュに配置します。
Qt Quick Ultralite Thermostat Demoでは、データテーブルを検証するためにQul::validateMonotypeDataTableChecksums ()が呼び出されます。これらのデータ・テーブルを内部フラッシュと外部フラッシュのどちらに保持するか、またデータ検証を実行するかどうかは、アプリケーション次第です。
ハードウェア構成
STM32CubeMX
STM32f769I-DISCOVERY ボードのハードウェア構成は、STM32Cube MCU Package for STM32F7 series リポジトリからSTM32CubeMX生成コードと周辺機器 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() 関数はカスタムクロック構成でオーバーライドできるように弱く宣言されている。
システム・ティック・タイマー
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)
Qt Quick Ultraliteプラットフォームのソースファイルplatform/boards/st/common/platform_rng.cpp にRNGペリフェラルの初期化があります。
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 Underrunにより、フレームバッファがディスプレイコントローラによってスキャンされている間に視覚的な不具合が発生する可能性があります。LTDC FIFO Underrun UI要素が多く、アニメーションが多いアプリケーションでは、視覚的な不具合を引き起こすエラーが発生する可能性があります。UIを簡素化する以外に、Qt Quick Ultraliteコア・ライブラリに別のビルド・タイプを使用することを検討してください。例えば、MinSizeRel の代わりにDebug やRelease を使用してください。
RLE解凍
このボードのCPUは、圧縮画像をSDRAMのフレームバッファに直接ブレンドすることができません。そのような画像は、限られたサイズの中間バッファに解凍されてから、DMA2Dを使用してSDRAMのフレームバッファにブレンドされます。この方法では、非圧縮画像と比較して、RLE圧縮画像をブレンドするためのパフォーマンス・オーバーヘッドが大きくなります。
platform_stm32.cppのqul_scratch_bufferのサイズを大きくすることである程度性能を改善できますが、その代償としてRAMの使用量が増えます。