6ピンTTLシリアルは主に2種類のピン・アサインがある

はじめに

一般に「6ピンTTLシリアル」と言われているものにはメジャーな仕様が2種類が存在しているということを書いてみたいと思います。

それぞれの6ピンTTLシリアルのピン・アサイン

Arduino互換系ボードの一部やインテル Galileo Gen 2 ボードなどのマイコン系で使用されることが多いのが、6ピンのヘッダーによるTTLレベルのシリアル・ポートです。このシリアル・ポートのピン・アサインは2種類あります。

このことは、知っている人には当たり前で、知らない人は本当に知らないし、知る機会があまりないのではないかと思います。

国内の販売店ではあまりこの仕様差について明示して販売しているところがないことも原因かと思います。知っていても気を抜いていると間違って購入してしまうケースも発生しているのではないかと思います。また、別の仕様のUSB接続シリアル変換ケーブル/ボードを使用していることに気づいていない人もそれなりにいそうな気がします。※1

FTDI USBコンバーター系のピン・アサイン

例えばインテル Galileo Gen 2 ボードは、そのシリアル・ポートの仕様を「6-pin console UART (compatible with FTDI USB converters)」あるいは「6-pin FTDI header」と表記しています。

該当する製品のピン・アサインは以下のようになっています:

ヘッダー・ピン番号 名前

タイプ 内容
1 GND

GND ブラック デバイスのグラウンドを供給するピン
2 CTS#

入力 ブラウン CTS(Clear to Send)制御の入力 / ハンドシェイク信号
3 VCC

出力 レッド +5V出力
4 TXD

出力 オレンジ 送信する非同期データの出力
5 RXD

入力 イエロー 受信する非同期データの入力
6 RTS#

出力 グリーン RTS(Request To Send)制御の出力 / ハンドシェイク信号

TTL-232R TTL TO USB SERIAL CONVERTER RANGE OF CABLES Datasheet Version 2.02」の10-11ページより「4.2 TTL-232R-5V and TTL-232R-3V3 Cable Signal Descriptions」を日本語化して引用

SparkFun Electronics系のUSBコンバーターのピン・アサイン

これに対して、もう一つの6ピン・シリアルは以下のようなピン・アサインとなっています:

SparkFunの6ピン・シリアルのピン・アサイン

SparkFun FTDI Basic Breakout – 5V」のページに掲載されている「Schematic」より引用

引用した画像中のTXOはTXD、RXIはRXDと同じ信号の別名です。これを同じ表記にして先ほどの表と同じ形にしてみます:※2

ヘッダー・ピン番号 名前

タイプ
1 GND

GND
2 CTS#

入力
3 VCC

出力
4 TXD

出力
5 RXD

入力
6 DTR#

出力

ほぼ同じなのですが、6ピンが別の信号になっているのがわかります。前者はRTS#で後者はDTR#となっています。これが2種類の6ピンTTLシリアルの差です。

2つの差は何のためにあるのか?

6ピンがRTS#になっているシリアル・コネクターのピン・アサインは、双方向通信をそれぞれ対等の関係で行うことを前提に、双方向でハードウェア・フロー制御を可能にするためのものです。

もう一方の6ピンがDTR#になっているシリアル・コネクターのピン・アサインは、パソコン側からマイコン側へのデータ転送に限りハードウェア・フロー制御を行うが、マイコン側からパソコン側へのデータ転送ではハードウェア・フロー制御を省略する仕様としているものです。

このようにしている理由は以下のようなことではないかと思います:※3

  • パソコン側のリソースはマイコン側と比較して十分にあるため、フロー制御を行う必要なくすべて受け取ってしまうことが期待できるということ。
  • パソコン側からマイコン側へファームウェアやアプリケーション・プログラムを一方的に供給することが主目的で使用するため、マイコン側がフロー制御を行うことだけに特化している。

このようにRTS#を省略する理由は別として、DTR#を割り当てる理由はなんでしょうか? これは、DTR#を接続先のデバイス(主にいくつかのマイコン・ボードあるはマイコン)に対するリセット信号の代わりとして使用するためです。この目的のために6ピンをRTS#ではなくDTR#に置き換えているわけです。※4

