エンジニア風味 (Engineer-taste)

電子系エンジニアのメモ帳

FT232HのSYNC 245 FIFOモード(その3)

(その2)の続きです。

しょうがないので、いろいろ信号をオシロで見てみました。
わかったことは、TXE#の信号がFT_READ以外のタイミングでもLowになることです。

f:id:engineer-paju:20181230124307p:plain
FT_OPENのとき

f:id:engineer-paju:20181230124338p:plain
FT_PURGEのとき
f:id:engineer-paju:20181230124412p:plain
FT_READのときのTXE#波形

FT_OPENとかFT_PURGEのときは、FTDIデバイス内部で、初期化しているはずなので、そのタイミングでTXE#がLowになって、WR#がLowになると、
データ入力となり、まずいのでは?と思いました。
それで、FT_OPEN、FT_PURGEコマンドのときには、WR#がHighに固定するようにしました。こんな感じです。

f:id:engineer-paju:20181230125415p:plain
改善した接続図
これで、正常動作するようになりました。
FTDI公式のアプリケーションノート(AN-130)を見ると、9ページに「送信用、受信用のバッファはそれぞれ4kずつあるが、SYNC 245 FIFOモードでは、2 x 512byteしか確保されない。512byteの2つのメモリは交互に働く」とあるので、おそらくこの「交互に働く」部分の制御がうまくいかなくなると見ました。

一度、正常動作すると、データロスは起きないようです。
やれやれです。
FTDIの中の人に報告メールをしたら、"Great!"と返事が来ました。

この記事はここまでです。