作者:AnthonyYMH
前排提示:在进行数据传输过程中,不要使用打印,否则会影响时序,造成数据读取错误,可以先用变量保存,读取完毕后在打印
驱动代码下载地址:
https://gitee.com/anthonyymh/driver-file/blob/master/HDC1080.zip
Pin引脚以功能
IIC时序要求
串行总线地址
要与HDC1080通信,主机必须首先通过从机地址字节寻址从机设备。 该地址字节由七个地址位和一个指示执行读或写操作意图的方向位组成。 HDC1080的I2C地址为1000000(7位地址)。
读写操作
要访问HDC1080上的特定寄存器,请将所需的寄存器地址值写入指针寄存器。指针值是从地址字节后R / W位为低的第一个字节。 对HDC1080的每次写操作都需要一个指针寄存器的值(参见图10)。
当从HDC1080读取时,通过写操作存储在指针中的最后一个值用于确定读操作访问哪个寄存器。 要更改读操作的指针寄存器,必须将新值写入指针寄存器。 该事务通过发出R / W位为低的从地址字节,然后是指针字节来完成。 无需其他数据(参见图11)。
主器件可以产生START条件并发送R / W位为高的从器件地址字节以启动读命令。 注意,寄存器字节首先发送MSB,然后发送LSB。 只读寄存器中的写操作,例如(DEVICE ID,MANUFACTURER ID,SERIAL ID),在每个数据后返回NACK字节; 对未使用地址的读/写操作在指针后返回NACK; I2C地址错误的读/写操作会在I2C地址后返回NACK。
设备测量配置
默认情况下,HDC1080将首先执行温度测量,然后进行湿度测量。 上电时,HDC1080进入低功耗睡眠模式,无法主动测量。 使用以下步骤执行温度和湿度测量,然后检索结果:
(a)通过将位[12]设置为1,将采集模式设置为测量温度和湿度。
从寄存器地址0x00读取温度数据,然后在单个事务中读取寄存器地址0x01的湿度数据,如图14所示。如果测量结果尚不可用,则读操作将返回NACK,如图13所示。
(a)通过将位[12]设置为0,将采集模式设置为独立测量温度或湿度。
【注意】
在温度或相对湿度测量期间,可以读取输出寄存器(地址0x00和0x01),而不会影响任何正在进行的测量。 请注意,在测量正在进行时写入地址0x00或0x01将中止正在进行的测量。
寄存器
HDC1080有一个8位指针,用于寻址给定的数据寄存器。 指针标识哪个数据寄存器应响应双线总线上的读或写命令。 该寄存器随每个写命令设置。 在执行读取命令之前,必须发出写入命令以在指针中设置正确的值。 指针的上电复位(POR)值为0x00,选择温度测量。
温度寄存器
温度寄存器是二进制格式的16位结果寄存器(2个LSB D1和D0始终为0)。 采集的结果总是14位值。 结果的准确性与所选的转换时间有关。 可以从输出数据计算温度:
湿度寄存器
湿度寄存器是二进制格式的16位结果寄存器(2个LSB D1和D0始终为0)。 采集结果始终为14位值,而精度与所选转换时间有关。 可以从输出数据计算湿度: