主题中讨论的其他器件: HDC1010
使用 HDC2010、
发现当前数据表已在 I2C 通信描述中进行了写操作、当它应该在第16页上阅读时、认为表4和表5应该是:
起始、从器件地址(W)、Ack、寄存器地址、Ack、 START、Slave Addr (R)、Ack、Data……
总之、到目前为止、我可以通过将0x01写入寄存器0x0F 来生成读取命令、等待延迟并返回温度数据。
写入从器件地址(W)和0x00 (温度 LSB)、然后写入从器件地址(R)并读回两个字节我认为寄存器0x00和0x01应该是 LSB 和 MSB、顺序如下。
在阅读数据表时、它说这个顺序应该是 MSB、然后是 LSB。 第15页 第7.5.4节"请注意、首先发送寄存器字节 MSB、然后发送 LSB "
我知道首先发送 LSB、因为这是一个很容易改变的值、而不是 MSB。 用手指略微加热时、我得到的结果类似于0x3E LSB 和0x63 MSB、在室温下、我得到的结果类似于0x60 LSB 0x63 MSB。
更重要的是、数据表在第17页中指出"(2个 LSB D1和 D0始终为0)"、如果为 TRUE、则意味着温度数据的 MSB 字节将被发送 D0、D1、D2、D3、D4、D5、D6、D7
MSB 温度寄存器显示为7 6 5 4 3 2 1 0、并将 TEMP[15:8]写入下面。 这是不是说 D0和 D1是0和1、TEMP[8]=D7和 TEMP[9]=D6? 非常混乱。
HDC1010数据表稍微更清晰、但芯片略有不同。
除此之外、当使用 LSB 和 MSB 并将它们连接起来(MSB<<8 | LSB)并输入给定的公式时、我们得到的值类似于以摄氏度为单位的温度
我遇到的最大问题是读取湿度数据。 无论我是如何读取它们的、我始终会在寄存器0x02和0x03中获得0x00 0x00。
在触发 Take 采样寄存器(寄存器0x0F =数据0x01)后、我尝试首先读取它们、但结果相同。 我正在确保芯片设置为测量温度和湿度、并且我已经尝试了10、15和20ms 的延迟、以确保在为芯片(Tstart)供电后、测量有时间完成、并且在开始测量之前。
有人对我为什么没有湿度读数有任何建议吗?