715812_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

715812_ja-JP

715812_ja-JP

MPL3115A2 ワンショットモードでのデータ読み取り<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

こんにちは、

mpl3115s2 圧力/高度センサからのデータの読み取りについて質問があります。1分ごとにデータを読み取る必要があり、すでにスタンバイモードを選択しています。私は以下の設定を使用します。

開始時:

制御レジスタ1でオーバーサンプリングを128に設定する

ptDataCfgレジスタのtdfe、drem、pdfeビットを設定する

読書時間:

BAR_INレジスタに基準圧力を設定する

高度または気圧モードに応じて、ctrl1 のビット alt を 1 または 0 に設定します。

10ms待つ(必要かどうかは分かりません)

ctrl1レジスタのostビットを設定する

ループ内で ost ビットのクリアを待機します

ステータスレジスタのptdrビットを待つ

圧力出力レジスタから3ビットを読み取る

それを浮動小数点数に変換する

気圧と高度の読み取り操作を繰り返します。

自分のアプローチを選択すべきでしょうか?私の測定値は通常は正しいのですが、常に正しいとは限らないので、質問します。高度は時々

65520.000000とかそんな感じ。

すべての回答に感謝します。

よろしくお願いします。ヴォイチェフ・ヤシエヴィチ。

圧力センサRe: MPL3115A2 data reading in one shot mode<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

こんにちは、トーマス

はい、バイト(レジスタ)について考えましたが、それは私の間違いでした。

はい、圧力 (小さすぎる、たとえば 107,555 Pa) と高度 (24410 または 65520 m) に問題がありましたが、それは次の構成のためです。

制御レジスタ1でオーバーサンプリングを128に設定する

制御レジスタ1のSYSBビットを設定する

ptDataCfgレジスタのtdfe、drem、pdfeビットを設定する

読書時間:

BAR_INレジスタに基準圧力を設定する

ステータスレジスタのptdrビットを待つ

圧力出力レジスタから3ビットを読み取る

それを浮動小数点数に変換する

ステータスレジスタの読み取りで十分だと思いました。現在の構成では高度のみ値が不正です。

以下のような変換を使用します。

圧力の場合:

// raw data from device registers: 2 - LSB, 1 - CSB, 0 - MSB
union32_t integerPart = {.u8 = {rawPressure[2], rawPressure[1], rawPressure[0], 0}};


// converts raw 18-bit integer part to float and adds 2 bits of fractional part, 0x30 - gets 2 bits from LSB byte
return ((float)(integerPart.u32 >> 6)) + ((float)((rawPressure[2] & 0x30) >> 4) * 0.25);

高度について:

//converts raw: 0 - MSB and 1 - CSB to float form as integer part and adds 4 bits from byte 2 - LSB bytes in float form
return ((float)((int32_t) ((rawAltitude[0] << 8) | rawAltitude[1]))) + ((float)(rawAltitude[2] >> 4) * 0.625);

よろしくお願いします。ヴォイチェフ・ヤシエヴィチ。

Re: MPL3115A2 data reading in one shot mode<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

こんにちは、ヴォイチェフさん。

シーケンスは正しいようです (3 ビットは単なるタイプミスで、3 バイト (レジスタ 0x01 - 0x03) を意味していると思います)。

高度測定のみ、または圧力測定でもこのような問題が発生しますか?レジスタ0x01~0x03の生の値をメートル単位の実数値にどのように変換していますか? 変換ミスやデータ型の誤りが原因のように思えます。

よろしくお願いいたします。

トーマス

Tags (1)
No ratings
Version history
Last update:
‎02-04-2026 08:46 AM
Updated by: