Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

シリアル通信について

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

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

R__Serial_Send

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

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

よろしくお願いします。

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

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

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

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

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

  • In reply to fujita nozomu:

    Tera Termをあまり使った経験がないのですがマイコン側からpcへデータを送信出来ていればプログラムなしでTera Termの画面上で確認できるのでしょうか?
  • In reply to たむら:

    追加です。
    やろうとしてるのがマイコンからpcにデータを送りたいのでR__Serial_Receiveの関数は使わなくても大丈夫でしょうか?
    よろしくお願いします。
  • In reply to たむら:

    シリアル通信を使えば、マイコン側のprintf出力を、PC上のターミナルソフト(Tera Term等)に出す事ができるようになります。ターミナルソフトでは表示結果をファイルに保存できます。

    マイコン側のprintf,scanf等の標準入出力は、低水準の1文字入出力関数を使うようになっており、ここでシリアル通信を行うように実装すると、PC側のターミナルがディスプレイとキーボードとして振る舞えるようになります。

    マイコン側からの送信だけでやりたい事はできますが、せっかくやるなら、送受信両方をやってみてはいかがでしょうか。
  • In reply to Higetaka:

    Higetakaさん、回答ありがとうございます。

    私が最終的にやりたいのはマイコンでセンサから得たデータをpcに送ってcsvに出力したいのですがそれはどういった手順を踏めばできるのでしょうか?マイコンから直接csvなどに出力するのは無理と言われたので...
    よろしくお願いします。
  • In reply to たむら:

    PCとマイコンの通信手段を確保します。様々な通信手段がありますが、一番手軽なのがシリアル通信です。初体験であれば、まずはUSB-シリアル変換アダプタ経由で接続し、先ほどのReplyのようなPC上のターミナルソフトとやりとりできるようにします。少なくとも、CSV相当のデータが表示されるところまでは、ターミナルソフトでできるようにしなければなりません。

    PC上でのCSV保存を自動化したい場合は、ターミナルソフトのマクロを駆使したり、ターミナルソフトの代わりに独自のシリアル通信ソフトを作成したりします。
  • In reply to Higetaka:

    Higetakaさん、回答ありがとうございます。

    #include "r_smc_entry.h"
    #include <stdio.h>
    #include <stdlib.h>
    void main(void);

    extern volatile uint8_t flg;
    extern volatile uint8_t flg1;


    extern volatile uint8_t g_riic0_tx_buf[4];
    extern volatile uint8_t g_riic0_rx_buf[2];
    extern volatile uint8_t g_riic0_tx1_buf[4];
    extern volatile uint8_t g_riic0_rx1_buf[2];

    extern volatile uint16_t string[2];


    void main(void)
    {

    uint8_t adr =0 ;//7bit address
    adr =0x48 ;//7bit address

    R_Config_SCI2_Start();
    R_Config_RIIC0_Start();



    while(1)
    {
    //チャンネル1
    flg=0;
    R_Config_RIIC0_Master_Send(adr, (uint8_t *)g_riic0_tx_buf,3);
    while(!flg)
    {
    }
    R_BSP_SoftwareDelay(10, BSP_DELAY_MILLISECS);

    g_riic0_rx_buf[0] = 0;
    g_riic0_rx_buf[1] = 0;


    flg=0;
    R_Config_RIIC0_Master_Send(adr, (uint8_t *)g_riic0_rx_buf,1);
    while(!flg)
    {
    }
    R_BSP_SoftwareDelay(10, BSP_DELAY_MILLISECS);


    flg=0;
    g_riic0_rx_buf[0] = 0;
    g_riic0_rx_buf[1] = 0;

    R_Config_RIIC0_Master_Receive(adr,(uint8_t *)g_riic0_rx_buf,2);
    while(!flg)
    {
    }

    R_BSP_SoftwareDelay(10, BSP_DELAY_MILLISECS);

       //表示
    uint16_t v = 0;
    v = ((uint16_t)g_riic0_rx_buf[1]) >> 4;
    v |= ((uint16_t)g_riic0_rx_buf[0]) << 4;

       printf("値:%d",v);
    printf("アドレス:%x\n",&v);
    sprintf(string, "%d",v);

    //シリアル
    flg1=0;
    //R_Config_SCI5_Serial_Send((uint16_t *)g_riic0_rx_buf ,2);
    R_Config_SCI2_Serial_Send((uint16_t *)v ,2);
    while(!flg1)
    {
    }
    R_BSP_SoftwareDelay(10, BSP_DELAY_MILLISECS);

    }


    }

    現在上記のプログラムを作成してみてadコンバータとi2c通信を行いそのデータをシリアル通信でpc上に送信しているつもりなのですがtera termに何も表示されません。マイコンとpcはUSB-シリアル変換アダプタで接続しています。
    どこか原因がわかったら教えていただけるとありがたいです。
  • In reply to たむら:

    まず、マイコンから1文字だけ送信するシンプルなプログラムから始めましょう。それができたら、1文字を受信します。
    これだけの事をやろうとしても、ハードウェア結線、通信パラメータ(PCとマイコンで一致させる)で誤る事があります。
    うまく動かない場合は、信号線をオシロやロジアナで確認したり、PCとマイコンのどちら側で問題が発生しているか切り分けるために、ループバックテスト(自身で送信したデータを折り返しで受信する)をやったりします。
  • In reply to Higetaka:

    Higetakaさん、回答ありがとうございます。

    まず言われた通りにスマートコンフィグレータにあるサンプルプログラムを使用して
    フラグを追加して実行してみましたがtera termには表示されませんでした。

    txのピンの波形を見たところloとhighに交互になるのを確認しました。
    ということはpcの方に問題があるのでしょうか?また、tera termはポートを設定すればあとは実行すれば自動的に値を読み取ってくれるのでしょうか?
  • In reply to たむら:

    マイコンのTX側から信号は出ているようですね。
    逆にPC側でキーを押した時に、マイコンのRX側に信号が来ているか確認して下さい。結線が間違っていない事の確認です。

    Tera Termでは通信設定をマイコン側と合わせる必要があります。
    ボーレート、データビット数等を指定するところが、設定メニューのシリアルポートのところにあります。
  • In reply to Higetaka:

    Higetakaさん、回答ありがとうございます。

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

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

    よろしくお願いします。
  • In reply to たむら:

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

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

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

  • In reply to Higetaka:

    rx65nがある基盤に乗っておりRXDやTXDなどUARTのピンが6つあります。その6つのピンとMAX3232が接続しておりさらにMAX3232がRS232CコネクタとつながれてPCに接続されているみたいです。
    わかりずらいかもしれませんがよろしくお願いします。
  • In reply to たむら:

    「enterを押すとログイン画面が出るらしい」というのは、参考にしているネットに記載されていた内容ですか?
    その場合、「そのようなプログラムが相手先に入っている」からログイン画面が表示されるのであって、「上述のサンプル」や「1文字だけ送信・受信」のプログラムでは出てきません。

    TeraTerm は初めてだと思いますので、TeraTerm 起動時に最初に表示される画面で、シリアルポートを選択し忘れや、ポート番号を正しく選択していない、などの凡ミスがないか、再確認されては?
  • In reply to たむら:

    ストレートケーブルとクロスケーブル、どちらを使うのか、マイコン搭載基板の仕様で確認することも必要です。( 両方用意して、それぞれで試して動く方を使う、で十分かも。)

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page