GLCDCでLCD_DATAが出力されません

はじめまして、TAKAと申します。RX651のGLCDCで京セラのQVGAの液晶を表示しようとしています。先ずはグラフィック画面2のみ表示できればいいと思っていて、バックグラウンド画面もグラフィック2画面も320x240のサイズで矩形アルファブレンドの使用は考えていません。液晶制御に必要なクロック、水平同期、垂直同期、データイネーブルはシンクロで出力を確認できるのですが、LCD_DATA0~LCD_DATA15が出力されません。グラフィック2画面の表示画面制御を背景色を表示にしていてもLCD_DATAが出力される様子はありません。ピンファンクションをI/Oに戻すと出力できるので配線間違いではありません。恐らく設定がどこか悪いと思いますが、それがどこかがわかりません。どなたか教えていただけないでしょうか?コンパイラはCS+です。

    // LCD TCG057QVLCE-G00
    MSTP_GLCDC                    = 0;
    GLCDC.BGEN.BIT.SWRST        = 1;            // ソフトウェアリセット解除
    GLCDC.OUTSET.BIT.FORMAT        = 2;            // 出力データフォーマット選択 RGB(565)
    GLCDC.OUTSET.BIT.FRQSEL        = 0;            // ピクセルクロック分周 分周なし(パラレルRGB)
    GLCDC.OUTSET.BIT.SWAPON        = 0;            // ピクセル順序 R-G-B順
    GLCDC.PANELCLK.BIT.CLKSEL    = 0;            // LCD_EXTCLK (外部クロック)
    GLCDC.PANELCLK.BIT.DCDR        = 1;            // 分周無し
    GLCDC.PANELCLK.BIT.CLKEN    = 1;            // LCD_CLKの出力を許可
    GLCDC.OUTSET.BIT.ENDIANON    = 0;            // リトルエンディアン
    while( !GLCDC.BGMON.BIT.SWRST );
    
    GLCDC.BGPERI.BIT.FV            = 256;            // 垂直同期信号周期設定 256line
    GLCDC.BGPERI.BIT.FH            = 384;            // 水平同期信号周期設定 384pixel
    GLCDC.BGSYNC.BIT.VP            = 1;            // 垂直同期信号アサート位置 1line
    GLCDC.BGSYNC.BIT.HP            = 1;            // 水平同期信号アサート位置 1pixel
    GLCDC.BGVSIZE.BIT.VP        = 7;            // 垂直有効表示開始位置設定 7line
    GLCDC.BGVSIZE.BIT.VW        = 240;            // 垂直有効表示幅設定 240line
    GLCDC.BGHSIZE.BIT.HP        = 62;            // 水平有効表示開始位置設定 62pixel
    GLCDC.BGHSIZE.BIT.HW        = 320;            // 水平有効表示幅設定 320pixel
    GLCDC.BGCOLOR.LONG            = 0xffffff;        // 背景色 白
    
    GLCDC.GR2FLMRD.BIT.RENB        = 1;            // フレームバッファの読み出し許可
    GLCDC.GR2FLM2                = 0x00800000;    // フレームバッファの先頭アドレス
    GLCDC.GR2FLM3.BIT.LNOFF        = 384;            // マクロラインオフセット設定 384=0x180 下位6bitは0のこと
    GLCDC.GR2FLM5.BIT.LNNUM        = 239;            // 1フレームライン数設定 240line-1line
    GLCDC.GR2FLM5.BIT.DATANUM    = 9;            // 1ラインデータ転送回数設定 320*2/64-1=9
    GLCDC.GR2FLM6.BIT.FORMAT    = 0;            // フレームバッファカラーフォーマット設定 RGB(565)(16bpp)
