2 Replies Latest reply on Feb 12, 2020 3:03 AM by YaNi_3193241

    USB通信について

    YaNi_3193241

      マイコン形式:MB9BF516NPMC-G-JNE2(CY9BF516NPMC-G-JNE2

      【経緯】
      マイコンを搭載した基板(デバイス)とパソコンのアプリケーション(ホスト)でUSB通信をしておりますが、
      基板からパソコンにデータを送信(ホストからのIN方向)するときに
      20
      回に1回程度の確率で異常な通信データが送信されます。

      調査していくと、送信が連続失敗し、次送信で成功したときに異常なデータ

      (
      前回の送信失敗データと今回の正常データが混じったデータが送信)

      が送信されており、送信バッファの処理に問題があるのではないかと考えております。

      【質問1】
      ペリフェラルマニュアルにエンドポイントの送受信バッファの初期化をするためには

      EPxS->EPx->BFINI
      ビットを立てるとありますが、

      注意事項としてDRQビットが1かつBUSYビットが0であることを確認した後に

      STAL
      ビットを立てて初期化を行うよう注意書きがあります。


      上記を守らない場合、どのような影響が考えられますでしょうか。
      送信バッファが初期化されない以外に異常データが保存される等考えられますでしょうか。

      【質問2】
      現在、データ送信時に定周期で監視し、一定時間を越えたら
      送信を中断し、送受信バッファ初期化処理を行うようシーケンスを組んでおります。

      送受信バッファの初期化は送信を中断するときにも行ってよいものでしょうか。
      もしくはUSB通信初期化時のみに使用するものなのでしょうか。
      もし、初期化時のみの場合は、送信がなかなか完了しない場合も中断せずに完了するまで通信を試みるのでしょうか。

      【質問3】

      STAL
      ビットはどのようなときに立てるものなのでしょうか。



      EP0S
      では送信バッファ初期化時に、必要に応じて立てるような記載があり、

      EP1S
      ~EP5Sでは送受信バッファ初期化時にSTALビットを立ててから行うように記載があります。



      【質問4】
      マニュアルにCPU転送時制御例のフローに”FIFOへのデータ書き込み処理”とありますが、
      これは送受信バッファのことを指していると解釈してよろしいでしょうか。


        • 1. Re: USB通信について
          TakashiM_61

          ご連絡が遅くなり、申し訳ございません。

           

          【回答1】送受信バッファ初期化の際に正しい手続きを行わない場合、送受信バッファは不定なります。

          正しい手順に従って初期化を行ってください。

           

          【回答2】送信を中止した後に送受信バッファを初期化することは問題ございません。

          その際には正しい手順に従って初期化してください。

           

          【回答3】32 ビット・マイクロコントローラ FM3 Peripheral Manual 通信マクロ編

          https://www.cypress.com/file/211496/download

          CHAPTER 3-1: USB デバイス (USB ファンクション)

          3.8. エンドポイント0 のSTALL 応答/解除

          3.9. エンドポイント1~5 のSTALL 応答/解除

          を参照ください。

           

          【回答4】ご認識の通りです。

          • 2. Re: USB通信について
            YaNi_3193241

            ご連絡ありがとうございます。

            お客様に回答させていただきましたので追加質問がありましたら再度連絡させていただきます。

             

            以上、よろしくお願いいたします。