【USBシリアル変換の定番IC】FT232Rの使い方 | アナデジ太郎の回路設計

【USBシリアル変換の定番IC】FT232Rの使い方

FT232RによるRS232C変換回路 回路設計

この記事でわかること

・新VerとなるFT232RNの使い方
・旧VerのFT232Rとの違いと、代替候補ICの紹介
・RS-232CやRS-422/485変換回路、マイコンのUSB通信回路への適用例

パソコンのUSBポートを使ってマイコンと通信を行ったり、
USB通信をRS-232CやRS-422/485等の別の通信方式に変換させたい場合に
USBシリアル変換ICが用いられ、FTDI製FT232Rは定番ICとして有名です。

FT232Rは現在、NRND(新規設計非推奨品)となっていることから
本記事では、FT232Rの改良版であるFT232RNの使い方を説明すると共に、
FT232Rからの変更点や、USBシリアル変換回路の適用例を解説します。

USB通信の基礎知識については下記記事で解説しています。

FTDI製ICの種類と使い方については下記記事で解説しています。

<注意点>
本記事はFT232RNのデータシートを基に作成していますが、
解説するICの機能や回路の動作を保証するものではありません。

ここで紹介する方法が適切で無い場合がある為、
使用の際は、最新のデータシートを必ず確認の上、
記事にある回路の利用については自己責任でお願いします。

FT232RNの基本仕様と代替候補品

FT232RNの基本仕様と、代替候補となるICとの比較表を下記に示します。

FT232RNの代替候補品一覧

旧VerのFT232Rについては、基本仕様がFT232RNと同一のため掲載してません。
他のICはFT232RNとピンコンパチ(交換)ではありませんが、同様の機能を持っています。

型名末尾がXのICは、消費電力とピン数を削減した小型&低コストタイプのXシリーズで、
UART信号電圧(VCCIO)が1.8V ~ 3.3Vになっているので5V系信号を出力できませんが、
トレラント機能があるので、5V系信号を入力することは可能です。

FT232HはHi-Speedモード(480Mbps)対応のHシリーズで、
Full-Speedモード(12Mbps)である他のICよりもUSB転送速度が速いですが、
ICの各種機能設定に必要なEEPROMは内蔵されておらず、外部に設ける必要があります。
 ※FTDI製ICのラインナップの詳細は、FTDI製ICの種類と使い方で解説してます。

注記:ボーとbpsについて
 データシートにはUART通信速度(ボーレート)の単位としてBaud(ボー)表記されています。
 このボーは変調速度であり、1秒間の変調数(信号変化の数=1/周波数)になります。
 また、速度の別表現としてbpsがありますが、これは1秒間で転送されるビット数です。

 一般的な通信方式は、1回の変調で1ビットが転送されますが、
 複数回の変調で1ビットを表現したり、複数ビットを1回の変調で表現する方式もあることから、
 厳密には、ボーレート(ボー)=bpsではありません。

 しかし、USBやUARTのシリアル通信では1回の変調=1ビット転送であることや、
 通信速度として馴染みの深いbpsを使用した方が理解しやすいという理由から、
 本記事では、通信速度(ボーレート)の表記にbpsを使用することにします。

FT232RNの使い方

FT232Rとの違いについて

FT232RNは旧VerであるFT232Rとは基本的には互換性あり(ピンコンパチプル)ですが、
以下の点に違いがあります。

・内蔵発振器を利用するにはFT232Rは電源電圧VCCが3.3Vだと使用不可のため、
 5V電源にする必要があったが、FT232RNは3.3Vでも内蔵発振器が利用可能となった。

・外部発振器を利用する場合、クロック入力(OSCI)電圧の上限が変更となり、
 FT232Rは3.63Vに対し、FT232RNは1.98Vと低下した為、3.3Vクロックが入力不可となった。

・内部レギュレータ(LDO)による3.3V電源出力(3V3OUT)の最大出力電流は50mAだが、
 FT232RNは電源投入からUSBエニュメレーション(※)完了までは25mA以下に制限される。

以上のことから、FT232RからFT232RNへの変更の際は、
クロック出力電圧が3.3Vの外部発振器は使用不可ですが、
内蔵発振器や、外部に水晶振動子を使用している場合は、そのまま置き換えが可能です。

起動時の3.3V電源出力(3V3OUT)の出力電流制限の影響については、
USBコネクタから電源供給(バスパワー)する場合で、
かつ、起動時から回路の消費電流が25mAを超える時に限られます。

 FT232RとFT232RNの違いの詳細については、FTDIアプリケーションノート
 AN_560 Migrating from FT2xxR to FT2xxRNを参照下さい。

