HDC1080

HDC1080 的概述以及 HDC1080 用OSS-ECAL的提供情况。HDC1080 是 Texas Instruments 公司生产的 温湿度传感器 IC(-40 至 +125°C,0.0 至 100.0%RH)。
MCU interface : I2C

注意: 本资源的原始语言为英语。 翻译仅为方便起见提供概要,可能使用了机器翻译,我们对翻译的准确性和合理性不作任何保证。 此外,在进行实际设计等操作前,请务必参考最新版本的Datasheet。

HDC1080

概述

HDC1080是一款内置温度传感器的数字湿度传感器,具有极低的功耗和出色的测量精度。HDC1080可在广泛的电源范围内运行,为各种应用提供低成本、低功耗的解决方案,替代竞争对手的产品。湿度和温度传感器已通过工厂校准。

特点

  • 相对湿度精度 ±2% (typical)
  • 温度精度 ±0.2°C (typical)
  • 高湿度环境下出色的稳定性
  • 14bit测量分辨率
  • 100 nA 睡眠模式电流
  • 平均供电电流:
    710nA@1sps、11bit RH测量
    1.3μA@1sps、11bit RH及温度测量
  • 电源电压 2.7 V~5.5 V
  • 小型 3mm x 3mm设备占用空间
  • I2C 接口

OSS-ECAL规格

API 函数

OSS-ECAL API 函数基本上被假定为周期性Thread (TASK) 的函数调用。

etSTS oHDC1080( etCMD cmd, uint16 cfg, stHDC1080_O* rlt )

oHDC1080函数是一个API函数,它根据参数cmd执行的命令来处理HDC1080。

备注:
测量时间如下。(小数点后不足1毫秒的部分向上取整)
温度:11位转换 3.65毫秒,14位转换 6.35毫秒
湿度:8位转换 2.50ms,11位转换 3.65ms,14位转换 6.5ms
测量时间的计算基于调用本API函数的线程周期,因此请将线程周期设置为THREAD_OSS_ECAL_PERIOD[ms]。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_EXE处理中
eSTS_ERR_MIN最小温度误差(rlt.temperature 为最小温度)

最小湿度误差(rlt.humidity 为最小湿度)
eSTS_ERR_MAX最大温度误差(rlt.temperature为最大温度)

最大湿度误差(rlt.humidity为最大湿度)
eSTS_ERR_COMMAND_CODE命令选择错误
eSTS_ERR_DIAG如果使用以下命令比较结果为 NG
eCMD_DIAG_DEVI_ID
eCMD_DIAG_MANU_ID
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INetCMD cmdOSS-ECAL 指令码
eCMD_WRITE_CFG将cfg的值写入配置寄存器(指针寄存器0x02)的命令
1. 根据温度和湿度的转换位数计算测量时间
2. 将cfg的值写入 “Configuration Register”( “Pointer Register” 0x02)
eCMD_READ_TEMP该命令读取温度寄存器中的值,将其转换为温度并存储在 rlt.temperature 中。
1. 将0x00写入 “Pointer Register”
2. 等待测量时间结束
  等待期间返回值为eSTS_EXE
3. 读取 “Temperature Register” 的值
4. 将 “Temperature Register” 的读取值转换为温度
  温度=(读取值/增益系数)+温度偏移值
  (最小值, 最大值)
5. 将温度保存到rlt.temperature中
eCMD_READ_HUMI读取湿度注册表的值,将其转换为湿度值,并将该湿度值保存到rlt.humidity中的命令。
1. 将0x01写入 “Pointer Register”
2. 等待测量时间结束
等待期间返回值为eSTS_EXE
3. 读取 “Humidity Register” 的值
4. 将 “Humidity Register” 读取的值转换为湿度
  湿度=读取的值/增益系数
  (最小值,最大值限制)
5. 将湿度保存到rlt.humidity中
eCMD_READ_TEMP_HUMI读取湿度寄存器(Humidity Register)和温度寄存器(Temperature Register)的值,将这些值转换为温度和湿度,并将转换后的温度和湿度分别保存到rlt.temperature和rlt.humidity中的命令。
1. 将0x00写入”Pointer Register”
2. 等待测量时间结束
等待期间返回值eSTS_EXE
3. 读取 “Temperature Register” 的值和 “Humidity Register” 的值
4. 将 “Temperature Register” 读取的值转换为温度
  温度=(读取的值/增益系数)+温度偏移值
  (最小值, 最大值限制)
