STM32F407の場合、OTG_FSではSTM32F103よりもEndpointの数はさらに少なく、EP0を除くと、IN endpoint が3つ、OUT endpoint が3つしか使えません。つまり(CubeMXでの)CDCインターフェースの場合、1インターフェースで2 IN/1 OUTのエンドポイントを使うので、VCPは本来は1インターフェースが上限です。
しかし、前回の投稿でも少し言及したのですが、Command EP(Interrupt IN EP)を使わずVCPを構成する場合だと、Data IN EP/Data Out EPの組み合わせなので、論理的には3インターフェース(3IN/3OUT)まで構成できることになります。 そこで実際やってみたところ、Command EPを使う必要がない場合、つまり、簡易的にVCP/CDCとして機能させることで、3 vcp/cdcとして構成することができました。
今回はSTM32CubeIDEでプロジェクトを作成しました。コードはこちらです。なお大元のコードはこちらでSTM32F103C8T6 Dual VCPです。Thanks!!
動作確認はSTM32 F4VE(通称)で行いました。115200でのテキスト送受信とzmodemでのファイル送受信および3ch同時受信は確認できましたが送信は同時に1ch半?という感じでした。9600でのファイル転送はzmodemではできませんでしたがkermitでの転送はできました。921600ではテキスト送受信とzmodemのファイル送受信はできましたが、2ch同時受信はできませんでした。CubeProgrammerは115200/Even/8/1でBluePillに接続できました。その他細かいところはチェックしていませんので簡易VCPの一例として参考程度にしてもらえればと思います。なお使用にあたり当方は一切責任を負いませんのであしからずご了承ください。
F401/411/407のCortex-M4コアで安価にマルチチャンネル簡易VCPを構成する一方法かもしれません。ホストとUSB FS経由で3ch同時に小さなデータを送受信する事などはできそうです。参考までにこちらにSTM32のUSBに関するApplication Noteがあり、(Gxxxを除く)どのMCUがどれだけendpointをつかえるかの一覧があります。
短いですが今回は以上です。それでは、Happy Coding!!
しかし、前回の投稿でも少し言及したのですが、Command EP(Interrupt IN EP)を使わずVCPを構成する場合だと、Data IN EP/Data Out EPの組み合わせなので、論理的には3インターフェース(3IN/3OUT)まで構成できることになります。 そこで実際やってみたところ、Command EPを使う必要がない場合、つまり、簡易的にVCP/CDCとして機能させることで、3 vcp/cdcとして構成することができました。
今回はSTM32CubeIDEでプロジェクトを作成しました。コードはこちらです。なお大元のコードはこちらでSTM32F103C8T6 Dual VCPです。Thanks!!
動作確認はSTM32 F4VE(通称)で行いました。115200でのテキスト送受信とzmodemでのファイル送受信および3ch同時受信は確認できましたが送信は同時に1ch半?という感じでした。9600でのファイル転送はzmodemではできませんでしたがkermitでの転送はできました。921600ではテキスト送受信とzmodemのファイル送受信はできましたが、2ch同時受信はできませんでした。CubeProgrammerは115200/Even/8/1でBluePillに接続できました。その他細かいところはチェックしていませんので簡易VCPの一例として参考程度にしてもらえればと思います。なお使用にあたり当方は一切責任を負いませんのであしからずご了承ください。
F401/411/407のCortex-M4コアで安価にマルチチャンネル簡易VCPを構成する一方法かもしれません。ホストとUSB FS経由で3ch同時に小さなデータを送受信する事などはできそうです。参考までにこちらにSTM32のUSBに関するApplication Noteがあり、(Gxxxを除く)どのMCUがどれだけendpointをつかえるかの一覧があります。
短いですが今回は以上です。それでは、Happy Coding!!
コメント
コメントを投稿