日本では割りと混ざって扱われている2つのTTLシリアル変換ケーブル/ボード

先ほど紹介したSparkFun Electronicsの商品ページ「SparkFun FTDI Basic Breakout – 5V」には、明確に以下の記述があります:

The major difference with this board is that it brings out the DTR pin as opposed to the RTS pin of the FTDI cable.
The DTR pin allows an Arduino target to auto-reset when a new Sketch is downloaded.
This is a really nice feature to have and allows a sketch to be downloaded without having to hit the reset button.
This board will auto reset any Arduino board that has the reset pin brought out to a 6-pin connector.

(さかきけい意訳)
このボードに存在するFTDIケーブルとの主要な差は、RTSピンではなくDTRピンを配置しているというところにあります。
新しいスケッチ※5をダウンロードする際に、DTRピンを使用して自動的にArduinoをリセットすることができます。
これは非常に素晴らしい特徴であり、スケッチのダウンロード時にリセット・ボタンを押す必要がなくなります。
このボードは6ピンのコネクターにリセット・ピンを割り当てている各種Arudinoボードを自動的にリセットすることができるでしょう。

一方で、日本の電子工作方面でメジャーなスイッチサイエンスではどのように記述しているのか見てみましょう:

  • FT232RL搭載小型USB-シリアルアダプタ 3.3V

    ピン配列がArduino製品に完全に一致するように設計されていますので、ピンヘッダを用意すれば簡単にスケッチ書込みが出来るようになります。もちろん、IDEからのスケッチ書込み時に自動リセット&再起動する機能もサポートされていますから、Arduino Uno並のイージーさを実現出来ます。

  • FT232RL搭載小型USB-シリアルアダプタ 5V

    5V動作(16MHz)Arduino Pro、Pro Mini向けのUSB-シリアル変換モジュールです。以前のモデルよりも大幅に小型化されました。しかも、ピン配列が完全に一致するように設計されていますので、ピンヘッダを用意すれば簡単にスケッチ書込みが出来るようになります。もちろん、IDEからのスケッチ書込み時に自動リセット&再起動する機能もサポートされていますから、Arduino Uno並のイージーさを実現出来ます。

  • FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

    SparkFun社ArduinoProシリーズ等、Arduino互換ボードのプログラム書き込みに使えます。Arduino互換ボードは5V動作タイプと3.3V動作タイプで2系統ありますが、このモジュールはジャンパーピンによって5V/3.3V切り替えが可能なので、これ1つでどちらにも対応できます。

見る人が見れば「あ、DTR#が出ているタイプなんだな!」「FTDI互換ではないんだな!」ということが明確にわかります。が、事前にこの知識がないと「FTDIの6ピンと互換ではない」ということがちょっと読み取りにくいのが残念なところです。「FTDIの6ピンとは互換ではない」ということを明記した方が優しいのかな、と個人的には思います。

さらに、もう少し残念なのは、「Intel Galileo Gen 2開発ボード」のページに以下のような記述がある点です(リンクも再現しています):

スペック

  • CPU:Quark SoC X1000(最大400MHz)
  • FIRMWARE/BOOTLOADER:8MB NOR FLASH
  • RAM:256MB(DDR3-800)
  • MicroSDスロット×1
  • microSDカード(オプション):最大32GB
  • フルサイズのmini-PCI Express 1xスロット ×1
  • Arduino 1.0準拠拡張コネクタ(Uno R3と互換のピン配置) 5Vと3.3Vのシールドに対応
    • デジタルI/Oピン×12
    • アナログ入力×6
    • PWM出力(12bit解像度)×6
    • シリアルポート×1
    • ICSPヘッダ×1
  • リアルタイムクロック搭載(バックアップ用電池接続コネクタ搭載)
  • USBホストコネクタ(USB A)×1、USBクライアントコネクタ(micro-USB B)×1
  • 10/100Mbps イーサネット RJ45コネクタ(PoEサポートあり,PoEモジュールは別途ご購入ください)×1
  • TTLレベルシリアルポート(FTDI USBシリアル変換アダプター互換)×1

下線強調は筆者による。