5. 将 “Humidity Register” 读取的值转换为湿度
  湿度=读取的值/增益系数
  (最小值, 最大值限制)
6. 将温度保存到rlt.temperature
7. 将湿度保存到rlt.humidity
eCMD_READ_SERI_ID读取序列号ID的值,并将该值保存到rlt.serialID中的命令
1. 将0xFB写入 “Pointer Register”
2. 读取 “Serial ID ( First )”
3. 将0xFC写入 “Pointer Register”
4. 读取 “Serial ID ( Mid )”
5. 将0xFD写入 “Pointer Register”
6. 读取 “Serial ID ( Last )”
7. 将读取的值保存到rlt.serialID中
eCMD_READ_CFG读取 “Configuration Register” 的值,并将该值保存到rlt.config中的命令
1. 将0x02写入 “Pointer Register”
2. 读取 “Configuration Register”
3. 将读取的值保存到rlt.config中
eCMD_DIAG_DEVI_ID读取 “DeviceID Register” 的值,并将该值与0x1050进行比较,然后将比较结果作为返回值返回的命令
1. 将0xFF写入 “Pointer Register”
2. 读取 “DeviceID Register”
3. 将读取的值与0x1050进行比较,并将比较结果作为返回值返回
 True … eSTS_FIN
 False … eSTS_ERR_DIAG
eCMD_DIAG_MANU_ID读取“ManufacturerID Register”的值,并将该值与0x5449进行比较,然后将比较结果作为返回值返回的命令
1. 将0xFE写入 “Pointer Register”
2. 读取 “ManufacturerID Register”
3. 将读取的值与0x5449进行比较,并将比较结果作为返回值返回
 True … eSTS_FIN
 False … eSTS_ERR_DIAG
uint16 cfg“Configuration register (Pointer 0x02)” 配置数据cfg的设置请参阅数据手册 “Configuration Register Description”
参数 OUTstHDC1080_O* rlt从 HDC 1080 收到的数据
float32 temperature温度 [°C]
float32 humidity湿度 [%RH]
uint16 configRegister 0x02 之値
uint64 serialIDRegister 0xFB 至 0xFD之値
etSTS oHDC1080_WRITE_CFG( uint16 cfg )

oHDC1080_WRITE_CFG 函数是用于向 HDC1080 的 Configuration Register(Pointer Register 0x02)写入数据的 API 函数。

1. 根据温度和湿度的转换位数计算测量时间
2. 将cfg的值写入Configuration Register(Pointer Register 0x02)

备注:
测量时间如下。(小数点后不足1毫秒的部分向上取整)
温度:11位转换 3.65毫秒,14位转换 6.35毫秒
湿度:8位转换 2.50ms,11位转换 3.65ms,14位转换 6.5ms
测量时间的计算基于调用本API函数的线程周期,因此请将线程周期设置为THREAD_OSS_ECAL_PERIOD[ms]。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_EXE处理中
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INuint16 cfgConfiguration register (Pointer 0x02) 设置数据cfg的设置,请参阅 Datasheet “Configuration Register Description”部分
etSTS oHDC1080_READ_TEMP( stHDC1080_O* rlt )

oHDC1080_READ_TEMP函数是一个API函数,用于读取HDC1080的“Temperature Register”的值,将其转换为温度,并将其保存到rlt.temperature中。

  1. 将0x00写入 “Pointer Register”
  2. 等待测量时间结束
    等待期间返回值为eSTS_EXE
  3. 读取 “Temperature Register” 的值
  4. 将 “Temperature Register” 的读取值转换为温度
    温度=(读取值/增益系数)+温度偏移值
    (最小值, 最大值)
  5. 将温度保存到rlt.temperature中

备注:
测量时间的计算基于调用本API函数的线程周期,因此请将线程周期设置为THREAD_OSS_ECAL_PERIOD[ms]。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_EXE处理中
eSTS_ERR_MIN最小温度误差(rlt.temperature 为最小温度)
eSTS_ERR_MAX最大温度误差(rlt.temperature为最大温度)
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 OUTstHDC1080_O* rlt从 HDC 1080 收到的数据
float32 temperature温度 [°C]
float32 humidity湿度 [%RH](未更新)
uint16 configRegister 0x02 之値(未更新)
uint64 serialIDRegister 0xFB 至 0xFD之値(未更新)
etSTS oHDC1080_READ_HUMI( stHDC1080_O* rlt )

