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; //送受信動作が可能
//下記だとクロックが出ません
char dummy = SSU.SSER.BYTE;
//ソフトウェアリセットをするとクロックが出ます
//ソフトウェアリセット
//本ビットを 1 にセットすると SSU 内部シーケンサを強制的にリセットします。
//本ビットは自動的にクリアされ、SSSR の ORER、TEND、TDRE、RDRF、CE の各ビット
//および、SSER の TE、RE ビットが初期化されます。
//その他の SSU 内部レジスタ値は保持されます。
SSU.SSCRL.BIT.SRES = 1; //1:ソフトウェアリセット
色々と教えて下さり、大変にありがとうございました。