リンク先は、先ほどの6ピンがDTR#になっているUSBシリアル変換ボードへのページです:

スイッチサイエンス •FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

しかし、インテル Galileo Gen 2 ボードのピン・アサインは当然DTR#ではなくRTS#が接続されることを前提としています:※6

インテル Galileo Gen 2 ボードのUARTコネクター部分

しかも、最初に紹介したFTDI TTL-232R-5V/3Vのケーブルの色まで印刷されています。※7

というわけで、スイッチサイエンスのこのような記載はあまりよろしくないのではないかと思うのです。これで「誤解するな」というのはちょっと無理があります。インテル Galileo Gen 2 ボードのページからのリンクを外すか、外さないのであれば、せめてDTR#とRTS#が違うためにパソコン側からのフロー制御が行えないことを明記すべきだと思います。

もしも、これからインテル Galileo Gen 2 ボード用にUSBシリアル変換ケーブルを購入するのであれば、秋月電子通商の以下のページで売られているFTDI TTL-232R-3Vの方が適切です:

FTDI TTL232R-5V

まとめ

このように日本では割りと曖昧に混ぜて扱われていることのある6ピンTTLシリアルですが、大きく分けて2種類あり、以下のような差があることを説明しました:

  • FTDIのケーブルが6ピンにRTS#を割り当てているのに対し、一部のマイコン・ボードあるいはマイコンをパソコン側からリセットするためにDTR#を割り当てているものがある。
  • 一部のマイコン・ボードあるいはマイコンのリセットをパソコン側から行いたい場合には6ピンにRTS#のケーブルではまずい。
  • FTDIの6ピンを期待してハードウェア・フロー制御を行うような場合には6ピンにDTR#を割り当てたケーブルではまずい。

用途に合ったピン・アサインの6ピンTTLシリアルのケーブルあるいはボードを選択する必要があります。事前にこの差があることを認識し、誤った選択をしないように注意することが重要かと思います。

2014年12月31日

秋月電子通商に対する製品へのリンク先を5Vの方へのリンクとしていましたが、3.3Vの方が正しいため修正しました。大変失礼しました。


  • 後述しますが、それなりにつかえてしまうケースがあるので厄介です。
  • 説明部分とケーブルではないため色の記載部分を省いています。
  • 筆者はこのあたりは深堀して調べていません。興味がありましたら別途調べてみてください。
  • ピン数を増やすのではなく、既存のピンを置き換えたのは前述のような理由があるのではないかと思われます。
  • Arduino系におけるアプリケーションの名称
  • RTS⇔CTS、TXD(TXO)⇔RXD(RXI)の関係で接続するため、USBシリアル変換ケーブル/ボード側とインテル Galileo Gen 2 ボード側では逆の表記になります。
  • コネクターの上側には「グリーン(GREEN)」を示す「GRN」が、コネクターの下側には「ブラック(BLACK)」を表す「BLK」が印刷されています。
このエントリーをはてなブックマークに追加

6ピンTTLシリアルは主に2種類のピン・アサインがある」への3件のフィードバック

    1. KEI SAKAKI 投稿作成者

      Sideriverさん、はじめまして。

      返信遅くなりまして申し訳ないです。
      ご質問いただいた件ですが、私のページの記載の方が誤りで、5Vの製品ではなく3.3Vの製品の方を使用すべきです。
      さっそくページの内容(リンク先と製品名)について修正しました。

      この度はご指摘ありがとうございました。

      返信
  1. taka

    初めてシリアルUSB変換器を買って、シルク印刷されているものが、よくネットに載ってるものと違うので調べていたら、こちらにたどり着きました。私が買ったのは DTR になっているほうでした。
    RXI って RXD と同じなの? TXO は TXD ? フォントのせいなのか、印刷が欠けているのか、全く別物なのか、分からなかったのです。
    お陰で、何が違い、何が同じなのか、が分かって助かりました。
    Raspberry と pcDuino で使おうと思って購入したのですが、何とかなりそうです。
    ありがとうございました。
    追伸.ThinkPad s30 ,私も欲しかったPCです。買えませんでしたが。s30 が会社支給されていた人が羨ましかったのを思い出しました。

    返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です