This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMP461: Are temperature low byte values signed or unsigned integers?

Part Number: TMP461

Could anyone please clarify if low byte values for temperatures are signed or unsigned integers in TMP461?

  • Low byte values are unsigned. Low byte resolution is 0.0625°C per count.

    The high byte values are signed. Resolution is 1°C per count. Negative numbers are represented in twos complement format.

    -Kelvin
  • And I assume that is the case for all temperature-related 12-bit values that are split in MSB (bits [11:4]) and LSB (bits [3:0]) registers, right?
    E.g.:
    Remote Temperature Offset Register (high byte) (address 0x11) is a signed integer, 1 degC step
    Remote Temperature Offset Register (low byte) (address 0x12) is an unsigned integer (bits [7:4]), 0.0625 degC step
  • Artsiom,

    My answer was not accurate. In standard mode, the high byte and low byte when combined together represent a single 12-bit signed value (after we decimate the last 4 bits in the low byte). Bits [11:4] of the ADC result are stored in the high byte and bits [3:0] of the ADC result are stored in the low byte bits [7:4].

    -Kelvin
  • Great, it makes it more straight-forward. So just to double-check:

    If the measured local temperature is -14.25 degC then its 12-bit signed representation is 0b111100011100 and it will be stored as follows:
    Address 0x00, Local Temperature Register (high byte), bits[7:0] are 0b11110001
    Address 0x15, Local Temperature Register (low byte), bits[7:4] are 0b1100
  • Yes correct.
    +14.25 are stored as 0x0E.40 (14/1=0x0E and 0.25 is 0.25/.0625 = 0x04 but left-justified so it becomes 0x40; together it's 0x0E.40)

    or you can just do 14.25/0.0625=228=0xE4 and then pad it with the last four empty bits and get 0x0E.40.

    -14.25 are stored as 0xF1.C0 (2's complement)

    Check result:


    After decimation of last 4 bits:
    0xFF.1C = -228
    -228 code*0.0625C/code= -14.25C (answer checked out)

    -Kelvin