oHDC1080_READ_HUMI函数用于读取HDC1080的“Humidity Register”值,将其转换为湿度值,并保存到rlt.humidity中。这是一个API函数。

  1. 将0x01写入 “Pointer Register”
  2. 等待测量时间结束
    等待期间返回值为eSTS_EXE
  3. 读取 “Humidity Register” 的值
  4. 将 “Humidity Register” 的读取值转换为湿度
    湿度=(读取值/增益系数)
    (最小值, 最大值)
  5. 将湿度保存到rlt.humidity中

备注:
测量时间的计算基于调用本API函数的线程周期,因此请将线程周期设置为THREAD_OSS_ECAL_PERIOD[ms]。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_EXE处理中
eSTS_ERR_MIN最小湿度误差(rlt.humidity 为最小湿度)
eSTS_ERR_MAX最大湿度误差(rlt.humidity为最大湿度)
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 OUTstHDC1080_O* rlt从 HDC 1080 收到的数据
float32 temperature温度 [°C](未更新)
float32 humidity湿度 [%RH]
uint16 configRegister 0x02 之値(未更新)
uint64 serialIDRegister 0xFB 至 0xFD之値(未更新)
etSTS oHDC1080_READ_TEMP_HUMI( stHDC1080_O* rlt )

oHDC1080_READ_TEMP_HUMI 函数是用于读取 HDC1080 的“Humidity Register”和“Temperature Register”的值,并将这些值转换为温度和湿度,然后将转换后的温度和湿度保存到 rlt.temperature 和 rlt.humidity 中的 API 函数。

备注:
测量时间的计算基于调用本API函数的线程周期,因此请将线程周期设置为THREAD_OSS_ECAL_PERIOD[ms]。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_EXE处理中
eSTS_ERR_MIN最小温度误差(rlt.temperature 为最小温度)

最小湿度误差(rlt.humidity 为最小湿度)
eSTS_ERR_MAX最大温度误差(rlt.temperature为最大温度)

最大湿度误差(rlt.humidity为最大湿度)
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 OUTstHDC1080_O* rlt从 HDC 1080 收到的数据
float32 temperature温度 [°C]
float32 humidity湿度 [%RH]
uint16 configRegister 0x02 之値(未更新)
uint64 serialIDRegister 0xFB 至 0xFD之値(未更新)
etSTS oHDC1080_READ_SERI_ID( stHDC1080_O* rlt )

oHDC1080_READ_SERI_ID 函数是一个 API 函数,用于读取 HDC1080 的“Serial ID”值,并将该值保存到 rlt.serialID 中。

  1. 将0xFB写入 “Pointer Register”
  2. 读取 “Serial ID ( First )”
  3. 将0xFC写入 “Pointer Register”
  4. 读取 “Serial ID ( Mid )”
  5. 将0xFD写入 “Pointer Register”
  6. 读取 “Serial ID ( Last )”
  7. 将读取的值保存到rlt.serialID中

备注:

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 OUTstHDC1080_O* rlt从 HDC 1080 收到的数据
float32 temperature温度 [°C](未更新)
float32 humidity湿度 [%RH](未更新)
uint16 configRegister 0x02 之値(未更新)
uint64 serialIDRegister 0xFB 至 0xFD之値
etSTS oHDC1080_READ_CFG( stHDC1080_O* rlt )

oHDC1080_READ_CFG函数是一个API函数,用于读取HDC1080的“Configuration Register”的值,并将该值保存到rlt.config中。

  1. 将0x02写入 “Pointer Register”
  2. 读取 “Configuration Register”
  3. 将读取的值保存到rlt.config中

备注:
请参阅“Datasheet”中的“Configuration Register Description”。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 OUTstHDC1080_O* rlt从 HDC 1080 收到的数据
float32 temperature温度 [°C](未更新)
float32 humidity湿度 [%RH](未更新)
uint16 configRegister 0x02 之値
uint64 serialIDRegister 0xFB 至 0xFD之値(未更新)
etSTS oHDC1080_DIAG_DEVI_ID( void )

oHDC1080_DIAG_DEVI_ID 函数是一个 API 函数,用于读取 HDC1080 的“DeviceID Register”的值,并将该值与 0x1050 的比较结果作为返回值返回。

  1. 将0xFF写入 “Pointer Register”
  2. 读取 “DeviceID Register”
  3. 将读取的值与0x1050进行比较,并将比较结果作为返回值返回
    True … eSTS_FIN
    False … eSTS_ERR_DIAG

备注:

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_DIAGDeviceID Register的值与0x1050不一致
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误
etSTS oHDC1080_DIAG_MANU_ID( void )

