2012年7月17日火曜日

RX62N/SH-2A RS232C通信

PCと通信(RS232C)したい。うちのPCにはシリアル(RS232C)が付いてないので、以下の部品を使用した。

USBシリアル変換モジュールのジャンパ設定が分かりにくかったので、メモ。
  • J1:1-2間ショートすると3.3V、2-3間をショートすると5V
  • J2:ショートするとUSBバスから電源供給、オープンだと外部から電源供給
RX62Nは3.3Vであり、外部(RX62Nとか)から電源供給してもいいけど、接続しているUSBバスから供給が楽チン。というわけで、J1は1-2間ショート、J2はショートの設定。

とりあえず、9600bpsの設定で動作確認。




送信は確認できました。受信はデバッガのレジスタに値がセットされているのが確認できました。

簡単そうに書いてるけど、実は意外に時間かかりました。RX62Nのシリアルの設定で、シリアル受信許可とシリアル送信許可のレジスタビットがあるんだけど、片方ずつセットすると後にセットしたほうが反映されない。ハードウェアマニュアルを見ると、注:とかって小さく書いてる。。。分かりにくい。。

動画が見えにくかったので再アップ。

回路図(というほどのものではない)を作ってみたのでアップ。


-----------------------------------------------------------------------
転送レートを、
  • 9600bps
  • 19200bps
  • 38400bps
  • 57600bps
  • 115200bps
  • 230400bps
  • 460800bps
  • 921600bps
と、順番にあげてみました。
すると、460800bps、921600bpsで文字化けするようになりました。


FT232RLのマニュアルには300kbps~460kbpsとあったので、まぁ妥当かな。
230400bps(230kbps)を使うようにしたいと思います。

-----------------------------------------------------------------------
2012/1/2
前々からターミナルの文字に色が付けれたらと思ってました。
Linuxで使うときは色が付けれるのだから、可能なはず、と思い、ググッてみると、ありました!


(1) エラーの場合は赤い背景色に白文字にしました。
(2) 時間計測の結果は青い背景色に白文字にしました。

ちなみに、画像のエラーはSDカードがVer2.00に対応してないため、CMD8でillegal commandが返ってくるので、問題があるわけではありません。また、時間計測については、初期化が59msだったことを示します。

さて、やり方ですが、
VT100仕様のエスケープシーケンスを文字列の先頭に加えるだけです。
(1)の場合は、"\x1b[44m\x1b[37m"を先頭に加えます。
(2)の場合は、"\x1b[41m\x1b[37m"を先頭に加えます。
それぞれ、デフォルトに戻すときは(改行の手前とかに)"\x1b[0m"を入れておきます。

詳しいエスケープシーケンスについてはググると出ます。
参考にさせてもらったサイト:http://www35.atwiki.jp/futoyama/m/pages/98.html?guid=on


-----------------------------------------------------------------------
2012/7/15

460800bpsで文字化けしてた件ですが、FTDI社のFT232Rや、FT232Hはボーレート変換を変更できるようです。
Windowsでは921600bpsが最高のボーレート設定ですが、そもそも、その設定(名)に対して自由にボーレートを割り当てることができます。
FTDI社提供のWindowsのドライバの中に、ftdiport.infというファイルがあり、その内容を改変することで、速いボーレートを設定することができるようになります。
そもそも、460800bpsで文字化けしていたのは460800bpsという設定と、マイコンのボーレートが合わないためでした。
とりあえず、1500000bps(1.5Mbps)、3000000bps(3Mbps)が設定として簡単なので、やってみました。
見事、1.5Mbpsでのシリアル通信に成功しました。USBのデバッグでフルでログ出力しても遅くなりません!
詳しくはFTDI社のHPでAN232B-05_BaudRates.pdfというファイルがダウンロードできるので、それを参照。。

1 件のコメント:

  1. すごい進捗ですね。。。
    とりあえず、基本の半田づけが完了してUSB認識してLEDがチカチカ・・・
    ドライバがWindows 7に対応してなかったり、古いから仕方ないか

    次はプログラミングでLED点滅させる!!
    今はこれが精一杯(by ルパン三世)
    ※動画の投稿方法わからず!!

    返信削除