2

i2c を使用して、PIC マイクロコントローラー (dsPIC33) からの ADXL345 加速度計からの正常な読み取りの実装を完了しました。これまでに達成したのは、デバイス ID (1 バイト) を正しく読み取ることだけです。

以前に ADXL345 を使用したことがある人なら、X、Y、または Z のいずれかの軸からデータを読み取るために、たとえば「DATAX0」と「DATAX1」の 2 バイトに分割されることを知っているでしょう。データシートには、「データの一貫性を確保するために、ADXL345 からデータを取得するためにマルチバイト読み取りを使用することをお勧めします」と具体的に記載されているため、軸ごとに 2 バイトをまとめて収集する必要があります。

私の質問は、i2c を使用して、軸ごとに 2 バイトが 2 つの異なるレジスタで表されている場合、どうすればよいですか?

i2c プロセス

上の画像は、i2c 伝送に必要なプロセスを示しています。加速度計から読み取るために、下の 2 つのグラフを見ており、上に貼り付けたデータシートの引用は、下のグラフ (複数バイト) を使用したことを示唆していますが、前述のように、2 つのバイトには 2 つの異なるレジスタがあります値 (DATAX0 と DATAX1 にそれぞれ 0x32 と 0x33)。

1 回のグラブで 1 つの軸からデータを取得するにはどうすればよいですか? これを行う唯一の方法は、1 つのレジスタ アドレスを使用して 1 バイトを読み取り、次に 2 番目のレジスタ アドレスを使用して再度読み取り、2 つを連結して 1 つの軸データを取得することです。

この質問は、同じ i2c バス上のさまざまなデバイスからデータを収集する場合にも当てはまります。これらのデバイスも異なるレジスタを持ちます。

乾杯!

4

1 に答える 1

4

0x32 で 2 バイトの読み取りを行うだけで、デバイスは応答に 0x32 と 0x33 の値を入れます。

于 2013-03-14T18:51:34.863 に答える