RL78 CSI について

RL78/G13を使用しています。

CSIで別のデバイスと通信したいのですが、シミュレータで出力波形を見るとクロックは出力されるのにデータが出力されません。

CSIを使用する上でアドバイスを頂けないでしょうか。

CSIは、SAU0のCSI11を使用し、シングル転送モード、連続転送モード、どちらでも同じです。

また、関係あるかどうかわからないのですが、SAU0のUART0も有効にしてコード生成しています。

コード生成されたデータは、r_cg_serial_userの割り込み処理の最後にF_SPI_comフラグのクリアを追加しています。

サブルーチンコールは以下のように行っています。

   if ((SSR11 & 0x0040 ) == 0) {
        P14_bit.no0 = 0;
        g_tx_data[0] = 0x31;
        g_tx_data[1] = 0x00;
        data_length = 1;
        F_SPI_com = 1;
        result = R_CSI11_Send_Receive(&g_tx_data[0], data_length, &g_rx_data[0]);
        
        while (1U)
        {
            if ( F_SPI_com == 0 )
                break;
        }

よろしくお願いします。

  • In reply to KDX200:

    チョコです。
    >P5は0x02で、PM5は0xfdです。
    その値はSO11としては問題ないですね。
    そうなると,シリル出力許可レジスタ(SOE0レジスタ)のSOE03ビットが1になっていますか。
    どちらにしても,関係するレジスタの値を全て確認する必要があります。最終的な設定が
    正しければ,どんな順番で設定してもSO11からは何か出せるはずです。
  • In reply to チョコ:

    KDX200です。
    >そうなると,シリル出力許可レジスタ(SOE0レジスタ)のSOE03ビットが1になっていますか。
    適当なところで停止させたときの値ですが、SOE03は1でした。
    それ以外の関連するSFRレジスタは、以下の通りです。
    PER0 0x25
    SPS0 0x0004
    SMR0 0x0020
    SCR0 0x0087
    SDR0 0x0000
    SIR0 0x0000
    SSR0 0x0000
    SS0 0x0000
    ST0 0x0000
    SE0 0x0008
    SOE0 0x0008
    SOL0 0x0000
    SO0 0x0f07
    SSC0 0x0000
    ISC 0x00
    PIM5 0x00
    POM5 0x00
    PMC0 0xff
    PM5 0xfd
    P5 0x02
    特に問題はないと思います。
    今更ですが、CS+はV4.01.00[05 Sep 2016]を使用しています。最新だと思います。
  • In reply to KDX200:

    チョコです。
    SMR0,SCR0,SDR0,SSR0はSMR03,SCR03,SDR03,SSR03の間違いですね。
    気になるのは,SCR03の値が0x0087とあることです。ここは0xC087でないと,
    送信も受信もできません。
    送信したいときに,SCR03のTXE03(ビット15)が1(送信可能状態)になって
    いるかを確認してください。
  • In reply to チョコ:

    KDX200です。
    >SMR0,SCR0,SDR0,SSR0はSMR03,SCR03,SDR03,SSR03の間違いですね。
    すみません。間違いです。

    SCR03を確認してみました。
    結果、0xc007でした。
    これであれば問題ないはずですが、うまくいきません。
    SMR03,SIR03,SSR03も前回と同じ値です。
    SDR03だけが0xce00となっていますが、これは送信するクロック分周比とデータでしょうから
    問題ないと思います。
    新しく作成したプロジェクトではうまくいってますが、もう少し追ってみます。
    よろしくお願いします。