MCP3424、チャネルを並行して読み取る方法は?
この質問について 私は電子工学の経歴を持っていません。これは、I2Cを介した通信とレジスタへの書き込みに関する最初の課題の1つなので、私の側からあまり多くの知識を推測しないでください。Arduinoをプログラミングしています。 特定の電子部品/チップについて尋ねるとき、私は人々が私に正しい答えを与えるために実験/テストを行うことができないと思います。また、人々がこのコンポーネントを知らないことも期待しています。したがって、私はこの質問に多くの情報を追加しようとします。 さらに情報が必要な場合はお知らせください。 コンポーネントには4つのADCがあります 4チャネルコンポーネントMCP3424(データシート)を使用しています。2つのパッケージで提供されます。MCP3422またはMCP3423 2チャネルバージョンではなく、MCP3424 E / SL、4チャネルSOICバージョンを使用しています。 ADCは4つあると思います。RS-Onlineでは、E / SLバージョンには4つのADC(ダイレクトリンク)があるようですが、E / STには1つ(ダイレクトリンク)しかないようです。 これは、複数のチャネルで同時にサンプリングできることを意味しているに違いないと思います。コンポーネントに複数のADCを配置する他の理由はありません。 私は正しいですか? I2Cを介した通信 通信は、1つの構成バイトを送信してから、サンプリングが終了するのを待ち、結果を読み取ります。 構成バイトのフォーマット 興味深いものは次のとおりです。 左からビット3、1から数えて:連続サンプリング 左からビット1と2、1から数えて:アドレス 構成バイトの詳細については、18ページのデータシートを参照してください。 読み取り結果のフォーマット 私の例では、18ビットの解像度(ビット5および6を1に設定)のみを使用します。リードバックの結果は4バイトになります。最初の3つは値を含み、4番目は構成バイトを含みます。 ただし、左端のビット!RDYは、値が「新しい」かどうか、つまり最後の読み取り以降の新しい読み取りかどうかを示します。初めて1つの結果を読み取る場合、値は0であり、ADCが新しいサンプル値で準備ができるまで、後続の結果は1です。 並行してサンプリングせずに使用する方法 私はこれを行う方法を完全によく知っています。そして、私がオンラインで見つけたすべての例、これも簡単です。構成バイトをコンポーネントに書き込んでから、値を読み取るだけです。 各チャネルを自動的に誤ってサンプリングするように設定し、チャネルを並行して読み取る方法 疑似コードは次のようになります setup(): start sampling channel 1, 18bit, 0gain, continuously start sampling channel 2, 18bit, 0gain, continuously start sampling channel 3, …