シリアル通信について

現在rx65nを使用してadコンバータとi2c通信を行いデータの受信を行うことができました。

そのデータをシリアル通信でpcのcsvに出力するためスマートコンフィグレータを使用しようと思っているのですが

R__Serial_Send

で送ったデータは接続しているpcに送られるということでしょうか?

またその確認方法はpc側のプログラミングが別で必要なのでしょうか?

よろしくお願いします。

Parents
  • > R__Serial_Send
    >
    > で送ったデータは接続しているpcに送られるということでしょうか?

    PC側にUSBシリアル変換チップ等を搭載したケーブル等を接続し、それとマイコンのシリアルポートを接続するとそういうことが可能となります。

    > またその確認方法はpc側のプログラミングが別で必要なのでしょうか?

    PC側のソフトを作成されても良いですが、TeraTermような汎用のターミナルソフトを使用するのがお手軽だと思います。

    更に言えば、マイコンもArduinoやGR-SAKURAのようなお手軽なライブラリが用意されているものの方がたむらさんの目的には合ってるような気がしますね。

  • Tera Termをあまり使った経験がないのですがマイコン側からpcへデータを送信出来ていればプログラムなしでTera Termの画面上で確認できるのでしょうか?
  • Higetakaさん、回答ありがとうございます。

    pcでキーを押してみましたが波形に変化は見られませんでした。
    また受信の関数を使用するとフラグのところで無限ループが起きていました。
    また送信するのがプログラムで変数に入れた文字なのはわかるのですが受信は
    何が返ってくるのでしょうか?

    tera termは設定をネットで調べてやってみましたがenterを押すとログイン画面が出るらしいのですが
    何度試しても出てきませんでした。

    よろしくお願いします。
  • まず、ハードがどうなっているか詳しく説明してください。
    特にPCとマイコンのそれぞれのTX,RXの結線状態が気になります。
    PCからの信号が確認できるまでは、何をやっても徒労に終わります。

    「enterを押すとログイン画面」はサンプルプログラムの動作でしょうか?

    Tera Termからaのキーを押せば、文字aが送信されます。

  • rx65nがある基盤に乗っておりRXDやTXDなどUARTのピンが6つあります。その6つのピンとMAX3232が接続しておりさらにMAX3232がRS232CコネクタとつながれてPCに接続されているみたいです。
    わかりずらいかもしれませんがよろしくお願いします。
  • 「enterを押すとログイン画面が出るらしい」というのは、参考にしているネットに記載されていた内容ですか?
    その場合、「そのようなプログラムが相手先に入っている」からログイン画面が表示されるのであって、「上述のサンプル」や「1文字だけ送信・受信」のプログラムでは出てきません。

    TeraTerm は初めてだと思いますので、TeraTerm 起動時に最初に表示される画面で、シリアルポートを選択し忘れや、ポート番号を正しく選択していない、などの凡ミスがないか、再確認されては?
  • ストレートケーブルとクロスケーブル、どちらを使うのか、マイコン搭載基板の仕様で確認することも必要です。( 両方用意して、それぞれで試して動く方を使う、で十分かも。)
  • 吉光屋さん、回答ありがとうございます。

    Tera Termの方はポート番号をデバイスマネージャーに表示されているものを選択し、設定から端末とシリアルポートの方もネットに記載されているやり方で設定してみました。

    ケーブルの方は基盤の説明書にストレートケーブルを使用すると記載されていたのでCableCreationのUSB to RS232 アダプタを使用しています。

    原因がわからずずっと苦戦しています。
    上の方にプログラムをのせているのですがシリアル通信のプログラムは載せている内容で合っていますでしょうか?
    長くなりましたがよろしくお願いします。
  • 基板は市販品でしょうか?
    基板上のシリアル用コネクタのところで、キーを押した時に、PCからのTXDに信号が来ているか、確認したいですね。
  • >R_Config_SCI2_Serial_Send((uint16_t *)v ,2);
    APIのリファレンスを確認していないので、不正確かもしれんせんが、次の2点が気になります。

    1.v はバイナリ値そのままです。PC側(TeraTerm)にはバイナリ値が入力されるため、それが制御コードだったりすると表示されません。直前に「sprintf(string, "%d",v);」と記載されていますので、このstringに格納された文字を1文字ずつ送信すれば表示されると思います。

    2.送信データの指定について、16ビット変数で大丈夫でしょうか?

     

    ただ、最初は皆さんが書かれているように1文字の送受信で試すのが先決かと

  • あれ、よく見たら 「extern volatile uint16_t string[2];」 となっていますね。
    文字列の出力先なので char、uint8_t でないといけないのでは?


    まず通信を確認する1文字送信として、次のようにして試しては?
    TeraTerm に '1'が延々と出力されれば成功です。

    uint8_t cval [6]; // 将来16ビット数=HEX4桁、10進5桁+'\n'を入れられるように変数確保

    ・・・
    //シリアル
    flg1=0;
    // R_Config_SCI5_Serial_Send((uint16_t *)g_riic0_rx_buf ,2);
    // R_Config_SCI2_Serial_Send((uint16_t *)v ,2); // これの代わりに
    cval[0]='1' ; //'1'のコードは 0x31
    cval[1]=0;
    R_Config_SCI2_Serial_Send((uint8_t *)cval ,1);
  • Higetakaさん、回答ありがとうございます。

    基盤の詳細は企業と連携してるので言えませんが評価ボートであるTarget Board for RX65Nが自作の基盤に乗っています。
    また、キーを押して見ましたが波形の変化は見られませんでした。
Reply
  • Higetakaさん、回答ありがとうございます。

    基盤の詳細は企業と連携してるので言えませんが評価ボートであるTarget Board for RX65Nが自作の基盤に乗っています。
    また、キーを押して見ましたが波形の変化は見られませんでした。
Children
No Data