一些啰嗦的地方就不翻译了,直扑重点。怎么用的部分。
POINTER REGISTER
Figure 8展示的是TMP102的内部寄存器,8位的寄存器Pointer Register用来定位其余几个寄存器。Pointer Register使用两个LSB(见Table 11)来决定哪一个寄存器去回应读或者写的命令。Table 1给出了Pointer Register 的每一位。对于写命令,P2到P7必须是0.Table 2给出了其余几个寄存器的地址。上电时P1/P0被赋值为‘00’,默认的配置下,一上电,TMP102即开始读取温度。
TEMPERATURE REGISTER
Temperature Register是一个12位的只读寄存器(将寄存器的EM位配置成0,详见Extended Mode章节),或者是一个13位的寄存器(将寄存器的EM位配置成0),这个寄存器里储存这最近一次通信的输出,要取得这一数据必须读2个字节,Table 3,4描述了这两个字节。注意,byte 1是最重要的字节,其次是byte 2。前12位(或Extended Mode时13位)用来描述温度。如果相应的信息不需要,可以不读取byte 2。温度数据的格式在Table 5, 6中有具体的说明。一个LBS相当于0.0625摄氏度。负数以二进制补码格式表示。在上电或者复位之后,Temperature Register的数据会保持0摄氏度,直到第一次通信完成。Byte 2的D0位表示是Normal Mode还是Extended Mode(D0为即是前述的EM位),进而区分这两种不同模式之下Temperature Register的数据格式。
对于正的温度:
二进制补码对正数不起作用。因此直接将数字转换成12位的二进制码,采用左对齐的格式。同时MSB(最高有效位)=0,表示正号。
Example: (+50°C)/(0.0625°C/count) = 800 = 320h = 0011 0010 0000
对于负温度:
获得二进制补码就是将温度绝对值的二进制码取反再加1,MBS为1代表负号。
Example: (|–25°C|)/(0.0625°C/count) = 400 = 190h = 0001 1001 0000
二进制补码: 1110 0110 1111 + 1 = 1110 0111 0000
综上,简单总结一下用法:
上电,给TMP102发一个八位的数据,每一位都是0,然后TMP102就会返回一个16位的数据,前12位是温度信息。通讯协议是I2C。