ZHCSR79A February 2024 – July 2024 TMP110
PRODUCTION DATA
TMP110 溫度寄存器使用 12 位格式。12 位與 16 位字的左側(cè)或最高有效側(cè)對齊。四個未使用的位位于右側(cè),即最低有效側(cè)。因此,需要進(jìn)行移位來丟棄額外的位。采用二進(jìn)制補(bǔ)碼來描述負(fù)溫度。在數(shù)據(jù)轉(zhuǎn)換為正確的有符號數(shù)據(jù)類型時,C 代碼可以輕松轉(zhuǎn)換二進(jìn)制補(bǔ)碼數(shù)據(jù)。Q 表示法描述了表示分?jǐn)?shù)結(jié)果的位數(shù)。4 位分?jǐn)?shù)數(shù)據(jù)(稱為 Q4)可提供 0.0625°C 分辨率。
參數(shù) | 值 |
---|---|
位 | 12 |
Q | 4 |
分辨率 | 0.0625 |
范圍 (+) | 127.9375 |
范圍 (–) | -128 |
25?C | 0x0190 |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
符號 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 0.5 | 0.25 | 0.125 | 0.0625 | - | - | - | - |
-128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 1/2 | 1/4 | 1/8 | 1/16 | - | - | - | - |
-27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
2-1 |
2-2 |
2-3 |
2-4 |
- | - | - | - |
/* 12-bit format will have 4 bits discarded by right shift
q4 is 0.062500 resolution
the following bytes represent 24.5C */
uint8_t byte1 = 0x18;
uint8_t byte2 = 0x80;
float f = (((int8_t) byte1 << 8 | byte2) >> 4) * 0.0625f;
int mC = (((int8_t) byte1 << 8 | byte2) >> 4) * 1000 >> 4;
int C = (int8_t) byte1;
同樣,在擴(kuò)展模式下,溫度寄存器以相同的分辨率 (Q4) 擴(kuò)展為 13 位格式。這會改變范圍和有效位,但分辨率保持不變。位移也會因此發(fā)生變化。擴(kuò)展模式的編碼和 C 代碼示例如下所示。
參數(shù) | 值 |
---|---|
位 | 13 |
Q | 4 |
分辨率 | 0.0625 |
范圍 (+) | 255.9375 |
范圍 (–) | -256 |
25?C | 0xC80 |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
符號 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 0.5 | 0.25 | 0.125 | 0.0625 | - | - | - |
-256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 1/2 | 1/4 | 1/8 | 1/16 | - | - | - |
-28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
2-1 |
2-2 |
2-3 |
2-4 | - | - | - |
/* 13-bit format will have 3 bits discarded by right shift
q4 is 0.062500 resolution
the following bytes represent 24.5C */
uint8_t byte1 = 0xC;
uint8_t byte2 = 0x40;
float f = (((int8_t) byte1 << 8 | byte2) >> 3) * 0.0625f;
int mC = (((int8_t) byte1 << 8 | byte2) >> 3) * 1000 >> 4;
int C = (((int8_t) byte1 << 8 | byte2) >> 3) >> 4;