この記事では、Teraterm等を使ってPCと基板間でUART通信する際に、UARTの論理を反転して入出力する方法について記載しています。

 

今回の作業について

昨日、pcbgogoにてATSAMD21/ATMEGA328のプリント基板を作成したのですが、 デバッグシリアルポート(UART)の論理を反転し忘れて実装してしまいました。。

 

そのため、teratermが文字化けしてしてしまって基板とうまく通信できません。 マイコン側にUARTの論理反転機能があればよかったのですが、残念ながらSAMD21にはそんな機能はありません。 (※SAMD51であればCTRLAのTXINV/RXINVビットを使って論理反転できます)

 

尚、基板とPC間は以下のシリアルケーブル(FTDIのチップが乗ったUSB-TTL変換ケーブル=FT232RL)を使用して通信しています。

 

どうしたもんかと色々調査したところ、シリアルケーブルに載っている FTDIチップには論理反転機能がある ということがわかりました。 論理の逆転問題は、この機能を使って解決していきたいと思います。

 

ちなみに、世の中に出回っているほとんどのUSBシリアル変換ケーブルにはFTDIのチップが乗っています。(たぶん)   そのため、この記事の内容は他のケーブルを使っている方にも参考になると思います。

 

 

論理反転の手順

以下にUARTの論理反転する手順を示します。

① FT_PROGのインストール

以下からFT_PROG(FTDIのチップの書き換えツール)をダウンロードし、インストールします。
https://ftdichip.com/wp-content/uploads/2023/01/FT_Prog_v3.12.31.639-Installer.exe_.zip

もしリンクが切れていたら FT_PROGでググって、以下の画像を参考にダウンロードしてください。

 

② 設定するシリアルケーブルの選択

論理を変えたいシリアルケーブルが刺さった状態でFT_PROGを起動し、虫眼鏡アイコンをクリックします。

検索中表示が出た後に、該当のシリアルケーブルが出てくるはずです。

 

③ シリアルケーブルの設定

左ペインの "Device Tree" から "Invert RS232 Signals" を選択すると、右ペインに "Invert XXX" と出てきます。 ここで論理反転したいポートにチェックを入れます。

TXD/RXDだけでなくDTR/DTS/CTS/RTSといった制御線も論理反転できるみたいですね。

 

④ 設定値の書き込み

設定ができたら、カミナリマークみたいなボタンを押します。するとシリアルケーブル側に設定がプログラミングされます。

ちなみに、シリアルポートが使用中だと失敗します。 また、一度書き込んだ設定はずっと有効になります(次回書き換えるまでずっと有効)。 なので、そのうち論理反転したことを忘れてひどい目にあう気がするので、ケーブルにラベルでも貼っておくとよいでしょう。(自戒)

 

⑤ シリアルケーブルの抜き差し

書き込んだ設定を有効にするには、シリアルケーブルをPCから抜き差しする必要があるようです。いったん抜き差ししましょう。

 

⑥ 通信の確認

Teratermだと他の要因(例えば文字コードや改行コード、フォント設定など)の影響で文字化けしている可能性もあるので、以下の Serister というソフトを使って生データを確認します。
https://www.vector.co.jp/soft/win95/hardware/se423507.html

[注釈]
Teratermでも生データを確認することはできますが、以下のような苦い思い出があるために Serister を使っています。
⇒ Teratermのα版と通常版を入れた状態で通常版を起動したときに、α版でしか設定できない設定値を通常版が読みに行って文字化けしてしまい、通常版の設定をいくら見直しても永遠に文字化けが直ることはなかった。。。

 

 

とりあえず今日はここまで。

 

 

コメント

  • コメントはまだありません。

コメントを投稿する

コメントを投稿する場合は以下に注意してください。

・記事に関係する内容であること
・特別な理由がない限り「全体公開」であること

これさえ守っていただければどんな内容でも投稿可能です。
皆様の質問やコメントは他の方の問題解決に繋がりますのでご協力ください。

コメント投稿フォーム
名前
メール
URL
コメント
閲覧制限

コメントを投稿するには、以下の問題に答えてください。
問題:「LEDの和名を漢字二文字+カタカナ五文字で入力してください」