Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

RL78/G13のSPIでEEPROMの読み書き

RL78/G13のSPI(CSI)でEEPROMをお読み書きしたいのですが、接続しているEEPROM(BR93L46F)は

起動時書き込み禁止になっており、書き込み許可をする動作が必要です。

一旦CSIの機能をI/Opポートに変えて、書き込み許可処理をした方がいいのでしょうか?

サンプルプログラムはありますでしょうか?

アセンブラがわからないので、C言語だけで実現したいです。

  • In reply to わか:

    > SPIが動作しないソースを添付します。

    japan.renesasrulz.com/.../33671 でも書いておりますが大丈夫ですか?
  • In reply to わか:

    チョコです。
    どこにも「R_CSI11_Start」関数を呼び出していないようです。
    なぜか,main関数の中で「R_CSI11_Create」関数を呼び出していますが,この関数は既に「R_SAU0_Create」関数で呼び出されているので不要です。もしかすると,ここが「R_CSI11_Start」関数を呼び出すべきところではないですか。
  • In reply to チョコ:

    チョコさんへ
    下記のようにレジスタを確認しました。
    SAU0EN 0x1
    SMR03 0x0020
    SCR03 0xf007
    PM5 0xfd
    P5 0x02
    P3 0x01
    PM3 0xfc
    EEPROM専用プロジェクトと同じ値です。
  • In reply to チョコ:

    チョコさんへ

    R_SAU0_Createの中でR_CSI11_Createが実行されているので、今はmainのR_CSI11_Createはコメントアウトしていますが、SPIのクロックがまだ出ません。
  • In reply to わか:

    チョコです。
    「R_CSI11_Start」関数の呼び出しはどうなっていますか。
  • In reply to チョコ:

    R_SAU0_Createの最後で呼び出しています。
  • In reply to わか:

    チョコです。

    提示されたプロジェクトの中で「R_CSI11_Start」を検索した結果を示します。

    この結果を見ると,この関数を呼び出しているところが見つかりませんでした。

    「R_CSI11_Start」が呼び出されていないと,SE0レジスタのビット3が立っていないはずですので,確認してみてください。

  • In reply to わか:

    「R_CSI11_Start」関数の呼び出しはどうなっていますか。
    R_SAU0_Createの最後で呼び出しています。

    なんか、見てるもんが違う感じですね。

    r_cg_serial.c:

    void R_SAU0_Create(void)
    {
        SAU0EN = 1U;    /* supply SAU0 clock */
        NOP();
        NOP();
        NOP();
        NOP();
        SPS0 = _0000_SAU_CK00_FCLK_0 | _0000_SAU_CK01_FCLK_0;
        R_CSI11_Create();
    }
    
  • In reply to fujita nozomu:

    チョコです。
    >なんか、見てるもんが違う感じですね。
    はい,私もそう思います。
  • In reply to わか:

    チョコです。

    わかさん,誤解されているようなので,直接記述します。

    main関数の中80行目で「R_CSI11_Create」関数を呼び出していますが,ここは,「R_CSI11_Start」関数を呼び出すところではないですか。

    (コメントアウトするのではなく,呼び出す関数を変更するのが正しい変更方法だと思います。)

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page