5

F4xx シリーズ チップの STM32 マニュアルには、アプリケーションがレジスタにTXFFLSHビットを書き込みOTG_FS_GRSTCTL、TxFIFO をフラッシュすると書かれています。注意として、アプリケーションは、コアが TxFIFO への書き込みも TxFIFO からの読み取りも行っていないことを確認した後にのみ、このビットを書き込む必要があることに言及しています。その手段として、NAK有効割り込みが設定されていることを確認し(これはレジスタのGINAKEFFビットを意味すると思いOTG_FS_GINTSTSます)、コアがFIFOを読み取っていないことを確認し、AHBIDL(AHBアイドル)ビットOTG_FS_GRSTCTLが設定されていることを確認しますFIFO に何も書き込まれていないことを保証します。STM自体が提供する(ひどい)USB OTGライブラリは、これらのチェックの両方を無視しますが、無料のlibopencm3ライブラリはAHBアイドルビットのみをチェックします。私の質問は次のとおりです。

  1. TXFFLSHマニュアルでは、上記のチェックを実行してビットを書き込む前に USB OTG コアを無効にすることは推奨されていません。これにより、チェックが実行されてからTXFFLSH.

  2. 「NAK 有効」ビットは、非周期エンドポイントの TxFIFO からデータが読み取られないことのみを保証します。これにより、コアが無効にされない限り、コアがアイソクロナス エンドポイントに FIFO を使用できるようになるのではないでしょうか?

これらが「つまらない」タイプの質問であることは承知していますが、私が取り組んでいるプロジェクトは非常に信頼性の高いハードウェアになるはずであり、顧客はデバイスを何年もチェックする余裕がないため、これらの微妙な点が重要です (はい、ウォッチドッグを有効にしています)などですが、ほとんどの場合、リセットせずにコアが動作する必要があります)。

4

0 に答える 0