SH7286のSSU(SPI)にお詳しい方、教えて下さい。

SH7286はよく使いましたが、SSU機能を使うことになり、この機能を使うのは今回が初めてです。
送信は希望通りに信号パルス(SSCK,SSO)が出ます。
受信は、マニュアルによれば、「SSER の RE を 1 にセットし、SSRDR をダミーリードすることにより受信動作を開始します。」と書かれています。
そこで、先ず送信にして読み出しアドレスを書き込み、受信に切り替え(RE=1)、ダミーリードしてもSSCKパルスが出ません。
色々と条件を変えて、何度も試していますが、まだ一度もSSCKパルスが出ません。
マスタモードですので、相手方もSSCKに同期して、信号を送ってくると思いますが、どうしたらSSCKパルスが出せるのでしょうか?
通信モードはSCSが他の端子とかち合うので、クロック同期式を使い、別のIOポートからSCSを操作しています。
よろしくお願いいたします。

  • orientalさん

    こんにちは、

    上手く行って良かったですね。

    SSU.SSER.BYTE = 0のあとに10マイクロ秒くらい立ってから受信とありますが、

    これは、プログラムが実行されてから実際のSSERレジスタがクリアされるまでのタイムラグと思います。

    SSERをクリアしてから、SSERをダミーリードしてみて下さい。

    ダミーリードすることで確実にSSERがクリアされてから次のプログラムが実行されるはずです。

    その後で受信開始とするとクロックが出力されると思います。

    よろしければ試してみて下さい。

  • SAさん、ご親切にありがとうございます。

    装置を外してあったので、また準備して試しました。

    SSERのダミーリードでは、当方の装置ではクロックが出ませんでした。

    //下記だとクロックが出ます

    SSU.SSER.BYTE = 0; //一度SSERのTE、REを0にクリアすることが必要!

    delay(10); //これを入れないとクロックが出ない。

    SSU.SSER.BYTE = 0x40; //送受信動作が可能

    //下記だとクロックが出ません

    SSU.SSER.BYTE = 0; //一度SSERのTE、REを0にクリアすることが必要!

    char dummy = SSU.SSER.BYTE;

    SSU.SSER.BYTE = 0x40; //送受信動作が可能

    //ソフトウェアリセットをするとクロックが出ます

    //ソフトウェアリセット

    //本ビットを 1 にセットすると SSU 内部シーケンサを強制的にリセットします。

    //本ビットは自動的にクリアされ、SSSR の ORER、TEND、TDRE、RDRF、CE の各ビット

    //および、SSER の TE、RE ビットが初期化されます。

    //その他の SSU 内部レジスタ値は保持されます。

    SSU.SSCRL.BIT.SRES = 1; //1:ソフトウェアリセット

    SSU.SSER.BYTE = 0x40; //送受信動作が可能

    色々と教えて下さり、大変にありがとうございました。