🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

3回答

4351閲覧

シリアル通信がうまくできません

makimax

総合スコア4

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/09/19 06:33

前提・実現したいこと

北斗電子さんのRX71MのA/D変換のチュートリアルを行っているのですが,
Teratermを用いてシリアル通信が行えているか確認する段階でつまずいています.

発生している問題・エラーメッセージ

Teratermを用いてのシリアル通信を行いたいのですが,Teratermがうんともすんとも言いません. ローカルエコーやbpsの設定なども確認しています.

該当のソースコード

/* Start user code. Do not edit comment generated here */ unsigned short temparature_ad_val, vr_ad_val; unsigned short temparature; unsigned char i; static unsigned long timer_counter=0; timer_counter++; R_S12AD0_Start(); //A/D conv start while(S12AD.ADCSR.BIT.ADST == 1); //wait finished R_S12AD1_Start(); //A/D conv start while(S12AD1.ADCSR.BIT.ADST == 1); //wait finished R_S12AD0_Get_ValueResult(6, &temparature_ad_val); R_S12AD1_Get_ValueResult(8, &vr_ad_val); //tempatature calc for(i=0; i<80; i++) { if(temparature_ad_val < g_blsm_ad_val_table[i]) break; } temparature = g_blsm_temp_table[i]; GPT2.GTCCRA = (unsigned short)((float)(vr_ad_val)/4095.0*3000.0); if((timer_counter % 500) == 0) { sciPrintBuf("¥n"); sciPrintBuf("Tempatature(A/D value) : "); sciPrintShortIntBuf(temparature_ad_val); sciPrintBuf("¥n"); sciPrintBuf("Tempatature(degree) : "); sciPrintShortIntBuf(temparature); sciPrintBuf("¥n"); sciPrintBuf("VR(A/D value) : "); sciPrintShortIntBuf(vr_ad_val); sciPrintBuf("¥n"); sciPrintBuf("P21 duty : "); sciPrintShortIntBuf(GPT2.GTCCRA); sciPrintBuf(" / 3000 ¥n"); } /* End user code. Do not edit comment generated here */ ### 試したこと CS+を用いてマイコンへのA/D変換を行おうとしています. 使用しているハードはRX71Mのマイコン,それとセットになっていたモータドライバボード,超小型USBシリアル変換モジュールのFTDI社製AE-FT234Xを使用しています. プログラムはマニュアル通りに設定を行い,コード作成を行ったので問題はないと思うのでハード的なものであると考えているのですが, マイコンはRX71Mを用いてシリアル変換を行い,その結果をTeratermで出力しようとしました. 自分が思っている配線をつなげてみると一応,接続済と表記が出るのですがプログラムを実行しても Teraterm上では何も表示されません. 接続の写真など載せられなくて申し訳ないのですがこれは実は配線の問題だったりするのでしょうか. 本当にマイコン初心者なのでどこに何をつけるのが当たり前なのかもわからない状況です. 超小型USBシリアル変換モジュールのFTDI社製AE-FT234XはUSBバスパワとの表記があったので4ピンある中でGND,TXD,RXDのピンにしか接続は行っていません. その際電源が投入されいることを示す青色のLEDは点灯しています. どなたか詳しいかた,ご教授いただけないでしょうか. よろしくお願い致します. ### 補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2019/09/19 11:13

txはrx rxはtxに接続するものですが大丈夫ですか?
makimax

2019/09/19 12:14

ご回答ありがとうございます. そこは大丈夫そうです.
ozwk

2019/09/19 13:08 編集

uartですよね?canにつないでたりしないですよね?
makimax

2019/09/19 13:12

あまり詳しく無いのですが,恐らくuartだと思っています. canに繋いでは無いです!
ozwk

2019/09/19 13:25 編集

原因は接続ですかと言う質問の割には、実際にどう接続したのかが全く書かれてないので、とりあえず参考にした資料のリンクとその資料のどこを読んで接続が正しいと判断したのか説明してください。 ふわっとした質問内容ではふわっとした回答しかできません
makimax

2019/09/19 13:54

