FTDIのUSBシリアルの不具合?

先日、シリアルポートのRTSをめぐる混乱について書いたとき、WindowsRTS_CONTROL_TOGGLE をサポートしてることを実験で確認しました。しかし、FTDIのUSBシリアルではじゃっかん問題があるようです。

先日の実験ではWindows標準のシリアルポートドライバ(serial.sys)で駆動されている物理COMポート(COM1)を使用しました。同じ条件でFTDIのUSBシリアル(FT232H)の仮想COMポート(独自のドライバを使用)を使って実験したところ、RTSがネゲートされるタイミングにバラツキがあるばかりか、まれにTxDの送信完了より前にネゲートされることが確認されました。

下図は9600ボーでFTDIの仮想COMポートに送信したときのTxD(上)とRTS(下)です。CMOSレベルのUARTなので負論理です。このようにTxDがRTSからはみ出してしまうケースがあります。

FTDIのRTSタイミング

物理COMポートではこんなことは起こらず、RTSのネゲートタイミングはTxD送信完了に対してほぼ一定であったので、FTDIのドライバが RTS_CONTROL_TOGGLE にきちんと対応しきれてないのだろうと思われます。