TouchGFXとLTDC on (stm32h7x & stm32cubeIDE)に関するメモ

TouchGFX Designer +stm32cubeIDEを使ってstm32h743+NHD-3.5-320240MF搭載ボードのプログラムを開発する際の覚書です

TouchGFXの使い方

ある程度日本語に翻訳されたTouchGFXの使い方です。
LTDCだけでなくSPI他のLCDインターフェースを使ったボードに関する内容等、広範囲を対象としているため必要な知識を見つけるのに苦労しますが2021/07時点でもっとも役に立つサイトではないかと思われます。

LTDCの設定とフレームバッファのアドレス

stm32h743でLTDCのフレームバッファとして使えるのはD1領域(0x24000000からの512KB)です

LTDCの設定でFrame Buffer Start Address を RAM_D1領域0x24000000に設定します。

下の設定はなくても構いませんがD1領域に別の変数を置く場合はダミーとして宣言しておけばTouchGFXが使うフレームバッファと干渉を避けることが出来ます。

#define ALIGN_32BYTES_D1(buf)  buf __attribute__ ((section(".RAM_D1"))) __attribute__ ((aligned (32)))

ALIGN_32BYTES_D1(uint16_t framebuffer[320*240]);

なのでフレームバッファを宣言(↑)してからフレームバッファを指定(↓)します

/* USER CODE BEGIN 2 */
// TouchGFX 3.framebuffer in internal RAM
HAL_LTDC_SetAddress(&hltdc, framebuffer, LTDC_LAYER_1);

フレームバッファにプログラムからアクセスするためには絶対アドレスでなく変数宣言した方が都合が良いのですが.iocでは下のように絶対アドレスで指定しなければならないので普通はこの設定アドレスを無視してプログラムの最初でフレームバッファアドレスを再設定すればOKです

TuchGFXの設定

TouchGFXでは初期化関数が.iocの設定を読み出して使うようになっていてここを0x00000000のままにしておくと生成されたmain.cの最初でプログラムがハングアップするため、ここをRAM-D1アドレスの0x24000000にしておかなければなりません。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)