※USBエニュメレーション
 USBデバイス接続後、ホストのOS(Windows等)に認識されるまでの一連のデータのやり取りのこと。

 具体的には、USBデバイスはディスクリプタ(記述子)と呼ばれる設定情報を持っており、
 ホストはUSBデバイス接続時にディスクリプタを要求します。
 USBデバイスから応答されるディスクリプタを解析することで、
 ホストはUSBデバイスの設定を把握します。

パッケージとピン配置

パッケージは32ピンQFPと、28ピンSSOPの2種類があり、
型名の末尾が、ぞれぞれQとLになります。
 FT232RNQ :32ピンQFP (旧VerはFT232RQ)
 FT232RNL  :28ピンSSOP(旧VerはFT232RL)

FT232RNのパッケージ形状

各ピンの機能

FT232RNの各ピンですが、機能ごとに大別すると、
USB信号、UART信号、CBUS信号、電源信号、その他に分かれます。

<USB信号>
USBデータ信号D+とD-が接続されるピンで、
このうち、D+と繋がるUSBDPピンは、IC内部でプルアップ抵抗1.5kΩが接続されており、
IC起動後に内部LDOからの3.3Vにプルアップされます。

これはUSBの規格で、D+がプルアップすることで、
ホスト(PC)がUSBデバイス(ここではFT232RN)をFull-Speedデバイスと認識できます。
(ちなみに、D-をプルアップするとLow-Speedデバイスになります)

USB信号(D±)はNRZI方式でデータ伝送されます。
NRZIとはNon Return to Zero Invertの略で、直訳すると「非ゼロ復帰反転」ですが、
これは、ビット毎に一度電圧をゼロに復帰(リセット)せず、
ビットデータが0の時のみ電圧を反転させることを意味します。
 USB通信の仕組みについてはUSBの基礎知識で解説しています。

FT232RNのUSB及びUARTインターフェース信号の説明

<UART信号>
UART(ユーアート)とは、Universal Asynchronous Receiver Transmitterの略で、
「汎用 非同期式 受信機 送信機」です。

これは、クロック信号を使用せず、送信側と受信側とで、
互いにタイミングとスピードを合わせて通信するため、調歩同期式とも呼ばれます。

UART信号8本のうち、基本信号のTXD,RXD,RTS#,CTS#を主に使用し、
他の信号はモデム制御信号なので、最近ではあまり利用されていません。

また、RTS#とCTS#はフロー制御信号です。

フロー制御とは、機器がデータ受信準備前にデータを送られてくることを防ぐため、
相手に送信を待たせるように制御することで、
この2つの信号を用いたハードウェア・フロー制御と、
ソフトウェアを用いたソフトウェア・フロー制御の2種類があります。

ハードウェア・フロー制御
 RTS#で相手に送信許可を送り、これが送信相手のCTS#に入力されることで、
 送信相手は送信が可能となる。

ソフトウェア・フロー制御
 データ中の2文字(XON/XOFF)を送信中断と再開に使うことで、
 フロー制御信号を省略できる。

送受信機器共に処理速度が十分速く、受信データの取りこぼしがないか、
取りこぼししても、他の方法で回避できる場合はフロー制御をしない場合もあります。 

フロー制御を行わない場合は、RTS#とCTS#を短絡させることで、
送信要求→送信許可が直ぐに実行されます。

UART通信については下記記事で解説しています。

<CBUS信号>
CBUS0~4の5本の信号に様々な機能を割り当てることができます。
以下の表にある初期設定の状態から、オプション設定表に従い、
必要な機能信号を任意のピンに変更できます。

FT232RNのCBUS信号の説明

設定変更は内蔵EEPROMに保存された設定値を書き換えることで行います。
書き換える方法は2種類あり、ひとつはD2XXドライバのコマンドを用いるか、
EEPROM書込みツールFT_Progを使って書き換えます。

D2xxドライバはFTDI製IC専用のUSBドライバで、
PCにインストールすることで、コマンドが利用可能になります。

FT_ProgはFTDIサイトから無償で入手できるソフトで、
FT232RNの各種設定変更を簡単に行うことができます。
 ※D2XXドライバやFT_Progについては、FTDI製ICの種類と使い方で解説してます。

FT232RNのCBUS信号のオプション設定の説明

<電源信号>
IC用電源ピンVCCには3.3V又は5V電源を供給させることができます。
FT232Rでは内蔵発振器を利用するには5V電源にする制約がありましたが、
FT232RNは3.3Vでも内蔵発振器が利用可能となりました。

FT232RNの電源信号の説明

VCCIO(I/O用電源)に入力する電圧がUART信号とCBUS信号の電圧レベルになるので、
3V3OUTピンに接続すれば3.3Vレベル、
VCCピンに接続すればIC電源が5Vなら5Vレベルになります。

