2016年11月29日 | 公開。 |
2016年8月にスイッチサイエンスからFTDI USBシリアル変換アダプター Rev.2(以後、Rev.2基板と略記します)が発売されました。この商品は、旧製品のFTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)(以後、Rev.1基板と略記します)の形状をスリム化して低価格化した商品ですが(写真1参照)、信号レベルがRev.1基板と完全に互換ではありませんので注意が必要です。
この記事では、Rev.2とRev.1の回路構成の違いと信号レベルの違いについて解説します。
Rev.2基板は、FTDI社のFT231XSを使用したUSBシリアル変換器です。パソコンのUSBポートに接続すると、ArduinoなどのマイコンのUARTと通信できる様になります。
基本的にはSparkFun社のFTDI BASICの互換品ですが、信号電圧が5Vまたは3.3V固定のFTDI BASICと比較すると、信号電圧がジャンパピンの設定で5Vと3.3Vが切り替えられる様になっている点が改良されています。
Rev.2基板は、Rev.1基板をスリム化し、低価格化した物ですが、Rev.1基板ではUSBシリアル変換用のICにFT232RLを使用していた点でも異なります。
スイッチサイエンスの説明によると、Rev.2基板はRev.1基板より基板の幅が狭くなって、ACジャックを取り付けたArduino Proでも使用できる様になったそうです。
Rev.2基板に使用されているFT231XSとRev.1基板に使用されているFT232RLは、共にFTDI社のUSBシリアル変換ICです。パソコンにインストールするドライバーは共通ですので、ソフト的には互換性があります。
しかし、信号レベルについては、両者で差があります。FT232RLの場合ロジック用の電源(VCCIO)の電圧範囲が1.8V~5.25Vとなっているのに対し、FT231XSの方は1.62V~3.63Vになっています。FT231XSを使う場合、TX信号に5Vが出力できません。(RX信号の方は5Vトラレントになっています)
スイッチサイエンスは、Rev.2基板を開発するにあたって、より新しい型番のFT231XSを採用する事で、部品が製造中止になるまでの期間を確保すると共に、低価格化を図ったものと思われますが、その代償として、5Vモードにしても、TX信号線の出力電圧が3.3Vになってしまいました。
参考:2016年11月時点の秋月電子でのFT231XSの価格は210円ですが、FT232RLは400円もします。
Rev.1基板の回路図(図1)とRev.2基板の回路図(図2)とを比較すると、2か所、大きな違いがあります。以下、それぞれの違いについて説明します。
図1を見れば分かる様に、Rev.1基板では、FT232RLのVCCIOピンの電圧が、JP1の設定により5Vと3.3Vに切り替えられる様になっています。よって、5Vのモードでは、TX出力(JP2の3番ピン)の電圧もH出力時には5Vになります。
一方でRev.2基板では、図2を見れば分かる様に、FT232XSのVCCIOピンの電圧が3.3V固定になっています。よって、5Vのモードにしても、TX出力のH出力時の電圧が、3.3Vになってしまいます。
実際にTX出力の電圧波形をオシロスコープで観察した結果を図3(Rev.1基板)と図4(Rev.2基板)に示します。これらの波形は、Rev.1基板およびRev.2基板を5Vモードに設定した上で、Tera Termで通信速度を9600bpsに設定して'a'の文字を送信する事により出力しました。
図3を見て分かる様に、Rev.1基板のH出力時の電圧が約5Vなのに対して、図4のRev.2基板のH出力時の電圧が約3.3Vになっています。
ところで、図5はATmega328P(Arduino Unoに使われているマイコン)のデータシートを一部抜き出したものです。H信号の電圧の下限は、VCC(電源)の0.6倍である事が分かります。VCC=5Vの場合は、3V以上の電圧を入力しなければならない事が分かります。Rev.2基板のTX出力は3.3Vと、一応この基準を満たしてはいますが、ノイズマージンが少なく、誤作動しやすい条件で動作する事になる事が分かります。
図1と図2を比較すると分かりますが、Rev.1基板のDTR出力端子はFT232RLに直結されているのに対し、Rev.2基板のDTR出力はMOS-FETを使ったレベル変換回路が入っています。DTRはスケッチを書き込む際に、Arduino(あるいは互換機)にリセットを掛けるために使われる信号線ですが、この信号レベルが3.3Vだと、5V動作時にArduinoに正しくリセットがかけられない事からこのようなレベル変換回路が入っているのだと推測されます。このレベル変換回路のおかげで、5Vモードで動作している時に、DTR出力のH出力も5Vになります。
図6と図7に、それぞれRev.1基板とRev.2基板のDTR出力の電圧波形を示します。これらの波形は、Tera TermでRev.1基板あるいはRev.2基板に接続した瞬間に、DTR出力がHからLに変化する様子を観察したものです。なお、JP1の設定は、Rev.1基板、Rev.2基板ともに5Vモードにして測定しました。
これらの波形を見ると分かる様に、H出力時の電圧は、Rev.2基板の場合でも、Rev.1基板と同様、約5Vになっているのが分かります。
この波形だけ見ると、レベル変換回路のおかげで電圧の互換性が増して良い様に見えますが、レベル変換回路には副作用もあります。
図8は、Rev.2基板のDTR出力に3.3kΩの負荷抵抗RLをGNDとの間に接続した場合の、H出力時の等価回路です。H出力時はQ1のMOS-FETがOFFになっているので、Q1は実質ダイオード1個と等価になります。DTRは10kΩのR6でプルアップされている状態になりまが、この抵抗は3.3kΩの負荷抵抗を十分ドライブするだけの駆動能力がありません。よって、負荷抵抗RLはR6と共ににQ1のボディーダイオードにより駆動され、その結果、DTRの出力電圧は3.3Vからダイオードでの電圧降下0.7Vを引いた2.6Vになります。
実際に出力電圧の低下を観察したのが図9と図10です。
図9はRev.1基板のDTR出力に3.3kΩの負荷抵抗をつないだ時の波形ですが、無負荷時(図6)と同様、H出力時には約5Vが出力されている事が分かります。
図10はRev.2基板のDTR出力に3.3kΩの負荷抵抗をつないだ時の波形ですが、無負荷時(図7)とは異なり、H出力時の電圧が約2.6Vにまで低下している事が分かります。
このRev.2基板のDTR出力の駆動能力の問題で、実際にArduino用ブートローダ/スケッチライタキットでスケッチが書き込めない現象が観察されました。Rev.2基板でArduino用ブートローダ/スケッチライタキットを動作させるには、Arduino用ブートローダ/スケッチライタキットを一部改造する必要がありました。
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |
この様に、一部の回路ではRev.1基板とRev.2基板の非互換性が問題になる場合があり、注意が必要です。(Rev.1基板の方が、FTDI BASICとの互換性が高く、無難に使えます)
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |