RZ/T1のRSPIaについて

RZ/T1で4線式のSPIマスター通信を行うために、RSPIaを使おうとしているのですが、MISO端子が思った通りに機能しなくて困っています、

RSPIaの設定でループバック接続を行い、送信データを受信できることを確認できました。

しかし、ループバック接続を解除し、MOSI端子とMISO端子を短絡しても、受信データが0x00のままです。

MISO端子をVCC(3,3V)に接続すると、本来は0xFFが受信できるはずですが、やはり受信データは0x00のままです。

MOSI端子とMISO端子を使用するため、PFCレジスタとPMレジスタがデータシートに記載されている値になっていることをICEで確認し、MOSI端子から送信データが出力することをオシロで確認済みです。

 

アドバイスを宜しくお願い致します。

Parents
  • いくつかの可能性を考えてみました。
    ・ハードがおかしい(MISOがどこかとショートしている。ピンがいかれている等)
    ・勘違い(見ているピンが違う。MPCのPFS, ポートモードレジスタPMRがらみ)
    ・マニュアルが間違っている。
    ---
    対応策として思いついたものをあげると...
    ・具体的な設定を挙げてもらって、第3者の視点から確認してもらう。
    ・GPIOの入力ポートとして正しく動作するか。
    ・RSPIのチャネルを変えてみる。
  • Higetakaさん
    アドバイスありがとうございます。

    RSPIaはチャンネル0を使用していますが、チェンネル1に変更しても現象は同じでしたので、”ハードがおかしい”の可能性は低そうです。

    また、RSPIaと端子の設定は初期化コードはAP4でコード出力したものを流用しているので、”勘違い”の可能性は低い(と思いたい)です。

    チャンネル0使用時の端子を設定するコードは、下記のとおりです。

    /* Set RSPCK0 pin */
    MPC.P77PFS.BYTE |= 0x0DU;
    PORT7.PMR.BYTE |= 0x80U;

    /* Set MOSI0 pin */
    MPC.PA0PFS.BYTE |= 0x0DU;
    PORTA.PMR.BYTE |= 0x01U;

    /* Set MISO0 pin */
    MPC.PA1PFS.BYTE |= 0x0DU;
    PORTA.PMR.BYTE |= 0x02U;

    /* Set SSL00 pin */
    MPC.P75PFS.BYTE |= 0x0DU;
    PORT7.PMR.BYTE |= 0x20U;


    まずは、GPIOとして動作するか、基本的なことから確認してみます。
Reply
  • Higetakaさん
    アドバイスありがとうございます。

    RSPIaはチャンネル0を使用していますが、チェンネル1に変更しても現象は同じでしたので、”ハードがおかしい”の可能性は低そうです。

    また、RSPIaと端子の設定は初期化コードはAP4でコード出力したものを流用しているので、”勘違い”の可能性は低い(と思いたい)です。

    チャンネル0使用時の端子を設定するコードは、下記のとおりです。

    /* Set RSPCK0 pin */
    MPC.P77PFS.BYTE |= 0x0DU;
    PORT7.PMR.BYTE |= 0x80U;

    /* Set MOSI0 pin */
    MPC.PA0PFS.BYTE |= 0x0DU;
    PORTA.PMR.BYTE |= 0x01U;

    /* Set MISO0 pin */
    MPC.PA1PFS.BYTE |= 0x0DU;
    PORTA.PMR.BYTE |= 0x02U;

    /* Set SSL00 pin */
    MPC.P75PFS.BYTE |= 0x0DU;
    PORT7.PMR.BYTE |= 0x20U;


    まずは、GPIOとして動作するか、基本的なことから確認してみます。
Children
  • PDRを入力に設定すると、ポート入力と周辺機能の入力が併用できるようなので、それで確認すれば信号が内部に入り込んでいるところまでは確認できそうですね。
  • Higetakaさんのアドバイスで解決できたので、報告します。

    どうもチャンネル0のMISO端子が死んでいることが原因のようです。

    前の私の返信で、チェンネル0からチェンネル1に変更しても現象が同じと報告しましたが、これはチェンネル1の端子の設定のミスで、同じ現象に見えただけでした。

    チャンネル1の端子を正しく設定し、ループバック接続を解除した状態でMISO1とMOSI1を短絡すると、送信データを受信することができました。

    やはり基本から確認していくのが大事ですね。