//    GLCDC.GR2AB1.BIT.DISPSEL    = 2;            // カレント画面を表示
    GLCDC.GR2AB1.BIT.DISPSEL    = 0;            // 背景色を表示
    GLCDC.GR2AB2.BIT.GRCVS        = 7;            // グラフィック領域垂直開始位置設定 7line
    GLCDC.GR2AB2.BIT.GRCVW        = 240;            // グラフィック領域垂直幅設定 240line
    GLCDC.GR2AB3.BIT.GRCHS        = 62;            // グラフィック領域水平開始位置設定 62pixel
    GLCDC.GR2AB3.BIT.GRCHW        = 320;            // グラフィック領域水平幅設定ビット 320pixel
    GLCDC.GR2BASE.LONG            = 0xffffff;        // 白
    
    GLCDC.PANELDTHA.BIT.PD        = 1;
    GLCDC.PANELDTHA.BIT.PC        = 2;
    GLCDC.PANELDTHA.BIT.PB        = 0;
    GLCDC.PANELDTHA.BIT.PA        = 3;
    GLCDC.PANELDTHA.BIT.SEL        = 0;            // 切り捨て
    GLCDC.PANELDTHA.BIT.FORM    = 2;            // RGB(565)
    // STVAは垂直同期信号
    GLCDC.TCONSTVA1.BIT.VS        = 0;            // 遅延無し
    GLCDC.TCONSTVA1.BIT.VW        = 4;            // 4line
    GLCDC.TCONSTVA2.BIT.INV        = 1;            // STVA極性反転
    // STVBは垂直DE
    GLCDC.TCONSTVB1.BIT.VS        = 7;            // VSからの遅延line数
    GLCDC.TCONSTVB1.BIT.VW        = 240;            // 240line
    // STHAは水平同期信号
    GLCDC.TCONSTHA1.BIT.HS        = 18;            // HSからの遅延pixel数
    GLCDC.TCONSTHA1.BIT.HW        = 20;
    GLCDC.TCONSTHA2.BIT.INV        = 1;            // STHA極性反転
    // STHBは水平DE
    GLCDC.TCONSTHB1.BIT.HS        = 62;            // HSからの遅延pixel数
    GLCDC.TCONSTHB1.BIT.HW        = 320;
    // TCON0=HS
    GLCDC.TCONSTVA2.BIT.SEL        = 2;            // STHA
    // TCON1=VS
    GLCDC.TCONSTVB2.BIT.SEL        = 0;            // STVA
    // TCON2=DE
    GLCDC.TCONSTHA2.BIT.SEL        = 7;            // LCD_TCON2 = DE
    // LCD_TCON3
    GLCDC.TCONSTHB2.BIT.SEL        = 0;            // STVA 垂直同期信号
    GLCDC.TCONSTHB2.BIT.INV        = 1;            // 極性反転
    
    GLCDC.DTCTEN.BIT.VPOSDTC    = 1;            // 指定ライン通知の検出を許可
    
    GLCDC.GR2VEN.BIT.VEN        = 1;            // VEN セット GRnFLM2 GRnFLM3 GRnFLM5 GRnFLM6 GRnAB1~GRnAB9 GRnBASE GRnCLUTINT
    while( GLCDC.GR2VEN.BIT.VEN );
    
    GLCDC.OUTVEN.BIT.VEN        = 1;            // VEN セット BRIGHT1 BRIGHT2 CONTRAST PANELDTHA CLKPHASE
    while( GLCDC.OUTVEN.BIT.VEN );
    
    GLCDC.BGEN.LONG                = 0x10101;        // EN VEN セット
    while( GLCDC.BGEN.BIT.VEN );
    
    while( !GLCDC.STMON.BIT.VPOS );
    GLCDC.STCLR.LONG            = 7;            // フラグクリア
    
    GLCDC.DTCTEN.BIT.VPOSDTC    = 0;            // 指定ライン通知の検出を禁止

ここまでが書いたGKCDC関連のhwsetupです。よろしくお願いします。

  • ルネサスが提供しているライブラリ「r_glcdc_rx」を使わないで、直接ハードを叩く理由は何でしょうか?
    ※r_glcdc_rx の具体的用法は、RX65N Envision Kit のサンプルが理解に役立ちます。
  • hirakuni45様、返信ありがとうございます。
    直接ハードを叩いた理由は、現在RX621+EPSONのグラフィックコントローラで動いている自作の基板をRX651に置き換えようとしていて、移植がしやすそうに思えたからです。RX621はHEWでコンパイルしています。
    あとハードウェアマニュアルを読んでてそれほど難しいようには思わなかったので、r_glcdc_rxはかえってややこしく感じました。もう一度そちらも検討してみます。