MPL3115A2 temperature conversion

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

MPL3115A2 temperature conversion

1,904件の閲覧回数
lukaszprzeniosl
Contributor II

Hello there,

I am having a problem with understanding how to convert the the MPL3115A2 temperature readings exactly (OUT_T_MSB, OUT_T_LSB). Please consider this function:

inline static float rawTemperature2Float(const uint8_t* const rt)
{
    return ((float)((int8_t)rt[0])) + (((rt[1] >> 4) & 0x0F) * 0.0625f);
}

rt[0] = OUT_T_MSB and rt[1] = OUT_T_LSB.

The question is: Does the sign bit in MSB also determinate how should the fractional part be treated, or is it always positive? In the presented function I am always adding the fractional part. But maybe if the sign is negative, I should substract it (or multiply by -1)? Should the function look like this?

inline static float rawTemperature2Float(const uint8_t* const rt)
{
    float frac = ((rt[1] >> 4) & 0x0F) * 0.0625f;

    if (rt[0] & 0x80)

    {
        frac *= -1; // variant #1

        //frac = (1.0f - frac) * -1; // variant #2

     }

    return ((float)((int8_t)rt[0])) + frac;
}

If so, which variant in the if?

This approach gives similar results (all bits threaded for twos complement conversion):

inline static float rawTemperature2Float(const uint8_t* const rt)
{   
    int32_t temp = (((int32_t)rt[0]) << 4) | (rt[1] >> 4);
    if (temp & 0x800)
        temp = (0x1000 - temp) * -1;

    return ((float)(temp)) / 16.0f;
}

I would appreciate all help.

ラベル(1)
タグ(1)
2 返答(返信)

1,788件の閲覧回数
TomasVaverka
NXP TechSupport
NXP TechSupport

Hello Lukasz,

I do apologize for my delayed response, but I was on a business trip last week with a limited time to react on community questions.

In my code I use the following formula:

Temperature = (float) ((short)((RawData[3] << 8) | (RawData[4] & 0xF0)) >> 4) * 0.0625;

 

You need to get -0.0625 for RawData[3] = OUT_T_MSB = FF and RawData[4] = OUT_T_LSB = F0.

I will retest it again tomorrow when I am back in the office, but if I remember well, I really got -0.0625 for 0xFFF0.

Best regards,

Tomas

PS: If this answer helps to solve your question, please mark it as "Correct" or “Helpful”. Thank you.

1,788件の閲覧回数
lukaszprzeniosl
Contributor II

Hello Tomas, thank you for answer.

Code-wise, your method is the same as my last one, which I found working. But yours is optimized better. Thank you for help, now everything is clear.

