You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于MSP430FR5969通过I2C读取TMP117温度传感器的问题咨询

问题1:PuTTY仅输出ReceiveBuffer[1]、ReceiveBuffer[0]缺失的原因
  • 检查I2C读操作配置:TMP117温度结果寄存器为16位,需要连续读取2字节,若I2C读取长度仅配置为1字节,只会将读到的单个字节存入ReceiveBuffer[1],ReceiveBuffer[0]无有效赋值。
  • 检查串口打印代码逻辑:确认输出语句是否漏写了ReceiveBuffer[0]的打印逻辑,仅保留了ReceiveBuffer[1]的输出。
  • 检查高低字节赋值逻辑:部分代码会将读回的16位数据高低字节互换后存入buffer,若你的代码默认将有效数据全部存入索引为1的位置,索引0自然无有效数据。
  • 检查ReceiveBuffer定义:若buffer长度仅定义为1字节,写入第二个字节时会触发越界覆盖,导致索引0的原始数据丢失。
问题2:16位原始温度数据转摄氏度的方法

TMP117返回的16位数据为有符号补码格式,分辨率为0.0078125℃/LSB,换算步骤如下:

  1. 拼接两个8位缓存数据为16位有符号整数,CCS开发环境参考代码:
// 若读回的高低字节顺序相反,互换ReceiveBuffer的索引即可
int16_t raw_temp = (ReceiveBuffer[0] << 8) | ReceiveBuffer[1];
  1. 乘以分辨率得到摄氏度数值:
float temp_celsius = raw_temp * 0.0078125f;

补充说明:只要用int16_t类型存储拼接后的原始数据,编译器会自动识别补码对应的正负值,无需手动做补码转换。0.0078125等价于1/128,也可写成raw_temp / 128.0f,计算结果完全一致。

内容的提问来源于stack exchange,提问作者user16449631

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 08:42:01