2016-06-26 7 views
1

SPIモードのFT232H ICを使用してディスプレイを駆動したいとします。私はクロック周波数を5MHzに設定しました。私のコードをテストすると、きついループでも約120マイクロ秒の間隔でコマンドが実行されることに気付きました。以下のコードでは、4バイトを書き込むコマンドを発行します。私はVBでストップウォッチを使ってアクションを実行し、スコープ上の信号も監視します。コードは一度実行するのに約200マイクロ秒、行に二度実行するのに約320マイクロ秒、3回にわたって450マイクロ秒かかるなどがあります。バイトの実際の送信には毎回約7マイクロ秒しかかかりません。残りの時間は何も起こらず、すなわち120マイクロ秒が各送信で無駄に見える。 質問:これは、FT232Hのルーチンの復旧だけで、非アクティブな時間ですか? ここに何か不足していますか?より良いコマンドがありますか?私はSPIを使って、できるだけ速くILI9341ディスプレイドライバチップにデータをクロックします。私は他の人がそれをしたことを知っている提案は大歓迎です!FT232H書き込みコマンド間の待ち時間

'Start 
    'Data transmit, no receive 
    SendBuffer(0) = &H10 'Output on rising clock, no input, MSB first, clock a number of bytes out 
    SendBuffer(1) = &H3  'Length L 
    SendBuffer(2) = &H0  'Length H 
    SendBuffer(3) = &HA 
    SendBuffer(4) = &HAA 
    SendBuffer(5) = &HA 
    SendBuffer(6) = &HAA 

    'About 1-3 microseconds to this point 

    FT_Status = FT_Write_Bytes(FT_Handle, SendBuffer(0), 7, BytesWritten) ' Write buffer to the device 

    '201 microseconds to this point 

    'Data transmit, no receive 
    SendBuffer(0) = &H10 'Output on rising clock, no input, MSB first, clock a number of bytes out 
    SendBuffer(1) = &H3  'Length L 
    SendBuffer(2) = &H0  'Length H 
    SendBuffer(3) = &HA 
    SendBuffer(4) = &HAA 
    SendBuffer(5) = &HA 
    SendBuffer(6) = &HAA 
    FT_Status = FT_Write_Bytes(FT_Handle, SendBuffer(0), 7, BytesWritten) ' Write buffer to the device 

    '321 microseconds to here 

    'Data transmit, no receive 
    SendBuffer(0) = &H10 'Output on rising clock, no input, MSB first, clock a number of bytes out 
    SendBuffer(1) = &H3  'Length L 
    SendBuffer(2) = &H0  'Length H 
    SendBuffer(3) = &HA 
    SendBuffer(4) = &HAA 
    SendBuffer(5) = &HA 
    SendBuffer(6) = &HAA 
    FT_Status = FT_Write_Bytes(FT_Handle, SendBuffer(0), 7, BytesWritten) ' Write buffer to the device 

    '450 microseconds to here 

答えて

0

はあなたのチップ(FT232H)との経験を持っていないが、ここで、一般的にいくつかの可能性:その後、設定が低すぎる場合

  1. いくつかのICは内部通信のための独立したクロックに

    を持っていますコマンドがSPIモジュールに送信され、SPIに転送されるまで待っています自己。

  2. 割り込みタイミング

    あなたはその後、割り込みを使用している場合、どちらかあなたのISRが遅延して呼ばれている(また、モジュールは、それは時々自身のクロックをねた中断)か、タイマ/カウンタのような他のプロセスによってブロックされていますまたはUSB/DMA転送または設定または別の方法でISR

  3. デバッグインタフェース

    デバッグインタフェース(のようなJTAG)を使用している場合は、それによって停止することができます。そのような場合は、このようなインターフェースを持たない生のアプリケーションを試し、オシロスコープで測定して、これを除外してください。

  4. 電源管理

    いくつかのチップが使用されていないモジュールをパワーダウンしていると、使用する前に、彼らはいくつかの時間をとる開始する必要が電力を節約するために。これは、モジュールの構成を変更している場合でも可能です。チップまあ最近は強制で

  5. バグ/(その後、過去に非常に高い)チップのバグを残して、より高い可能性がある経営陣が市場に新しいチップを急ぎました。だからこれを排除しないでください...私はこの数回、すでに遭遇しました。通常、チッププロデューサに連絡したり、データシートにアップデート/正誤表と既知のバグリストを確認してください。

0

私は、チップの製造元から、遅延がUSBのバルク転送の考慮事項に関連していることを知りました。私は、転送ごとにできるだけ多くのデータをバッファリングすることによってタイミングを調整します。

関連する問題