oHDC1080_DIAG_MANU_ID 函数是一个 API 函数,用于读取 HDC1080 的“ManufacturerID Register”的值,并将该值与 0x5449 的比较结果作为返回值返回。

  1. 将0xFE写入 “Pointer Register”
  2. 读取 “ManufacturerID Register”
  3. 将读取的值与0x5449进行比较,并将比较结果作为返回值返回
    True … eSTS_FIN
    False … eSTS_ERR_DIAG

备注:

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_DIAGManufacturerID Register的值与0x5449不一致
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
(iMXRT1051B1052B, STM32F4)
eSTS_ERR_HAL_I2CHAL I2C 错误

HAL 支持列表

OSS-ECAL 的 HAL 支持如下。 请注意,即使使用相同的 HAL,不同的版本、MCU 和开发环境也可能无法协同工作。 该列表正在按顺序扩展。

ManufacturerSDK/IDE ToolHAL NameVerHALNAMESupport
ArduinoArduino IDEArduino1.8.6ARDUINOX
ArmKeil MDK v6Mbed OS6.17.0MBEDX
DebianGNU/Linux10.3LinuxX
InfineonModusToolboxmtb-hal-cat12.4.3ModusToolboxX
NXPMCUXpresso SDKSDK_2.x_EVKB-IMXRT10502.16iMXRT1051B1052BX
RenesasSynergy Software PackageHAL2.6.0SSPX
STMicroelectronicsSTM32CubeSTM32CubeF4V1.28.1STM32F4X
开发环境

OSS-ECAL 开发过程中的 MCU 和开发环境如下。

HALNAMEManufacturerBoardMCUIDE
ARDUINOArduino1.Mega 2560 Rev3
2.Arduino Pro Mini 3.3V
ATmega2560
ATmega328P
Arduino IDE 2.3.3
MBEDSTMicroelectronicsSTM32 Nucleo-64 boardsSTM32F401RETxArm Keil Studio Cloud
LinuxBeagleBoardBeagleBone BlackTI AM335x
ModusToolboxInfineonCY8CPROTO-063-BLE PSoC 6 BLE Prototyping KitCYBLE-416045-02ModusToolbox
iMXRT1051B1052BNXPIMXRT1050-EVKBi.MX RT1050MCUXpresso IDE
SSPRenesasS7G2 SKR7FS7G27H3A01CFCe² studio for Renesas Synergy
STM32F4STMicroelectronicsSTM32 Nucleo-64 boardsSTM32F401RETxSTM32CubeIDE

文件结构

Folder*FileSummary
HDC1080_HALNAME_010000/samplesample.c (.cpp)Sample application program
sample.hSample application header
HDC1080_HALNAME_010000oHDC1080.c (.cpp)OSS-ECAL program for HDC1080
oHDC1080.hOSS-ECAL header for HDC1080
oss_ecal.hOSS-ECAL common header
HDC1080_ARDUINO.inoSample application programs for Arduino
user_setting.c (.cpp)User configured constants and tables
user_setting.hUser configuration Header
oHAL_i2c_stm32f4.cHAL Program for STM32Cube FW_F4
oHAL_i2c_stm32f4.hHAL Header for STM32Cube FW_F4
readme.mdReadme
OSS-ECAL Terms of Use.txtOSS-ECAL Terms of Use

* 有关 HALNAME,请参阅 HAL 支持。

OSS-ECAL 下载

请从 OSS-ECAL 英文网站下载 OSS-ECAL。下载时,请先登录 OSS-ECAL 英文网站,然后再进行操作。

内置方法

如何将 OSS-ECAL 纳入用户程序

如何在用户程序中整合多个 OSS-ECAL(相同的 MCU 功能)

如何在用户程序中整合多个 OSS-ECAL(不同 MCU 功能)

如何将多个相同的电子元件整合到一个用户程序中

如何通过更换电子元件减少对用户程序的影响

注意

OSS-ECAL 示例版本不适用于线程(任务)或不同优先级的中断。 请不要像下面的示例那样使用它。

例如 如果每个传感器被分配到相同的 ADC 组,而 OSS-ECAL API 在具有不同优先级的进程中执行,则可能无法获得正确的值。

ADC Gr0 Ch0 Temperature sensor AD22100A 每隔 100 毫秒采集一次温度(低优先级)
ADC Gr0 Ch1 Pressure sensor   MPX5999D 事件中断时采集压力(高优先级)

OSS-ECAL Chinese
error: 内容受保护 !