こんにちは、
データシート内の c12 係数の読み取りと計算の例を理解するのに苦労しています。データシートによれば、小数ビットが 13 ビットあり、さらに符号ビットが 1 つあり、小数点以下の 9 桁のパッドが組み込まれています。読み取りと計算の例では、次のように係数の MSB と LSB の生の読み取りが表示されます。
c12係数MSB = 0x38
c12係数LSB = 0xCC c12係数 = 0x38CC = 0.00086665
まず、0x38CC の値は 14 ビットです。14 番目のビットが実際には符号ビットであると仮定した場合でも、計算された値は負になるはずです。
「小数点ゼロパッド」の説明から、各小数ビットの実際の解像度は 1/(2**(9 + 13))= 1/4194304 であることを意味します。
0x38cc=14540 をそのまま取ると、c12= 14540/4194304 = 0.003466 になります (例の値とは少し異なります)。
0x38cc を取り、14 番目のビットが符号ビットであると仮定すると、2 の補数を計算すると絶対値は 0x733 = 1843 になります。これにより
c12 = 1843/4194304 = 0.0004394 (例の値の約半分ですが、符号が間違っています)。それで、私が見逃しているものは何でしょうか?それともその例は間違っていますか?
ご協力に感謝いたします。
Tom
こんにちは、トム。
あなたの仮定は基本的に正しいですが、データシートの 5 ページに示されているように、c12_LSB の最後の 2 ビットがゼロであることを考慮する必要があります。
c12 MSBバイト = c12[13:6] = [b13、b12、b11、b10、b9、b8、b7、b6]
c12 LSBバイト = c12[5:0] & “00” = [b5、b4、b3、b2、b1、b0、0、0]
c12係数は次のようにフォーマットされます。
c12 = b13 0 .000 000 000 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
したがって、各小数ビットの値は 1 / 2 ^(9+13) であることは正しいですが、16 ビットの c12 値を最初に 2 だけ右にシフト (または 4 で割る) して、13 の小数ビットを取得する必要があります。
この例では、16 ビットの c12 = 0x38CC となります。
次に、b12 .. b0 = 0b011 1000 1100 11 = 3635
そしてc12 = 3635 / 2^22 = 0.00086665
お役に立てれば幸いです。
よろしくお願いいたします。
トーマス