HDC1080温湿度驱动 IIC I2C STM32

作者: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进入低功耗睡眠模式,无法主动测量。 使用以下步骤执行温度和湿度测量,然后检索结果:

  1. 在寄存器地址0x02中配置采集参数:

(a)通过将位[12]设置为1,将采集模式设置为测量温度和湿度

(b)设置所需的温度测量分辨率:

 - 将位[10]设置为0以获得14分辨率。

 - 将位[10]设置为1以获得11分辨率。

(c)设置所需的湿度测量分辨率:

 - 将位[9:8]设置为00,以获得14位分辨率。

 - 将位[9:8]设置为01以获得11位分辨率。

 - 将位[9:8]设置为10,分辨率为8位。

  1. 通过执行指针写入事务并将地址指针设置为0x00来触发测量

 - 将地址指针设置为0x00以进行温度测量。

 - 将地址指针设置为0x01以进行湿度测量。

  1. 根据转换时间等待测量完成
  2. 读取输出数据:

从寄存器地址0x00读取温度数据,然后在单个事务中读取寄存器地址0x01的湿度数据,如图14所示。如果测量结果尚不可用,则读操作将返回NACK,如图13所示。

如果只需要测量湿度或温度,以下步骤将执行测量并检索结果:

1.在寄存器地址0x02中配置采集参数:

(a)通过将位[12]设置为0,将采集模式设置为独立测量温度或湿度

(b)对于温度测量,设置所需的温度测量分辨率:

 - 将位[10]设置为0以获得14位分辨率。

 - 将位[10]设置为1以获得11位分辨率。

(c)对于湿度测量,设置所需的湿度测量分辨率:

 - 将位[9:8]设置为00,以获得14位分辨率。

 - 将位[9:8]设置为01以获得11位分辨率。

 - 将位[9:8]设置为10,分辨率为8位。

后面的步骤和同时测量温度和湿度的一样

【注意】

在温度或相对湿度测量期间,可以读取输出寄存器(地址0x00和0x01),而不会影响任何正在进行的测量。 请注意,在测量正在进行时写入地址0x00或0x01将中止正在进行的测量。

寄存器

HDC1080有一个8指针,用于寻址给定的数据寄存器。 指针标识哪个数据寄存器应响应双线总线上的读或写命令。 该寄存器随每个写命令设置。 在执行读取命令之前,必须发出写入命令以在指针中设置正确的值。 指针的上电复位(POR)值为0x00,选择温度测量。

温度寄存器

温度寄存器是二进制格式的16位结果寄存器(2个LSB D1和D0始终为0)。 采集的结果总是14位值。 结果的准确性与所选的转换时间有关。 可以从输出数据计算温度:

湿度寄存器

湿度寄存器是二进制格式的16位结果寄存器(2个LSB D1和D0始终为0)。 采集结果始终为14位值,而精度与所选转换时间有关。 可以从输出数据计算湿度:

配置寄存器

转化时间

精度

范围

  • 12
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值