工具/软件:
您好、
我正在处理 TMP1826芯片的通信问题。 我认为计时是正确的、因为芯片复位、器件检测以及数据写入和读取都正常工作。 当 I 读取 ScratchPad-1时、CRC 始终匹配、这一点得到了支持。 问题在于芯片返回的数据似乎无效。 以下是"读取暂存区1"操作的结果(复位、写入0xcc、写入0xbe、读取9个字节、校验 CRC):
[0] 0x43
[1] 0x80
[2] 0x0c
[3] 0xff
[4] 0x00
[5] 0x00
[6] 0x00
[7] 0xff
[8] 0x8e
计算得出的 CRC:0x8E
状态寄存器(0x0c = 0b00001100):
ALERT_HIGH R/RC 0
ALERT_LOW R/RC 0
保留 R 00
DATA_READY RC 1
POWER_MODE R 1
ARB_DONE R 0
LOCK_STATUS R 0
配置1寄存器(0x00 = 0b00000000):
TEMP_FMT RW 0
保留 RW 0
CONV_TIME_SEL RW 0
ALERT_MODE RW 0
AVG_SEL RW 0
CONV_MODE_SEL RW 000
访问类型代码:
R 读取
RC 读取以清除
R-0读取返回0
W 写入
W0CP 写入0以清除
温度:0x8043 = 32835 = 0b1000000001000011
有几件我不明白的事情:
- 为什么状态寄存器中的位5:4 (保留)没有值1?
- 当芯片通过 VDD 供电时、为什么位2 (POWER_MODE)的值为1?
- 但最重要的是:如何将温度寄存器 LSB 和 MSB (0x43和0x80)转换为以摄氏度为单位的温度?
芯片安装在 PCB 上的房间内、温度大约为25摄氏度。 温度寄存器有时会读取0x8040、0x8043、0x8077等值。 这些值 响应芯片的加热和冷却。
我在 TMP1826芯片上组装了两个相同的板、在这两个芯片上的行为类似。 读取的数据具有正确的 CRC、但没有意义。
我已经阅读了数据表以及应用手册 SBOA542和 SBAA588A、但我仍然无法弄清楚自己的错误。
芯片的连接方式如下:

当我们决定将 TMP1826芯片添加到 PCB 时没有可用的 UART、因此我不得不采用 bit-bang 操作。
提前感谢您提供的任何建议!
-罗斯
