私は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番目のインターフェイスも期待通りに機能するようにしてください。
申し訳ありませんが、私はSTM32F412、FS USBを使用しています。物理的には最大パケットサイズ64 – user3542575