Community Translation - Data sent from Host over USB is not Committed to GPIF configured as Slave FIFO in FX3 – KBA223338

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

Hi

I want to translate KBA223338, please confirm to my work.

Regards,

Nino

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Nino-san

Confirm to work this KBA.

Thanks,

Jenna

Jenna Jo
0 Likes

タイトル:USBを介したホストからのデータ送信はFX3のスレーブFIFOとして構成されたGPIFでコミットされない – KBA223338

バージョン 1

chaitanyav_41 2018/04/02 5:17 に作成。chaitanyav_41 2018/04/02 5:17 に変更。

Version: **

質問:

サイプレスコントロールセンター/ カスタムホストアプリケーションから送信されたデータパケットは何故GPIFインターフェースでコミットされませんか?

回答:

USB 3.0の下記のシナリオを考えてみましょう:

  • 下記のように構成されている車載DMAチャネルを検討してみます:

dmaCfg.size  = 16384;  //バッファサイズは16KB

dmaCfg.count = CY_FX_SLFIFO_DMA_BUF_COUNT_U_2_P;

dmaCfg.prodSckId = CY_FX_PRODUCER_USB_SOCKET;     //Producer : USB

dmaCfg.consSckId = CY_FX_CONSUMER_PPORT_SOCKET; //Consumer : GPIF

  • この構成で、下記のどの条件も満足している場合、バッファはGPIFでコミットされます。
  1. 全ての16KBバッファがUSBで埋められている。
  2. 一部のパケットはUSBから受信される。(注意:これが起きた場合、バッファに埋められたデータの量はUSB 3.0では1024 バイトの倍数にはならず、USB 2.0では512 バイトの倍数になります。)
  3. ゼロ長パケットはUSBから受信される。

従って、これら3つの条件を考慮してホストアプリケーションを設計して下さい。

例えば、OUT送信がXバイトで作られる必要がある場合、下記のようになります。

  1. If X < 16 KB and (X % 1024) != 0, Xバイトが完了すると何も必要ありません。
  2. If X == 16 KB, Xバイトが完了すると何も必要ありません。
  3. If X > 16 KB, then let Y = (X % 16 KB). :

i)  If Y == 0, Xバイトが完了すると何も必要ありません。

ii) If Y < 16 KB and (X % 1024) == 0, Xバイトが完了すると、デバイスのバッファがGPIFにコミットされるように、ゼロ長パケットが送信される必要があります。

  • ゼロ長パケットを送信するためには、ゼロに設定する「len」パラメータと一緒にXferData() APIをコールして下さい。

XferData()の使用方法に関しては、FX3-SDKをインストールした後、C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\libraryで入手できるAPIガイドを参照して下さい。

278 閲覧 カテゴリ: USB: SuperSpeed Peripherals   

タグ: firmware, usb, dma, usb 3.0, fx3, fx3 sdk, gpif, host application, gpif ii, slave fifo, slavefifo, commit

0 Likes