(その2)の続きです。
しょうがないので、いろいろ信号をオシロで見てみました。
わかったことは、TXE#の信号がFT_READ以外のタイミングでもLowになることです。
FT_OPENとかFT_PURGEのときは、FTDIデバイス内部で、初期化しているはずなので、そのタイミングでTXE#がLowになって、WR#がLowになると、
データ入力となり、まずいのでは?と思いました。
それで、FT_OPEN、FT_PURGEコマンドのときには、WR#がHighに固定するようにしました。こんな感じです。これで、正常動作するようになりました。
FTDI公式のアプリケーションノート(AN-130)を見ると、9ページに「送信用、受信用のバッファはそれぞれ4kずつあるが、SYNC 245 FIFOモードでは、2 x 512byteしか確保されない。512byteの2つのメモリは交互に働く」とあるので、おそらくこの「交互に働く」部分の制御がうまくいかなくなると見ました。
一度、正常動作すると、データロスは起きないようです。
やれやれです。
FTDIの中の人に報告メールをしたら、"Great!"と返事が来ました。
この記事はここまでです。