RL78G13のCSI通信(SPI)における端子割り当てについて

いつもお世話になっております。

現在、CSI機能を用いてSPI通信で外部デバイスとの通信を試みています。

外部デバイスのデータ入出力端子がSIOとなっており、送信と受信が一つになっているのですが、

CSIの自動生成ではSCK,SI,SOとなり、SIとSOが分かれてしまいます。

このような場合、SIとSOは短絡して使用することができるのでしょうか?

また、もし問題があればその解決方法をご教示いただけますと幸いです。

R5F100LE(RL78G13)を使用しており、SPI通信のためのサンプルプログラム等あれば教えていただきたいです。

  • チョコです。

    外部デバイスの仕様が分からないと、対応方法を決めることはできません。

    >CSIの自動生成ではSCK,SI,SOとなり、SIとSOが分かれてしまいます。

    それは、RL78のCSIがそのようになっているからです。

    >このような場合、SIとSOは短絡して使用することができるのでしょうか?

    考え方としては,RL78/G13のSIとSOを接続することになりますが、問題はSO信号の出力バッファの制御タイミングです。これがうまくいかないとデータがショートしてしまいます。

    もし、SIO信号線がNchオープン・ドレイン出力でドライブするようになっていれば、RL78側のSO端子をPOMレジスタでNchオープン・ドレイン出力に設定して対応はできる可能性があります。ただし、SO01、SO11、SO21にはこの機能がないので使えません。

    >SPI通信のためのサンプルプログラム等あれば教えていただきたいです。

    通常のCSI(SPI)ではないのでサンプルプログラムは無いと思われます。

     

  • チョコ様

    ご回答いただきありがとうございます。

    外部デバイスの仕様が明かせず申し訳ございません。

    何点かお伺いしたいのですが、

    SO信号の出力バッファのタイミングというのは、SO信号がSI信号と重ならないように制御すればよいということでしょうか

    また、なぜNchオープン・ドレイン出力であれば対応できる可能性があるのでしょうか?

    恐れ入りますが、よろしくお願いいたします。

  • チョコです。

    >SO信号の出力バッファのタイミングというのは、SO信号がSI信号と重ならないように制御すればよいということでしょうか

    そのようなものです。外部デバイスがSIOに出力するタイミングとRL78/G13が出力するタイミングがぶつからないようにする必要があります。そのため、RL78/G13側でSO端子を出力ではなく、Hi-Z(入力)モードにするためです。

    このような半二重通信ではタイミングの把握が重要です。

    >なぜNchオープン・ドレイン出力であれば対応できる可能性があるのでしょうか?

    この場合、出力バッファの下側のN-chのトランジスタしかドライブしないことになります。つまり、互いにローしかドライブできないからです(ハイは信号を抵抗でプルアップしておきます)。このため、ハイとローがぶつかることがないようにできるからです。

    そのためには、RL78/G13側は受信時にはハイを出力するようにしておきます(データとして0xFFを送信するようにします)。そうしないと正しいデータが受信できません。

    以上

  • チョコ様

    非常にわかりやすいご説明ありがとうございます。

    上記の通り、ポートを制御したところうまくいけそうです。

    ご丁寧に対応していただき、ありがとうございました。