内蔵3.3V電源からの出力である3V3OUTピンには、
デカップリング コンデンサとして0.1uFのセラミックコンデンサを接続する必要があります。
 ※FT232Rのデータシートでは33nFと記載されていましたが、FT232RNでは100nF(0.1uF)に変更されています。

電源供給の方法は、USBコネクタ経由でDC5Vをホストから供給するバスパワーと、
自回路内に用意した電源から供給するセルフパワーの2種類があります。
詳しくは、この後の電源回路設計で説明します。

<その他の信号>
RESET#入力は外部からリセットさせる場合に使用しますが、
リセットジェネレータが内蔵されているので、基本的には使用せずにVCCに接続します。
(セルフパワーの場合、USBコネクタを抜いたらICを停止させる際に使用)

FT232RNのRESET及びOCSI信号の説明

OSCIとOSCOは外部クロックを利用する以外は未接続のままにします。

通常は内蔵発振器を使用するケースが殆どですが、ノイズ低減等の理由により、
外部で水晶発振器を使う場合は、クロック入力電圧に上限があり、
FT232Rは3.63Vでしたが、FT232RNは1.98Vに低下しているので注意が必要です。

(水晶振動子を使用する場合は関係ありません)

水晶発振器や水晶振動子への接続方法については後述します。



FT232の内部構成

FT232RNの内部回路について説明します。

FT232RNの内部回路ブロック図

3.3V LDOレギュレータ
 USBトランシーバー用のDC3.3V電源を生成します。
 また、3V3OUTピンから外部回路用に最大50mAまで供給できます。
 (但し、電源投入からUSBエニュメレーション完了まで25mA以下に制限される)

USBトランシーバ
 USB 1.1及びUSB 2.0のFull-Speedモードに対応し、
 USBDPピンをD+信号、USBDMピンをD-信号に接続します。

 また、USBの規定で必要とされている両信号(D±)への直列終端抵抗と、
 USBDP(D+)ピンには内蔵プルアップ抵抗1.5 kΩが繋がっています。

 プルアップ抵抗は内蔵LDOの3.3Vに接続されており、D+がプルアップされていることで、
 ホストはFull-Speedデバイスが接続されていることを認識できます。
  ※USB信号線の処理については、USB通信の基礎知識で解説しています。

内蔵12MHz発振器
 12MHzの基準クロックを生成し、逓倍/分周回路へ入力されます。
 12MHzクロック信号は、SIE、USBプロトコル エンジン、
 UART FIFOコントローラの基準クロックとしても使用されます。

 外部発振器からのクロック信号を使用する場合は、OCSIピンから入力します。
 水晶振動子を使用する場合は、OSCIとOSCOピンに接続します。

逓倍回路/分周回路
 内蔵発振器からの12MHzクロックを基に2及び4逓倍した24MHz、48MHzと、
 1/2に分周した6MHzの基準クロック信号を生成します。

 48Mzは、USB DPLL 、ボー レート ジェネレータで使用し、
 24MHzや6MHzはCBUS出力のオプション設定で外部出力用のクロック信号に用いられます。

USB DPLL(デジタルPLL)
 PLL(Phase Locked Loop)とは位相同期のことで、
 USBから受信した NRZI形式のデータ信号をクロック信号と同期してデータを取り出し、
 シリアル インターフェイス エンジン (SIE) に送ります。

シリアル インターフェイス エンジン (SIE)
 USB DPLLによってクロック信号に同期して取り出したデータ信号はバス形式(パラレル)なので、
 ここでシリアル変換されます。

USBプロトコル エンジン
 USB 2.0の仕様を満たすようにデータ転送制御を行います。

FIFO RX バッファ (128 バイト)  USB→UART
 USB側(ホスト)からの受信データを格納します。
 格納されたデータはUART FIFO コントローラによりUART側に送られます。

FIFO TX バッファ (256 バイト)   USB←UART
 UART 側(デバイス)からUSB側に送信するデータを格納します。
 格納されたデータはホストからの送信要求を受けたら、SIEに送られます。
  ※ここでのRX(受信)とTX(送信)は、USB(ホスト)側に対する方向になります。

UART FIFO コントローラ
 FIFO RX/TX バッファと、UARTコントローラ内にある送信/受信レジスタ間の
 データ転送を管理します。

内蔵EEPROM
 ベンダID、プロダクトID、シリアル番号などのUSBデバイス情報と、
 ICの各種設定内容が保存されます。

 EEPROMの内容を読み書きするには、D2XXドライバのコマンドを用いる方法と、
 書込みツールFT_Progを使う方法の2通りがあります。

