Part Number:HDC1080
您好,我使用f28377S通过模拟IIC与HDC1080通信,读取0xFE寄存器的内容只能读到高字节0x54低字节为0x00,尝试读其他寄存器都是只能读到高字节,使用示波器观察波形发现 在读回高字节后,HDC1080立即将数据线拉高。
如下图所示
黄色为CLK 蓝色是SDA
左边第一个时钟为应答信号 向后八位是接收到的高字节(接收到0x10)
在第八位后 SDA出现了高 (此时主机还没有发出应答信号)
haonan she:
什么原因会导致出现这样的通信错误?与这个异常的高电平有关系吗?
,
Kailyn Chen:
您好,MSB之后发送端应该释放SDA,接收端把SDA拉低, 您这里SDA为高,所以收不到ACK信号,因此LSB也无法得到。
所以我怀疑是程序的问题呢。
,
haonan she:
修改过程序后问题依然存在 如图
在读出0x54后 就为00了
,
haonan she:
,
Kailyn Chen:
您好,应该是读时序弄错了,注意一下HDC1080的读写时序的配置是不同的,参考Figure11,可以发现在发送完 指针寄存器地址,收到ACK之后,需要主机重新发一个restart 重新开始命令,然后ACK信号,紧接着是寄存器的高八位MSB+ACK+LSB+NACK+stop。
整个配置顺序为START | Slave Address + W | ACK | Pointing Address | ACK | REPEATED START | Slave Address + R | ACK | Data MSB | ACK | Data LSB | NACK | STOP