emWinとAppWizardを使用した状態でグラフィックレイヤ1をブレンド表示する方法について

お世話になります。togashiと申します。

emWin FTIを使用したLCD表示を行っています。目的はemWin FIT+AppWizardでグラフィックレイヤ2を作成し、とある矩形領域にグラフィックレイヤ1のデータを表示することです。(添付画像1参照)

画面切り替え後時のイベント割り込みでブレンド表示に関するパラメータを修正し、R_GLCDC_LayerChange()を実行するとGLCDC_SUCCESSが返ってきますが、LCD上でブレンド表示が行えず投稿いたしました。(GLCDCのみを実装した際にR_GLCDC_LayerChangeを使用し、ブレンド表示やパラメータの更新を行うことは確認済みです。)

AppWizard使用時にレジスタの更新等では何か別の方法もしくは手順があるのでしょうか。

開発環境は下記になります。

  • 統合開発環境:e2studio, 2022-04 (22.4.0)
  • スマートコンフィグレータ:2.13.0
  • 使用ボード:RX72N envition Kit
  • コンパイラ:GCC for Renesas RX 8.3.0.202202、GCC for Renesas RX 4.8.4.201803
  • OS:未使用
  • r_emwin_rx:6.14.g.130
  • r_glcdc_rx :1.50
  • r_drw2d_rx:1.11

設定した内容としては、

SmartConfigurator上でr_glcdc_rxに関する設定(添付画像2を参照)

Qe for Displayにて”GUI描画ツールの選択→emWinを使用する”とするとグラフィックレイヤ1の設定が無効となるため、ファイル出力後にr_lcd_timing.hのGLCDC_CH0_INGR1_関連を修正(添付画像3を参照)。

説明に不足な点等ありましたら、教えていただけると幸いです。よろしくお願いいたします。

<添付画像1:作成イメージ(ボタンでスクリーン切り替え後、ブレンド表示を行う)>

<添付画像2:r_glcdc_rx設定画面>

<ボタンによるスクリーン切り替えイベント発生時の処理(aw>Source>CustomCode>ID_ScreeN_01_Slots.c)>

##include "Application.h"

/*省略*/

* ID_SCREEN_01__ID_BUTTON_01__WM_NOTIFICATION_RELEASED
*/
void ID_SCREEN_01__ID_BUTTON_01__WM_NOTIFICATION_RELEASED(APPW_ACTION_ITEM * pAction, WM_HWIN hScreen, WM_MESSAGE * pMsg, int * pResult) {
GUI_USE_PARA(pAction);
GUI_USE_PARA(hScreen);
GUI_USE_PARA(pMsg);
GUI_USE_PARA(pResult);

layer1_change();
}

<ボタンによるスクリーン切り替えイベント発生時の処理(aw>Source>CustomCode>Appliation.c)>

##include "Application.h"
#include "r_glcdc_rx_if.h"
#include "GUI.h"

extern glcdc_cfg_t glcdc_cfg;
extern glcdc_runtime_cfg_t s_runtime_cfg;

#void layer1_change(void){

glcdc_runtime_cfg_t gr2_runtime,gr1_runtime;
glcdc_err_t ret;
char result;

gr2_runtime.input = glcdc_cfg.input[GLCDC_FRAME_LAYER_2];
gr2_runtime.blend = glcdc_cfg.blend[GLCDC_FRAME_LAYER_2];
gr2_runtime.chromakey = glcdc_cfg.chromakey[GLCDC_FRAME_LAYER_2];

gr1_runtime.input = glcdc_cfg.input[GLCDC_FRAME_LAYER_1];
gr1_runtime.blend = glcdc_cfg.blend[GLCDC_FRAME_LAYER_1];
gr1_runtime.chromakey = glcdc_cfg.chromakey[GLCDC_FRAME_LAYER_1];

gr2_runtime.blend.visible = true;
gr2_runtime.blend.blend_control = GLCDC_BLEND_CONTROL_FIXED;
gr2_runtime.blend.fixed_blend_value = 0;

ret = R_GLCDC_LayerChange(GLCDC_FRAME_LAYER_2, &gr2_runtime);

gr1_runtime.blend.visible = true;
gr1_runtime.blend.blend_control = GLCDC_BLEND_CONTROL_FIXED;
gr1_runtime.blend.fixed_blend_value = 255;
ret = R_GLCDC_LayerChange(GLCDC_FRAME_LAYER_1, &gr1_runtime);

}
}