RX63n UARTフロー制御時の接続pinについて

質問失礼致します。

RX63n 176pinマイコンを使用したUARTフロー制御時の接続pinについてご教示下さい。

相手方のデバイスにはTX,RX,CTS,RTSの4本の接続先があるのですが、

RX63nマイコンにはTX,RX,CTS/RTSの3本のpinしかありません。

CTSとRTSが同じpin機能になっているのですが、

この場合はどのように接続すれば良いのでしょうか。

初歩的な質問で大変恐縮ですが、

ご回答の程宜しくお願い申し上げます。

Parents
  • sktytrさん、こんにちは。NoMaYです。

    つい最近広報されたRX660ではCTSとRTSを両方同時に使用出来る新しいUART機能が内蔵されましたが、RX63Nではとにかく片方しか使用出来ないです。ですので、以下の何れかを選択することになります。どれを選択するのが良いかについては、そちらで開発されているシステムの性質に影響される部分が大きいです。(大きいと思うのです。)

    (1) CTSもRTSも諦める(それでもシステムが問題無く動作すれば諦めても問題無いです(禅問答みたいですけれども))
    (2) CTSをUART機能で、RTSに関しては諦める
    (3) RTSをUART機能で、CTSに関しては諦める
    (4) CTSをUART機能で、RTSをGPIO機能にてソフトウェアで自前で実現する
    (5) RTSをUART機能で、CTSをGPIO機能にてソフトウェアで自前で実現する

    [関連リンク]

    すみません、読み直していませんので、上に書いた内容と下での議論はちょっと矛盾しているかも知れませんけれども。

    UARTのCTS・RTSについて
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/4956/uart-cts-rts
     

  • NoMaY様

    ご回答頂き有難う御座いました。内容理解しました。

    取り急ぎCTSはピン機能、RTSは汎用IOで代用しようと思います。

    RTSは送信時にHi、送信完了でLoで実装してみようと思います。

  • sktytr さんこんにちは

    RTS の制御ですが、送信時に制御するのでは無く、受信動作に合わせて制御するものです。

    通常、受信バッファが一杯になりそうになったら、Loにして、受信バッファが空いたらHiに戻すものです。

    ---

    たとえば、受信バッファに256バイト設けたとすると、余裕を持って、240バイトを超えたらRTSをLoにして、相手からの送信を不許可にし、内部処理が進み、受信バッファが0に戻ったら、Hiに戻して受信を許可状態にします。

    ヒステリシスを設ける事で、240バイト付近で、RTS信号がバタつく状態を回避出来ます。

    ※RTSをLoにして不許可にしても、通常、相手側は数バイトは送ってしまう可能性があるので、240としています。

    ※この値は調整が必要なので、厳密には実験して決めます。

    ※受信にバッファを設けるので、受信動作は割り込み動作にする必要があります。

  • hirakuni45様

    ご回答頂き有難う御座います。

    RTSはデLo出力によって相手側の送信を許可し、Hiで送信待機させる認識です。

    例にあげて頂いているケースでは逆の様ですが、どちらが正しいでしょうか。

  • RTS は正論理で記述してあります。

    負論理の nRTS (~RTS) なら、逆になります。

    ※RTSの上にバーがある場合。

  • sktytrさん、こんにちは。NAKAといいます。

    一般的には、RXに接続している機器Aくんが「今忙しいので、データ送ってこないでぇ~」とRTSを”H”⇒”L”にします。RXは”L”になったことを確認すると「わかった!とりあえずデータ送るのやめる」となります。

    逆にRXが「今、忙しいのでAくんデータ送らないでぇ~」とRX側のRTS(Aくん側のCTS)を”H”⇒”L”にするとAくんはデータ送信をやめてくれます。

    割込みを使えば、よっぽどRXくんが忙しすぎて、たかがUARTのデータを受け取れないなんてことは少ないと思うので片方しかないのだと思います。

    Aくんが無線モジュールなんかだと、電波状況によっては「くっ!苦し~、バッファがいっぱいになりそうなので、今は送らないでぇ~」ということはあると思いますが、RXくんが「今だけはやめてぇ~、お願い」というのはどんな場面があるのだろう?よっぽど色んなものが繋がってて、割込みが多重にかかりまくるとか?

    AくんのCTSは”L”に落としておいて、片方だけ繋いでおいても、いいのでは??

Reply
  • sktytrさん、こんにちは。NAKAといいます。

    一般的には、RXに接続している機器Aくんが「今忙しいので、データ送ってこないでぇ~」とRTSを”H”⇒”L”にします。RXは”L”になったことを確認すると「わかった!とりあえずデータ送るのやめる」となります。

    逆にRXが「今、忙しいのでAくんデータ送らないでぇ~」とRX側のRTS(Aくん側のCTS)を”H”⇒”L”にするとAくんはデータ送信をやめてくれます。

    割込みを使えば、よっぽどRXくんが忙しすぎて、たかがUARTのデータを受け取れないなんてことは少ないと思うので片方しかないのだと思います。

    Aくんが無線モジュールなんかだと、電波状況によっては「くっ!苦し~、バッファがいっぱいになりそうなので、今は送らないでぇ~」ということはあると思いますが、RXくんが「今だけはやめてぇ~、お願い」というのはどんな場面があるのだろう?よっぽど色んなものが繋がってて、割込みが多重にかかりまくるとか?

    AくんのCTSは”L”に落としておいて、片方だけ繋いでおいても、いいのでは??

Children
No Data