ご指摘いただきありがとうございます. 次回からその点について意識します. 1.マイコン側(RX71M) (https://www.hokutodenshi.co.jp/download/manual/BLUSHLESS_MOTOR_STARTER_KIT_RX71M_Software_s.pdf) このマニュアルの22ページ目に記載されているように市販のUSB-SerialモジュールをRX71MのP26,P30に接続しました.P26,P30の位置は以下のページを参考にして確認しました.自分の考えでは左から20番目と22番目の端子に接続するのが正しいと思っているのですが...(100ピンの製品を用いているので32ページを参照にしています) (https://www.renesas.com/jp/ja/doc/products/mpumcu/doc/rx_family/r01ds0249jj0110-rx71m.pdf) 2.USB-Serialモジュールとしては以下のURLを参考にしました. (http://akizukidenshi.com/download/ds/akizuki/AE-FT234X_B5_DS_20150608.pdf) 上の方のページの左下に記載されているTxD,RxDの順番を参考に先ほど調べたマイコンの端子の番号にそれぞれ接続しています.また,GNDはマイコンにいくつか記載があったので接続したTxD,RxDに最も近いものを選び,マイコンとUSB-Serialモジュールを接続しています. +5Vの端子はUSBバスパワと記載があったのでバスパワで電力供給されているのでは無いかと考え何も接続していません.パソコンとUSB接続した際には電力供給されたことを示す青色LEDが点灯しています. (もしかしたらここの認識が間違えていますか?) よろしくお願いします.
ozwk

2019/09/19 14:20

リンク見れなかったのでリンク文字列から推測してます。 rx71mじゃ基板はわかりません。こういう質問するときは基板の型番書きましょう。 さてHSBRX71M176だとすれば J2-44 がP26(TX) J2-40 がP30(RX) で、J2-44を秋月モジュールの CN2-4(RX) CN2-3(TX)につなぐはずです
makimax

2019/09/19 15:36

至らぬ点が多く指摘していただきとてもありがたいです. ありがとうございます. 型番を確認しました. HSBRX71M100でした. データシートを確認したのですが, P26とP30が存在しているところが J5(エミュレータインターフェース),J5-5,J5-11と J4(フラッシュインターフェース)J4-15,J4-17 にあったのですが,自分としては拡張I/O(例えばJ6)とかに接続するのかなと思っていたのですが, この考え方は間違っていますでしょうか?? リンク飛べないかもしれないですけどHSBRX71M100の取扱説明書のリンクを以下に貼っておきます. (https://www.hokutodenshi.co.jp/download/manual/HSBRX71M100_s.pdf)
ozwk

2019/09/19 23:59 編集

> この考え方は間違っていますでしょうか?? はい、間違ってます いや「拡張IO」だなんて名前がついているから Tx,Rxがそこにあるんじゃないかと最初に思うのはまあわかります。 ただP26,30が無いのに4つある「拡張IO」と名前がついたコネクタからJ6を選んで そこからさらにJ6の26ピンの中からどうやってTx,Rx(と思った)2本を選んだのか気になるんですが...
makimax

2019/09/20 01:58

そうですよね 自分が思ったのはozwkさんが提示してくださった176ピンの場合だと拡張IOのJ2に 必要とされるピン(P26,P30)があったのでてっきり100ピンの方でも拡張IOのところにあるのでは無いかと 思っていたのですが,どの拡張IOにも必要とされるピンがなかったので必ずしも拡張IOのコネクタに Tx,Rxが無いということが理解できました. まずはJ4のピンに接続するところから始めてみようと思います. 本当に助かりました. ありがとうございます.
makimax

2019/09/24 07:42

ikadzuchiさん ご回答ありがとうございます. その様な方法があったのですね.これから活用していきたいと思います. ありがとうございました.
guest

回答3

0

マイコンボード側のピンがT/Rxと全然違うピンなので正しく接続しましょう。

どこのコネクタにどのピンを出すかなんて統一的な決まりがあるわけではなく、
完全にボード設計者のさじ加減なので、
ボードの説明書は必ず使っているボードのものを読みましょう。

投稿2019/09/20 02:13

ozwk

総合スコア13551

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makimax

2019/09/20 02:58

どうやらそこが一番の問題のようです. ありがとうございます.修正してみます.
guest

0

(今のところは)マイコンから送信することを確認したいのですね?
まだteratermに繋ぐのは早いです。まずは送信波形をオシロスコープで見てください。送信波形に異常がないこと(電圧、ビットレート、ビットの並びなど)を確認してから、はじめてPCに繋ぎます。異常があれば、設定等を見直します。
基本的に、新しいハードウェアを試すときはいきなりPCにつなげてはいけません。最悪PCが壊れる可能性もあります。

投稿2019/09/19 10:14

yuki23

総合スコア1448

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makimax

2019/09/19 10:52

わかりました. PCが壊れる前にそのようなことを教えていただきとても助かりました. まずはオシロスコープで波形を見ることから始めてみようと思います. ご回答頂きありがとうございました.
guest

0

まずは、USBシリアル変換モジュールのTxDとRxDを接続してしまって、TeraTermからなにかキーを打てば同じ文字が表示されるのを確認しましょう
それが確認できれば、Teratermの設定及びシリアルの入出力の動作確認ができます。

そうなると、あとはマイコンとの接続のはなしとなります

投稿2019/09/19 06:53

y_waiwai

総合スコア88040

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makimax

2019/09/19 07:05

回答ありがとうございます. 今のところマイコンのTxDとRxDの接続はできていると思います.(ちなみにGNDにも接続をしています) ローカルエコーにして文字を打てばその文字は端末上で表示されるのですが, それで大丈夫なのでしょうか?? もしそれが正しいのであればパソコンから出力されたはずの結果がTeraterm上に表示されないのは パソコンからマイコンへの接続が悪いという認識であっているでしょうか?? 何もわからない状況なのでわかりにくい質問に回答いただいて本当に助かっています. ありがとうございます.
y_waiwai

2019/09/19 08:18

Teratermの設定の中のローカルエコーはまた別の話です TxDとRxDをつないで、シリアルの送信文字をそのまま受信し、それが正常に表示されるのをまず確認しましょう そうすれば、Teratermから正常に送信され、また、正常に受信できることが確認できます あとのはなしはそれからです
makimax

2019/09/19 10:05

回答ありがとうございます. 一応TxDとRxDは回路図を見ながら繋いだつもりなのですが,そこから先でシリアルの送信文字を そのまま受信できていないようです.今回悩んでいるのがまずその時点の問題でして,,, 質問の仕方が下手ですみません 配線をしっかり繋げられていると思うので文字の送受信ができていないのは CS+の作りやプログラムの意味がよくわかっていないのかもしれなかったです. 上記の最初の質問のところに載せたプログラムのsciPrintBufでシリアル文字の送信ができるのではないかと考えているのですが,見当違いでしょうか?? 何度も質問してしまい申し訳無いです.
y_waiwai

2019/09/19 10:30

だから、まずはTeratermの設定と、USBーシリアル変換の動作を確認しよう、と言ってるんですが、ご理解いただけなかったようですね。 残念ですが、これはもうしようがないですね
makimax

2019/09/19 10:42

わかりました. 色々試してみます. 一連の質問ご回答頂きありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問