ボーレート ジェネレータ
 48MHz クロック信号を基に、UARTのボーレート(転送速度)用のクロックを生成します。

 ボーレートはVCPドライバ使用時はPCのデバイスマネージャーの設定画面で、
 D2XXドライバ使用時はコマンド(FT_SetBaudRate)をユーザプログラム上で使用することで、
 設定することができます。
  ※FTDI専用ドライバであるVCPとD2XXドライバの説明はFTDI製ICの種類と使い方で解説しています。

UARTコントローラ
 UART信号の制御を行います。基本信号の4つ(RXD,TXD,RTS,CTS)以外に、
 モデム制御信号のDSR、DTR、DCD、 RI もサポートしています。

 ICの設定により、8つの各UART信号は論理を反転させたり、
 ドライブ能力(出力電流)を4mAから12mAにアップさせることができます。

 ICの設定はD2XXドライバのコマンド又は設定ツールFT_Progで行うことができます。

リセットジェネレータ
 電源投入時にICの内部回路にパワーオン リセット信号を生成し、
 リセットが完了するまで、USB信号(D+,D-)の出力状態を共にLレベルにします。

 これにより、ICの起動完了までホストはデバイス(FT232RN)を認識できないため、
 起動直後にUSB通信が不安定状態になることを回避します。

 また、RESET#入力を使用すると、外部からFT232RNをリセットできます。
 RESET#入力未使用の場合は VCC に接続するか、未接続のままにします。



FT232RNの特殊機能

FT232RNは動作モードを変更することで、UART信号ピンをGPIOピンに変更して、
8bitパラレルインターフェース機能を持たせたり、CBUS信号ピンに機能信号を割り当てることで、
LED制御や外部回路を制御することができます。

FT232RNのBit BangモードとCBUS信号

ビット バング(Bit-Bang)モード

UART信号やCBUS信号に使用されているピンを
GPIO(汎用入出力信号)に切り替えて使用できる機能で、
D2XXドライバのコマンドFT_SetBitModeを使用することで本モードに変更できます。

モードの切替えはICの起動時だけでなく、動作中もできるので、
例えば、FT232RNをFPGAと接続して使用する場合、
GPIO信号でFPGAのコンフィグレーション設定を行い、
その後、UART信号に切替えることで、FPGAとPC間をUSB通信させることができます。

ビット バング モードでの各ピン(D0~D7とCBUS0~3)の入出力制御は、
D2XX ドライバのコマンド(FT_SetBitModeやFT_Writeなど)で行います。
(CBUS4は出力専用ピンなのでビットバングモードには使用不可)

 コマンドの使用方法の概要はFTDI製ICの種類と使い方で解説してますが、
 詳細はFTDIサイトより入手できるD2XX Programmer’s Guideを参照下さい。

ビット バング モードには次の 3 種類があります。

<非同期ビット バング モード>
 8個のUART信号をD0~D7のGPIO(汎用入出力信号)として使用するモードで、
 8bitのデータバス信号として扱うことができます。

非同期Bit-Bangモード説明図

各ピン(D0~D7)の入力or出力の設定はFT_SetBitModeコマンドで行います。

