2017-02-06 37 views
0

私はArduino Due(マイクロコントローラATSAM3X8E)を使用するプロジェクトに取り組んでいます。私の目標は、ファームウェアでリアルタイムに使用している主要変数の値を追跡できるようにすることです。事実、私は時間の経過とともに変数の値の変化をプロットする必要があります。PCの高速USB通信によるArduino

これを行うために、ネイティブUSBポート経由でPCにデータを送信することにしました。私が持っているリアルタイムの制約は、0.1ミリ秒以内に20個の変数(それぞれ8バイトの長さ)の値を送る必要があるということです。 Arduino Dueには、チップのUSBペリフェラルに接続されたネイティブUSBポートがあります。 USBデバイスモードでデューティを設定することで、USB経由でUARTを使用しようとしました。私はシリアル(UART)通信を使用して115200ボーの速度にすることができます(高速であればデューティまたはホストPCがデータを正しく送信できません)。

私はいくつかの自宅で仕事をして、USBベースのデバイスは、彼らが何をしているかに基づいて異なる分類があることを発見しました。私は、少なくとも2 Mビット/秒のスピードを持つ高速プロトコルがあるかどうかを知りたいのですが、USBの上でデューティからPCにデータを渡すことができます。同等のドライバがあれば私のWindows PC上でその高速データを正常に取得するには、どんな勧告も非常に役に立ちます。

ありがとうございます!

サブラマニアン

答えて

1

ArduinoのためのネイティブUSBポートがハイスピードUSB(480 Mbps)のことが可能であり、デフォルトでは、コンピュータにUSB仮想COMポートを表示します。これは仮想シリアルポートなので、USBドライバが許可する速度でデータを送信することができ、COMポートの仮想 "ボーレート"に制限されず、無関係な設定です。私は仮想COMポートがあなたのために十分に速くなると思うし、もっと複雑な何かをする前に試してみるべきです。

このポートを使用するには、ArduinoプログラムでSerialUSBを使用します。オブジェクトのインターフェイスはSerialです。 Arduino IDEをインストールした場合、またはWindows 10を実行している場合は、既にドライバを用意しているはずです。

USB仮想COMポートは、通常、パラメトリックな遅延やスループットを保証しないUSBバルクエンドポイントを使用します。お使いのコンピュータがバス上の他のデバイスと話すのに忙しい場合は、期待していたスループットが低下する可能性がありますが、ここでは誤差の余裕が非常に大きいので、実際には問題にはならないと思います。あなたが安全であることを望むなら、デバイス側に数ミリ秒のデータをバッファリングして、データを失うことがないようにしてください。バッファーの大きさを確認するには、Arduinoコアコードの内部を調べる必要があります。

関連する問題