2017-08-24 8 views
0

私はSTM32CubeMXバージョン4.22を使用してMSC USBデバイスを生成し、2つのカスタムバルクインターフェイスを持つように変更しました。インターフェイス0には、2つのBULKエンドポイントINとOUTがあります。インターフェイス1には2つの代替設定があります。 Alt設定0には0のエンドポイントがあり、Alt設定1には2つのBULKエンドポイントINとOUTがあります。STM32 F4複合USBデバイス、2つのバルクインターフェイス、正しいFIFO構成

エンドポイントは、以下のように定義されています。

INTERFACE0_IN_EP 0x81と

がINTERFACE0_OUT_EP 0x01の

がINTERFACE1_IN_EP 0x82と

マイデバイスとして罰金およびインターフェイス0作品を列挙INTERFACE1_OUT_EP 0x02の

を定義定義定義定義期待される。ホストはSet Interface 1、Alt Setting 1要求を送信し、次にInterface 1エンドポイント(0x82と0x02)をアクティブにします。

インターフェイス1が期待どおりに動作していないため、FIFO設定と関係があります。私はINTERFACE1_OUT_EPのdataOut呼び出しを取得しますが、私は24バイトを書いている間にINTERFACE1_IN_EPホストだけが3バイトを返すように書くことを試みます。このトランザクションの直後に、インターフェイス1エンドポイントのCLEAR FEATURE要求が取得されます。ここで

は私の現在のFIFOセッティングです: HAL_PCDEx_SetRxFiFo(& hpcd_USB_OTG_FS、0xC0の); // 80 HAL_PCDEx_SetTxFiFo(& hpcd_USB_OTG_FS、0、0x40); // EP0 HAL_PCDEx_SetTxFiFo(& hpcd_USB_OTG_FS、1、0x80); // EP1

HAL_PCDEx_SetTxFiFo(& hpcd_USB_OTG_FS、2、0x40); // < - この行を追加しない場合ホストは何も戻せません。この行を追加した後、ホストはINTERFACE1_IN_EPで3バイトしか受信しません。

これらのFIFO設定を適切に構成して、2番目のインターフェイスも期待通りに機能するようにしてください。

+0

申し訳ありませんが、私はSTM32F412、FS USBを使用しています。物理的には最大パケットサイズ64 – user3542575

答えて

0

STM32のUSB FIFOに使用できるのは0x140 x 4(= 1280bytes)のみです。 0x180(= c0 + 40 + 80)x 4(= 1536バイト)を使用しました。

関連する問題