c - 如何转换温度传感器得到的值?

标签 c sensors i2c

我正在研究 ST 温度传感器( hts221 ) ,我使用 I2C 命令与传感器通信。

我从文档中看到如下文本。

在此处输入代码温度数据表示为 TEMP_OUT_H 和 TEMP_OUT_L 2 的补码。

下图是文档中的描述。 enter image description here

从传感器读取的温度数据如下所示

TEMP_OUT_L is 0xA8
TEMP_OUT_H is 0xFF

如何将TEMP_OUT_L和TEMP_OUT_H的值转换为温度数据?

提前致谢?

最佳答案

通过连接两个值中的位,形成单个 16 位值:

const temp_h = i2c_read_byte(TEMP_OUT_H);
const temp_l = i2c_read_byte(TEMP_OUT_L);
const uint16_t temp = (temp_h << 8) | temp_l;

这只是假设您有一个可用于读出两个寄存器的函数uint8_t i2c_read_byte(uint8_t address);

当然,下一步是将这个原始二进制数转换为某种适当单位的实际温度(例如摄氏度或开尔文)。为此,您需要从数据表中获取更多信息。

关于c - 如何转换温度传感器得到的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25322210/

相关文章:

c - 使用 XPath 返回多个节点的串联属性值字符串

c - 使用 OpenCV 测量光量?

android - 通过 NDK 访问 Android 传感器

c - pic32 起始位未清除——基本 I2C 设置

c - 对于相同的种子,由 C 中的 rand 生成的随机数序列是否保证始终相同?

java - Android中的传感器精确服务

c++ - 通过ADC和Arduino从惠斯通电桥产生奇怪的数据

linux - 在 Arch Linux 上安装 libi2c-dev

c - 用户空间中缺少 I2c eeprom 文件 - SFP 模块

使用具有已定义结构的方法进行 C 编程