0 件の賞賛
%3CLINGO-SUB%20id%3D%22lingo-sub-853523%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EMPL3115A2%20%E6%B8%A9%E5%BA%A6%E5%A4%89%E6%8F%9B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-853523%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%3CP%3EMPL3115A2%20%E3%81%AE%E6%B8%A9%E5%BA%A6%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E5%80%A4%20(OUT_T_MSB%E3%80%81OUT_T_LSB)%20%E3%82%92%E6%AD%A3%E7%A2%BA%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E6%AC%A1%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E6%A4%9C%E8%A8%8E%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%3A%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3E%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E9%9D%99%E7%9A%84%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9rawTemperature2Float(const%20uint8_t*%20const%20rt)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%E6%88%BB%E3%82%8A%E5%80%A4%20((float)((int8_t)rt%5B0%5D))%20%2B%20(((rt%5B1%5D%20%26gt%3B%26gt%3B%204)%20%26amp%3B%200x0F)%20*%200.0625f)%3B%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3Ert%5B0%5D%20%3D%20OUT_T_MSB%E3%80%81rt%5B1%5D%20%3D%20OUT_T_LSB%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E8%B3%AA%E5%95%8F%E3%81%AF%E3%80%81MSB%20%E3%81%AE%E7%AC%A6%E5%8F%B7%E3%83%93%E3%83%83%E3%83%88%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E5%B0%8F%E6%95%B0%E9%83%A8%E3%81%AE%E5%87%A6%E7%90%86%E6%96%B9%E6%B3%95%E3%82%82%E6%B1%BA%E3%81%BE%E3%82%8B%E3%81%8B%E3%80%81%E3%81%9D%E3%82%8C%E3%81%A8%E3%82%82%E5%B8%B8%E3%81%AB%E6%AD%A3%E3%81%AE%E5%80%A4%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%8B%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82%E6%8F%90%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%9F%E9%96%A2%E6%95%B0%E3%81%A7%E3%81%AF%E3%80%81%E5%B8%B8%E3%81%AB%E5%B0%8F%E6%95%B0%E9%83%A8%E5%88%86%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E7%AC%A6%E5%8F%B7%E3%81%8C%E8%B2%A0%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%81%9D%E3%82%8C%E3%82%92%E6%B8%9B%E7%AE%97%E3%81%99%E3%82%8B%EF%BC%88%E3%81%BE%E3%81%9F%E3%81%AF%20-1%20%E3%82%92%E6%8E%9B%E3%81%91%E3%82%8B%EF%BC%89%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%E9%96%A2%E6%95%B0%E3%81%AF%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3E%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E9%9D%99%E7%9A%84%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9rawTemperature2Float(const%20uint8_t*%20const%20rt)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0%20%3D%20((rt%5B1%5D%20%26gt%3B%26gt%3B%204)%20%26amp%3B%200x0F)%20*%200.0625f%3B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E(rt%5B0%5D%20%26amp%3B%200x80)%E3%81%AE%E5%A0%B4%E5%90%88%3C%2FP%3E%3CP%3E%7B%3CBR%20%2F%3E%20frac%20*%3D%20-1%3B%20%2F%2F%20%E3%83%90%E3%83%AA%E3%82%A2%E3%83%B3%E3%83%88%20%231%3C%2FP%3E%3CP%3E%2F%2Ffrac%20%3D%20(1.0f%20-%20frac)%20*%20-1%3B%20%2F%2F%20%E3%83%90%E3%83%AA%E3%82%A2%E3%83%B3%E3%83%88%20%232%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E((float)((int8_t)rt%5B0%5D))%20%2B%20frac%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%E3%82%82%E3%81%97%E3%81%9D%E3%81%86%E3%81%AA%E3%82%89%E3%80%81if%20%E3%81%AE%E3%81%A9%E3%81%AE%E5%A4%89%E7%A8%AE%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AD%E3%83%BC%E3%83%81%E3%81%A7%E3%81%AF%E5%90%8C%E6%A7%98%E3%81%AE%E7%B5%90%E6%9E%9C%E3%81%8C%E5%BE%97%E3%82%89%E3%82%8C%E3%81%BE%E3%81%99%20(%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%93%E3%83%83%E3%83%88%E3%81%8C%202%20%E3%81%AE%E8%A3%9C%E6%95%B0%E5%A4%89%E6%8F%9B%E7%94%A8%E3%81%AB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E5%8C%96%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99)%E3%80%82%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3E%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E9%9D%99%E7%9A%84%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9rawTemperature2Float(const%20uint8_t*%20const%20rt)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%20int32_t%20temp%20%3D%20(((int32_t)rt%5B0%5D)%20%26lt%3B%26lt%3B%204)%20%7C%20(rt%5B1%5D%20%26gt%3B%26gt%3B%204)%3B%3CBR%20%2F%3E%20if%20(%E6%B8%A9%E5%BA%A6%20%26amp%3B%200x800)%3CBR%20%2F%3E%E6%B8%A9%E5%BA%A6%20%3D%20(0x1000%20-%20%E6%B8%A9%E5%BA%A6)%20*%20-1%3B%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%88%BB%E3%82%8A%E5%80%A4%20((float)(temp))%20%2F%2016.0f%3B%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%E7%9A%86%E6%A7%98%E3%81%AE%E3%81%94%E5%8A%A9%E5%8A%9B%E3%81%AB%E6%84%9F%E8%AC%9D%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-853523%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E5%9C%A7%E5%8A%9B%E3%82%BB%E3%83%B3%E3%82%B5%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-853525%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20MPL3115A2%20temperature%20conversion%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-853525%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E3%83%88%E3%83%BC%E3%83%9E%E3%82%B9%E3%81%95%E3%82%93%E3%80%82%E3%81%94%E5%9B%9E%E7%AD%94%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%20%3C%2FP%3E%3CP%3E%E3%82%B3%E3%83%BC%E3%83%89%E7%9A%84%E3%81%AB%E3%81%AF%E3%80%81%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%AF%E7%A7%81%E3%81%8C%E6%9C%80%E5%BE%8C%E3%81%AB%E8%A9%A6%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%81%A8%E5%90%8C%E3%81%98%E3%81%A7%E3%80%81%E3%81%86%E3%81%BE%E3%81%8F%E3%81%84%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E3%82%82%E3%81%AE%E3%81%AE%E6%96%B9%E3%81%8C%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E5%8A%A9%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%93%E3%82%8C%E3%81%A7%E3%81%99%E3%81%B9%E3%81%A6%E3%81%8C%E6%98%8E%E3%82%89%E3%81%8B%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-853524%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20MPL3115A2%20temperature%20conversion%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-853524%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E3%83%AB%E3%82%AB%E3%82%B9%E3%81%95%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E8%BF%94%E4%BA%8B%E3%81%8C%E9%81%85%E3%82%8C%E3%81%9F%E3%81%93%E3%81%A8%E3%82%92%E3%81%8A%E8%A9%AB%E3%81%B3%E7%94%B3%E3%81%97%E4%B8%8A%E3%81%92%E3%81%BE%E3%81%99%E3%80%82%E5%85%88%E9%80%B1%E3%81%AF%E5%87%BA%E5%BC%B5%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%AE%E8%B3%AA%E5%95%8F%E3%81%AB%E5%9B%9E%E7%AD%94%E3%81%99%E3%82%8B%E6%99%82%E9%96%93%E3%81%8C%E9%99%90%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E3%81%AF%E6%AC%A1%E3%81%AE%E5%BC%8F%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20style%3D%22color%3A%20%2351626f%3B%20background-color%3A%20%23ffffff%3B%20border%3A%200px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20border%3A%200px%3B%20font-weight%3A%20inherit%3B%20font-size%3A%2010pt%3B%22%3E%E6%B8%A9%E5%BA%A6%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20border%3A%200px%3B%20font-weight%3A%20inherit%3B%20font-size%3A%2010pt%3B%22%3E%3CSTRONG%20style%3D%22border%3A%200px%3B%20font-weight%3A%20bold%3B%20font-size%3A%2013.3333px%3B%22%3Efloat%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20black%3B%20border%3A%200px%3B%20font-weight%3A%20inherit%3B%20font-size%3A%2010pt%3B%22%3E)%20((%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20border%3A%200px%3B%20font-weight%3A%20inherit%3B%20font-size%3A%2010pt%3B%22%3E%3CSTRONG%20style%3D%22border%3A%200px%3B%20font-weight%3A%20bold%3B%20font-size%3A%2013.3333px%3B%22%3Eshort%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20black%3B%20border%3A%200px%3B%20font-weight%3A%20inherit%3B%20font-size%3A%2010pt%3B%22%3E)((RawData%5B3%5D%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(RawData%5B4%5D%20%26amp%3B%200xF0))%20%26gt%3B%26gt%3B%204)%20*%200.0625%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22color%3A%20%2351626f%3B%20background-color%3A%20%23ffffff%3B%20border%3A%200px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20border%3A%200px%3B%20font-weight%3A%20inherit%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3ERawData%5B3%5D%20%3D%20OUT_T_MSB%20%3D%20FF%E3%81%8A%E3%82%88%E3%81%B3RawData%5B4%5D%20%3D%20OUT_T_LSB%20%3D%20F0%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81-0.0625%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E6%98%8E%E6%97%A5%E3%82%AA%E3%83%95%E3%82%A3%E3%82%B9%E3%81%AB%E6%88%BB%E3%81%A3%E3%81%9F%E3%82%89%E5%86%8D%E5%BA%A6%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E7%A7%81%E3%81%AE%E8%A8%98%E6%86%B6%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%91%E3%82%8C%E3%81%B0%E3%80%810xFFF0%20%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E5%AE%9F%E9%9A%9B%E3%81%AB%E3%81%AF%20-0.0625%20%E3%81%8C%E5%BE%97%E3%82%89%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%83%88%E3%83%BC%E3%83%9E%E3%82%B9%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CEM%20style%3D%22border%3A%201pt%20none%20windowtext%3B%20font-weight%3A%20inherit%3B%20font-size%3A%209pt%3B%20padding%3A%200in%3B%22%3EPS%3A%20%E3%81%93%E3%81%AE%E5%9B%9E%E7%AD%94%E3%81%8C%E8%B3%AA%E5%95%8F%E3%81%AE%E8%A7%A3%E6%B1%BA%E3%81%AB%E5%BD%B9%E7%AB%8B%E3%81%A3%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%80%8C%E6%AD%A3%E8%A7%A3%E3%80%8D%E3%81%BE%E3%81%9F%E3%81%AF%E3%80%8C%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A3%E3%81%9F%E3%80%8D%E3%81%A8%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%80%82%3C%2FEM%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E