以前に製作したデジタルモード用インターフェースで、設計をミスしたかと一瞬冷やっとしました。
今後同じような間違いをしないように、備忘録として書き留めておきます。
製作記事としては残していませんが、一昨年にデジタルモード用インターフェース Ver.2.6を作り、
現在主に使用しています。
USB ーシリアル変換 IC はそれまで FT232RL を使用してきましたが、
FT231XS の方が価格が安く、必要機能は揃っているということで、IC を変更しました。
最近 FT231XS のデータシートを見る機会があり、
FT232RL と FT231XS の I/O 電圧範囲が異なることに気がつきました。
FT231XS は I/O が 1.8 〜 3.3 V になっており (FT232RL は 1.8 〜 5 V)、
シリアル側の回路を 3.3 V 系に変更する必要があります。
その点を見落としていたのか、それとも設計時点で把握し敢えてそうしていたのか覚えていませんが、
シリアル側の回路は 5 V 系のままにしています。

下側の回路は、RS-232 トランシーバに MAX3232を使用しており、
VCC を VBUS (5 V) に接続しています。
FT231XS の I/O は 3.3 V 系、MAX3232 の I/O は 5 V 系と、
I/O の電圧が異なる IC を直接接続しています (その割には、今まで誤動作無く使えている)。
FT231XS の出力の Hi レベルは 3.3 V で、MAX3232 の入力がCMOS レベルだったとすれば、
Hi レベルの閾値下限は Vcc × 0.7 (= 3.5 V) になるので、
3.3 V の入力では Hi レベルを保証できなくなってしまいます。
しかし、MAX3232 のデータシートを調べてみると、I/O は TTL レベルに近い仕様のようで、
Hi レベルの閾値下限が 2.4 V となっています。
(本来の TTL レベルだと、Hi レベルの MIN 値は 2.0 V)
つまり、3.3 V を入力しても、ちゃんと Hi レベルを認識してくれます。
MAX3232 のデータシートより抜粋

一方で、MAX3232 の出力 Hi レベルは 5 V なので、
このまま 3.3 V 系 I/O の FT231XS に入力すると壊れてしまいます。
FT231XS のデータシートを調べてみますと、"Tolerant of 5V Input" と書かれており、
5 V 入力も許容されているので、問題ないようです。
FT231XS のデータシートより抜粋

結論としては、FT231XS と 5 V 電源の MAX3232 の組合せは、特に問題無かったということになります。
(データのタイミング的な検証はできていませんが、今のところ不具合はありません)
※TTL レベル入力と Tolerant Input は、ロジックの電圧レベル変換で使用される手法の一つです。
また、上側の回路は FT231XS の出力で FET (2SK2962) をドライブしていますが、
3.3 V では ON しない可能性が考えられます。
2SK2962 のデータシートを調べると、ゲートしきい値電圧の最大は 2.0 V であり、
ID - VGS のグラフからしても、おそらく問題無いと思われます。
2SK2962 のデータシートより抜粋


結果的に問題無かったということになりましたが、
設計段階でそこまで気が付いていてそのようにしたのか、
それとも気がつかず見過ごしていたのかは記憶に残っていません。
このようなことが起こらないように、
設計段階でちゃんと設計思想を記録して残しておくことが重要です。
今回は後付けになりましたが、備忘録として残すことにしました。
最近のコメント