USB ポート経由でボード上の個々のチップを制御する Windows TCL アプリケーションがあります。bitbang モードで FTDI ドライバーを使用しています。Bitbang モードは、ボード上の USB デバイスを PC パラレル ポートのように動作させます。
ボード上のチップがバイナリカウンターであるとしましょう。カウンターをインクリメントしたい場合は、一連のバイトを USB ポートに書き込み、チップをカウントさせます。
カウンターが一定のレートでカウントするようにするには、既知のレートでそれらのバイトを送信します。
データはバイナリ データなので、ポートをバイナリ モードに設定します。いくつかの制御バイト (チャンクと呼びます) をバッファーに書き込み、ポートをフラッシュして、データが USB ポートに送信されるようにします (必要なときにカウントを実行します)。書き込み後、しばらく待ってから、チャンクを再度書き込みます。
これが完璧なタイミングではないことはわかっています。それは問題ではありません。今回は閉じる必要があります。
私の問題は、データがチャンク間で約 2 ミリ秒よりも速く転送されないことです。(チャンク内のデータの転送速度について話しているのではなく、チャンク間の最小時間について話しているのです。)別の言い方をすれば、任意の(実用的な) サイズは約 2mS です。
オースコープでデータの変化を観察することで2mSを測定しました。これは、コードに追加したタイマーとも一致します。
この間隔時間を短くする方法はありますか? それがWindowsから取得した実際の実行タイムスライスなのか、それともUSBへのバッファ転送のキュー処理間隔なのかはわかりません。OSの遅延の原因を突き止める方法はありますか?
この間隔を制御する方法はありますか。これを 2mS ではなく 500uS にすることは素晴らしいことです。
誰かが提案をしてくれることを願っています。
ありがとう