また、GPIOピンから信号の読み取り(RD#)と、GPIOピンへの書込み(WR#)の両信号を
ストローブ信号として外部に出力させることもできるので、
外部回路はFT232RNにおけるGPIOの読み書きタイミングを把握できます。 

(RD#、WR#は、CBUS0~3の任意のピンに設定できる)

GPIOピンへの出力はFT_Writeにより、送信バッファにデータ(1バイト)を書き込むと、
そのデータのうち、出力に設定したピンのみが出力されます。

FT_Writeは一度に複数バイトまとめて書込むと、
FT_SetBaudRateにて設定した周期(ボーレート)で1バイト(8bit)づつ、
GPIOピンに順次出力されます。

送信バッファが空になると、GPIOピンは最後に出力した値を保持し続けます。

ピンからの入力については、出力ピンも含めた全8ピンの情報が1バイトデータとして、
FT_SetBaudRateにて設定した周期(ボーレート)で受信バッファに格納されます。

受信バッファのデータはFT_Readによって一度に複数バイトまとめて読み出すことができます。
(受信バッファのデータは一杯になると破棄されます)
 
この非同期モードでは、ピンへの出力とピンからの入力は非同期で行われるため、
出力データを書込み後、すぐにピン情報を読み出しても、値が一致しない場合があります。 
 

 ※ピン情報の読み出しには、FT_Read以外にもFT_GetBitModeコマンドがあり、
  その時点の最新のピン状態(1バイト)を直接取得できますが、
  処理時間がかかることがあり、必ずしもコマンド発行直後のピン状態では無い場合があります。

<同期ビット バング モード>
 基本的な動作は非同期ビット バング モードと同じですが、
 ピンへの出力とピンからの入力が同期しています。

同期Bit-Bangモード説明図

ただし、厳密には送信バッファに出力データの書込みを行う前に
書込み前のピンの状態を受信バッファに格納します。

従って、FT_Writeで複数バイトのデータを出力した場合、
FT_Readでデータを読み取ると、最後に出力した1バイトのデータだけ抜けたものになります。

つまり、データをN回送信した場合、
1番目の受信データは送信する以前のデータ(ピンの初期状態)になるので、
N番目の受信データ=N-1番目の送信データとなります。

 例1:データを読み取ると、最後の送信データが抜けるケース
  ①ピンの初期状態 0xFF
  ②FT_Writeコマンドを実施し、0x55、0xAAを送信バッファに書込み  
  ③ボーレートの周期でピンの状態は 0x55 になり、次に 0xAA になる
  ④FT_Readコマンドを実施し、受信バッファから読み出すと
   その値は 0xFF、0x55となる。(最後の0xAAが抜けている)

 例2:最後のデータを2回送信することで、最後の送信データも読み取れるケース
  ①ピンの初期状態 0xFF
  ②FT_Writeコマンドを実施し、 0x55、0xAA、0xAA を送信バッファに書込み
   (最後に送信したバイトを、もう一度書込む)
  ③ボーレートの周期でピンの状態は 0x55 になり、次に 0xAA になる
   (0xAAが2回上書きされるので、ピンの状態としては0xAAのまま)
  ④FT_Readコマンドを実施し、受信バッファから読み出すと
   その値は 0xFF、0x55、0xAAとなる。(最後の0xAAも読み取れる)

<CBUSビット バング モード>
 CBUS信号のオプション設定でCBUS0~3をGPIO(CBitBang I/O)にした場合に
 CBUS0~3のGPIO(汎用入出力信号)として使用するモードで、
 4bitのデータバス信号として扱うことができます。
 CBUS4は出力専用ピンで、ビット バング モードに設定できません

CBUS Bit-Bangモード説明図

3種類あるビットバングモードは、どれか一つしか設定できないため、
非同期又は同期ビット バング モードを使用する場合は、CBUSビットバングモードは使えません。

また、非同期/同期ビット バング モードはドライバのコマンドによりモード変更することで、
使用可能になりますが、CBUSビット バング モードの場合、コマンドによるモード変更の前に、
内蔵EEPROMを書き換えて、CBUS信号の設定をGPIO(CBitBang I/O)にしておく必要があります。

CBUS ビット バング モードによるデータ転送は、
FT_SetBitMode と FT_GetBitMode コマンドを使うため、
1 バイト(実際はCBUS0~3の4ビット)単位しか送受信データをセットできません。

このため、複数バイトデータをまとめて転送するFT_Write や FT_Readコマンドを使用する
非同期/同期ビット バング モードよりも転送速度は遅くなります。

ビット バング モードの使用方法の詳細は、FTDIアプリケーションノート
AN232R-01 Bit Bang Modes for the FT232R and FT245Rを参照して下さい。



電源回路設計

FT232RNへの電源供給方法はUSBコネクタ(ホスト側)から電源を供給するバスパワーと、
自回路の電源から供給するセルフパワーの2種類あります。

バスパワー回路

ホストから電源を供給するため、USBコネクタのVBUSピンからのDC5Vを使用します。

FT232RNのバスパワー回路

FT232RNや外部回路で発生したノイズが、USB ケーブルを経由してホストに入るのを防ぐため、
USBコネクタのVBUSピンとFT232RNのVCCピン間にフェライトビーズを接続します。

ここでは一例として、村田製作所製BLM18PG600SN1D(定格1A、100MHz時インピーダンス60Ω)
挙げておきますが、フェライトビーズは外部回路の消費電流に応じて選定して下さい。

そして、フェライトビーズと10nF コンデンサは、USB コネクタのできるだけ近くに配置します。

次にバスパワーにする場合、以下の基本ルールに従う必要があります。
(以下にある「デバイス」とは、FT232RNだけでなく5V電源を使用する周辺回路も含みます)

・USBコネクタ接続時、USBエニュメレーション(※)が完了するまで、
 デバイスの消費電流は100mA以下にする必要がある。

  ※USBエニュメレーションについては、記事前半の「FT232Rとの違いについて」で説明済

・USBエニュメレーション後は500mAまで供給できるが、
 バスパワータイプのUSBハブに接続する場合は100 mAまでとなる。

・USBサスペンド(スリープ) モードの場合、デバイスの消費電流は2.5 mA 以下にする。

消費電流については、USB記述子とよばれるデバイス情報に記載することでホストに伝えます。
USB記述子は内蔵EEPROMに保存されるため、EEPROM書込みツールFT_Progを用いて
デバイスの消費電流値を書き込んでおく必要があります。
 ※FT_Progによる書込み方法はFTDI製ICの種類と使い方で解説してます。

バスパワー回路(外部電源ON/OFF回路つき)

デバイスの消費電流が100mA以上になる場合、前述したバスパワー使用時のルールを守るため、
外部回路への電源供給をON/OFFする回路を設けることで、
USBコネクタ接続時やスリープ時におけるデバイスの消費電流を低減させます。

FT232RNのバスパワー回路(外部電源ON/OFF回路つき)

CBUS信号の一つ(ここではCBUS3)をPWREN# 出力に設定し、
10kΩ抵抗でVCCIOにプルアップさせることで、
PWREN#は起動時やスリープ時はH、通常動作時はL出力になります。

外部回路に使用されるICが外部信号により待機状態(低電力モード)にする機能があれば、
PWREN#を入力することで、消費電流を低減させることができますが、
そのような機能が無い場合、P-ch MOSFETを使用して外部回路への電源をON/OFFさせます。

この回路では、PWREN#がP-ch FETのゲートに入力されているので、
通常動作時はPWREN#がLとなり、FETがオンして外部回路へDC5V電源が供給されます。

起動時(USBエニュメレーションが完了するまで)とスリープ時は、PWREN#がHとなるため、
FETがオフし、外部回路への電源が遮断されることで低消費電流にできます。

使用しているFETはInfineon(※)製IRLML6402(VDS=-20V、IDS=-3.7A)です。
これは、FT232RNのデータシートに使用例として挙げられているもので、
SOT-23の小型化パッケージで、ON抵抗も50mΩと小さく、小電力用スイッチに適しています。
 ※元はInternational Rectifier(インターナショナル・レクティファイア)だったが、
  ドイツの Infineon(インフィニオン)に吸収されている。

また、FETがオン時、電源ラインに電流サージが発生すると、
FT232RNの動作に影響したり、電源供給元であるホストがリセットされる可能性があるため、
FETが急激にオンしないように、1kΩ抵抗と0.1uFコンデンサを用いて、
ゲート信号の変化を緩やかにするソフトスタート回路を設けています。

この外部電源ON/OFF回路を使用する場合、FT232RNの設定において、
USBサスペンド(スリープ)時に I/O ピンをプルダウンさせる設定を有効にします。
これにより、電源オフとなった外部回路の入力にHレベル信号を入れない様にします。

<注意点>
本回路例は外部回路が5V系回路の場合です。
外部回路が3.3V系の場合は3V3OUTピンから3.3V電源を供給しますが、
起動時やサスペンド(スリープ)モード時は3V3OUTからの3.3V電源供給が停止するため、
PWREN#のプルアップ電源には3V3OUTピンは使用できないことから、別電源を用意する必要があります。

バスパワー回路(外部回路電源電圧3.3V/5V選択機能つき)

ジャンパー切替により、外部回路用の電源電圧を3.3V又は5Vに選択することで、
外部回路とのインターフェースを3.3V系にするか、5V系にするか切替できます。

FT232RNのバスパワー回路(外部回路電源電圧3.3V/5V選択機能つき)

但し、3.3V系の場合、外部回路に供給可能な電流は50mA以下となり、
電源投入からUSBエニュメレーション完了までは25mA以下に制限されます。

この回路ではスリープ中はPWREN#がHになり、SLEEP#がLになるので、
どちらかの信号を利用して外部回路の電源をオフさせ、消費電流を2.5mA以下にします。
それが不可能な場合は、先程の外部電源ON/OFF回路を使用します。

セルフパワー回路

セルフパワーは、外部回路に設けた電源からFT232RNと外部回路に電源を供給します。
VBUSピンからのDC5VはFT232RNへのRESET#入力のプルアップ用電源としてのみ使用します。

FT232RNのセルフパワー回路

USBコネクタ未接続時はRESET#がLになることで、FT232RNをリセット状態に保持し、
USBコネクタが接続され、ホストの電源がオンすると、4.7kΩと10kΩの抵抗分圧によって
REST#ピンが約3.3Vとなり、H入力されてリセットが解除されます。

リセット解除で、USBDPピンに接続されている1.5 kΩ内蔵抵抗が 3.3Vにプルアップされるので、
ホストはFull-Speedデバイスが接続されたことを認識します。

バスパワー時と同様に、USB記述子に電源情報を記載します。
ここでは、ホストからの電源供給は無いことを伝えるため、
FT_Progを用いて、デバイスの消費電流値をゼロに設定します。
 ※FT_Progによる設定方法はFTDI製ICの種類と使い方で解説してます。

リセット状態では、UART信号ピンはハイ・インピーダンス(切断)状態になります。
また、FT232RNへの入力ピンはVCCIOへの200 kΩプルアップ抵抗が内蔵されているため、
外部回路から信号入力されない限り、リセット解除後はHレベルになります。



周辺回路設計

外部クロック回路

FT232RNの初期設定は内蔵発振器を使用するモードになっていますが、
内蔵発振器はPLL(位相同期)回路で発振するためノイズが大きいことから、
水晶振動子や水晶発振器を接続した外部クロックを利用する場合があります。

※旧VerのFT232Rでは電源電圧VCCが3.3Vだと内蔵発振器が使えなかったことから、
 3.3V電源で動作させたい場合でも、外部クロックを使用する必要がありました。

外部クロックを使用する場合は、内蔵EEPROMに保存されている
FT232RNのクロック設定をFT_Progで変更(外部クロック有効化を選択)します。
(外部クロック有効時、発振器や振動子が未接続の場合、FT232RNは動作しません)

 ※クロック設定を含めたEEPROMの書き換えについては、
  FTDI専用USBドライバであるD2XXドライバをPCにインストールすることで、
  ドライバのコマンドをC言語などのプログラムで使用することでもできます。
  詳しくは、FTDI製ICの種類と使い方で解説しています。

外部クロックを使用するにはOSCIとOSCOピンを使用します。
(内蔵クロック使用時は両ピンとも未接続にする)

<水晶振動子を使用する場合>
 水晶振動子を使用する場合は、OSCIピンとOSCOピンに接続します。
 周波数は12.0MHz ± 0.5%を選定し、ATカット型が推奨されています。

FT232RNに外部水晶振動子を使用する場合

OSCI/OSCOピンには負荷コンデンサが内蔵されているため、
基本的には水晶振動子用のコンデンサを外部に設ける必要はありません。

(OSCIは6.27pF、OSCOは30pFが内蔵)

<水晶発振器を使用する場合>
 水晶発振器からの外部クロックをOSCIピンに入力し、OSCO ピンは未接続にします。
 周波数は12.0MHz ± 0.5%にします。

FT232RNに外部水晶発振器を使用する場合

外部クロックの入力電圧ですが、旧VerのFT232Rは3.3Vを入力できましたが、
FT232RNでは1.98V 未満にする必要があるので注意が必要です。

 詳細はFTDIテクニカル ノートTN_183 FT232RN / FT245RN Errata Technical Noteを参照。

LEDによるUART通信状態表示回路

先述したCBUS信号の機能設定により、LEDを使ってUART通信状態を表示できます。

FT232RNのUART通信LED点灯制御回路

CUBS信号ピンをTXLED#、RXLED#に設定すると、UARTデータが送信または受信時、
信号ピンがトライステート(オープン)状態からLレベル状態になり、
送受信中は一定間隔でオープンとLレベルを繰り返すパルス動作を行うことでLEDが点滅します。

TX&RXLED#に設定すると、送受信共にパルス動作が行われるので、LED1個で兼用できます。

両パルス動作ともワンショット動作なので、データ転送時間に関係なく、
一定時間Lレベル状態となることから、わずかな転送時間でもLEDは点灯します。



FT232RNの回路例

USB通信からRS-232C等の各種シリアル通信への変換回路と、
マイコンにUSB通信機能を持たせるための回路を紹介します。

<注意>
抵抗値等の回路定数については、メーカーのデーターシート等から引用したものであり、
動作を保証するものでは無いため、参考程度として下さい。

回路例1:USB ー RS232C変換回路

USBコネクタからの通信をRS-232C信号に変換してD-sub9ピンコネクタに接続する回路です。
RS-232CインターフェースICの定番であるMAX232(※)を使用し、
FT232RNからの5V系UART信号をRS232レベル(±12V程度)に変換します。
 ※製造メーカだったMAXIM(マキシム)社はアナログデバイスに吸収されており、
  同型名のICはテキサスインスツルメンツ等、セカンドベンダが数多く存在します。

FT232RNを使用したUSB-RS232C変換回路

ここでは、CBUS0とCBUS1をTXLED#とRXLED#に設定することで、
UART送受信時にLEDが点滅するようにしています。

USBコネクタについては、USBのルールでホスト側をTYPE-A、デバイス側をTYPE-Bにするため、
デバイス側回路となる本例ではTYPE-Bコネクタを使用していますが、
Micro-BやMini-Bコネクタも使用できます。

ホスト側でもデバイス側でも使用できるTYPE-Cコネクタを使用する場合は、
CC1とCC2ピンを5.1kΩでプルダウンすることで、デバイス側であることをホストに伝えます。
後述する他の回路例についても、TYPE-Cコネクタを同様に適用できます。

 ※各種USBコネクタのピン配置と信号接続の詳細はUSB通信の基礎知識で解説しています。

本回路では、FT232RNのピン機能説明で述べたように、UART信号8本のうち、
主に使用される基本信号(TXD,RXD,RTS#,CTS#)のみをD-subコネクタに接続していますが、
フロー制御信号(RTS#,CTS#)を使用しない場合は、この2本を短絡させます。

モデムを接続するような場合は、UART信号9本全てを接続できるICとして、
ここではマックスリニア製(※)のSP213EHを使用した場合を示します。
 ※SPから始まるICは元々、Sipex(サイペックス)製でしたが、
  その後、Exar社を経てMAXLINER(マックスリニア)に事業譲渡されています。

FT232RNを使用したUSB-RS232C変換回路(RS-232C信号9本全て結線する場合)

このSP213EHはシャットダウン入力(SD#)があるので、
CBUS信号をSLEEP#出力に設定することで、スリープ時にICを停止させて低電力状態にできます。

MAX232やSP213H等のRS-232CインターフェースICはチャージポンプ回路を内蔵しており、
5V電源から通信に必要な±12Vを生成しているため、

チャージポンプ用コンデンサの耐圧は16V以上にします。

チャージポンプ回路については下記記事で解説しています。

回路例2:USB ー RS485変換回路

MAX485を使用して5V系UART信号を差動信号に変換し、2線式のRS-485通信回路を構成します。

FT232RNを使用したUSB-RS485変換回路

差動信号は信号AとBの電位差でデータを転送する方式で、
2線式はデータの送信と受信を同じ信号線で行うため、送受信が同時にできない半二重通信です。

送受信線を分けることで同時送受信を可能にした4線式(全二重通信)もありますが、
RS-485では2線式が一般的で、4線式が主流のRS-422通信回路は後で紹介します。

送信と受信線が共通のため、MAX485ではDE(ドライバ・イネーブル)がHの時に送信機が有効になり、
それ以外(L時)は受信機が有効となります。

また、RE(レシーバ・イネーブル)はLの時のみ、RO(データ出力)から出力され、
それ以外はハイインピーダンス(回線切断)状態となります。

ここで、CBUS信号をTXDEN(データ送信時にH(※))と、 PWREN#(通常モード時にL)に設定しており、
FT232RNからUART側にデータを送信時にTXDEN=H=DEとなるので、
MAX485がデータをRS-485側に送信し、FT232RNがスリープ状態の時はPWREN#=Hとなり、
MAX485からの信号電圧がFT232RNに入力されないようにしています。

 ※TXDENはUART信号におけるスタートビットの1bit前からHになり、ストップビットと同時にLになります。

RS-485は複数台接続が可能な通信方式で、マルチドロップ接続が可能です。
この時、通信回線は各装置間で数珠つなぎに接続しますが、
通信信号の安定化のため回線の両端において、
差動信号間に抵抗を接続することで信号線の反射を抑制する終端処理を行います。

終端処理に使用する抵抗を終端抵抗と呼び、一般的に120Ωがよく使用されます。
本回路が回線の終端に接続された場合は、ジャンパーをショートし、終端抵抗を接続します。

回路例3:USB ー RS422変換回路

RS-422は4線式が主流なので、送信と受信で個別の入出力ピンを持つSP491を使用しています。
このICのREとDEピンは、先程のMAX485と同じ機能を持っています。
(SP491の最大転送速度は5Mbpsですが、本回路ではFT232RNの上限である3Mbpsに制限されます)

FT232RNを使用したUSB-RS422変換回路

送信と受信信号は独立しているため、DEピンへの入力はTXENではなくSLEEP#を使用し、
通常状態(SLEEP#=H、PWREN#=L)時はDE=H、RE=Lとなることで送受信機ともに有効となり、
スリープ状態(SLEEP#=L、PWREN#=H)ではその逆で、送受信機を無効にします。

回路例4:マイコンのUSB通信回路

一般的なマイコンに搭載されているUART通信をUSB通信に変換することで、
マイコンにUSB通信機能を持たせることができます。

FT232RNを使用したUSB-マイコン間UARTインターフェース回路

UART信号の配線ですが、マイコンとの接続はクロスさせます。
(FT232RNのTXDとRTS#を、ぞれぞれマイコンのRXDとCTS#に接続し、他の信号も同様に行う)

本例では、ハードウェアフロー制御を行う場合として、RTS#とCTS#を使用していますが、
フロー制御を省略できる場合は、回路例1と同様にFT232RNのRTS#とCTS#をショートさせ、
マイコンにはTXDとRXDのみ接続します。

ここではCBUS0 をCLK12(12MHzクロック)に設定し、マイコンへのクロック信号にしていますが、
スリープ時はクロックが停止するので注意して下さい。

低電力モードになる入力ピンがあるマイコンの場合、
PWREN#(もしくはSLEEP#)を入力することで、スリープ時の消費電流を小さくできます。