主题中讨论的其他器件:HDC2080、 TMP116、
尊敬的专家:
我已经尝试使用 i2ctmp 示例从 HDC2080读取温度和湿度值、但我只得到0。 我已将我的代码与 syscfg 文件共享给大家参考、请检查并指出我犯的错误。
此致
苏里亚
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的专家:
我已经尝试使用 i2ctmp 示例从 HDC2080读取温度和湿度值、但我只得到0。 我已将我的代码与 syscfg 文件共享给大家参考、请检查并指出我犯的错误。
此致
苏里亚
谢谢回复、是的、我知道我更改了器件地址和其他设置。 我不知道该怎么办。" 我分享了串行日志作为参考。
启动 i2ctmp 示例
I2C 已初始化!
检测到具有从器件地址0x41的 TMP116传感器
I2C 从器件地址0x40未确认!
采样使用最后一个已知的传感器。
样本0:-40.0000 (C)、0.0000
样本1:-40.0000 (C)、0.0000
样本2:-40.0000 (C)、0.0000
样本3:-40.0000 (C)、0.0000
样本4:-40.0000 (C)、0.0000
样本5:-40.0000 (C)、0.0000
样本6:-40.0000 (C)、0.0000
样本7:-40.0000 (C)、0.0000
样本8:-40.0000 (C)、0.0000
样本9:-40.0000 (C)、0.0000
样本10:-40.0000 (C)、0.0000
样本11:-40.0000 (C)、0.0000
样本12:-40.0000 (C)、0.0000
样本13:-40.0000 (C)、0.0000
样本14:-40.0000 (C)、0.0000
样本15:-40.0000 (C)、0.0000
样本16:-40.0000 (C)、0.0000
样本17:-40.0000 (C)、0.0000
样本18:-40.0000 (C)、0.0000
样本19:-40.0000 (C)、0.0000
I2C 已关闭!
此致
Surya.
请尝试访问 https://sunmaysky.blogspot.com/2016/02/basic-example-to-use-hdc1080-on-cc2650.html 。 HDC2080应该类似。
我尝试了链接、我收到了器件 ID 和制造商 ID、但温度和湿度仍然为零、请检查我的代码和串行日志。
对于(采样= 0;采样< 5;采样++)
{
txBuffer[0]=0x00;
i2cTransaction.slaveAddress=0x41;//HDC_ADDR;
i2cTransaction.writeCount = 0;
i2cTransaction.readBuf = rxBuffer;
i2cTransaction.ReadCount = 4;
如果(I2C_transfer (i2c、&i2cTransaction))
{
/*
*从收到的数据中提取 C 级;
*参见 TMP 传感器数据表
*/
temperature = rxBuffer[0];
temperature =(temperature << 8)|(rxBuffer[1]);
display_printf (display、0、0、"\n data OK:0x%x 0x%x"、rxBuffer[0]、rxBuffer[1]);
//温度*= 0.0078125;
浮点 f =温度;
f =((f * 165.0f)/ 65536.0f)- 40.0f;
int16_t HUMIDITY = rxBuffer[2];
HUMIDITY =(HUMIDITY << 8)| rxBuffer[3];
浮点 H =湿度;
H =(H/65536.0)* 100.0;
display_printf (display、0、0、"样本%u:%0.2f (C)、%0.2f "、样本、f、H);
}
否则
{
i2cErrorHandler (&i2cTransaction、display);
}
串行日志!!!!!!
启动 i2ctmp 示例
I2C 已初始化!
制造编号:4954
器件 ID:D07
检测到具有从器件地址0x41的 TMP2080传感器
I2C 从器件地址0x40未确认!
采样使用最后一个已知的传感器。
数据正常:0x0 0x0
样本0:-40.0000 (C)、0.0000
数据正常:0x0 0x0
样本1:-40.0000 (C)、0.0000
数据正常:0x0 0x0
样本2:-40.0000 (C)、0.0000
数据正常:0x0 0x0
样本3:-40.0000 (C)、0.0000
数据正常:0x0 0x0
样本4:-40.0000 (C)、0.0000
I2C 已关闭!
此致
苏里亚
默认情况下、禁用自动测量模式(AMM)。 复位时 RH 和温度寄存器也为零。 您必须在配置寄存器中选择一个 AMM、或在 测量配置寄存器中触发单个测量。
来自 HDC2080.c dev.ti.com/.../index.html
/* * ======== HDC2080_read ======== * Read temperature and humidity registers */ void HDC2080_read(HDC2080_Handle sensor, uint32_t result[]) { uint8_t txBuf[2]; uint8_t rxBuf[4] = {0}; /* If AMM is disabled trigger conversion */ if (!(sensor->config & HDC2080_CONFIG_AMM_MASK)) { /* Reset AMM to start measurement */ txBuf[0] = HDC2080_MEAS_CONFIG; txBuf[1] = sensor->measConfig | HDC2080_MEAS_CONFIG_MEAS_TRIG_START; mcu_i2cTransfer(sensor->busId, sensor->devAddr, txBuf, 2, NULL, 0); /* Wait for conversion to complete */ mcu_msWait(sensor->convWaitHum); } /* Read registers, LOW and HIGH bytes */ txBuf[0] = HDC2080_TEMP_LOW; mcu_i2cTransfer(sensor->busId, sensor->devAddr, txBuf, 1, rxBuf, 4); result[0] = (uint16_t)rxBuf[1] << 8 | rxBuf[0]; result[1] = (uint16_t)rxBuf[3] << 8 | rxBuf[2]; }
任
您好, 任学曼
感谢您的回复,下面这行我找不到 sensor->measConfig 值,请帮助查找该值,并且我已按照您的建议修改了代码,请检查并告诉我这是否可以...
txBuf[1]= SENSOR->measConfig | HDC2080 _MEAS_CONFIG_MEAS_TRIG_START;
//#define HDC2080_MEAS_CONFIG 0x0FU //#define HDC2080_MEAS_CONFIG_MEAS_TRIG_START 0x01U txBuffer[0] =0x0F; txBuffer[1] =0x01; i2cTransaction.slaveAddress=0x41;//HDC_ADDR; i2cTransaction.writeCount = 2; i2cTransaction.readBuf = rxBuffer; i2cTransaction.readCount = 0; if (I2C_transfer(i2c, &i2cTransaction)) { Display_printf(display, 0, 0, "RESET_AMM_OK"); } txBuffer[0] =0x00; i2cTransaction.slaveAddress=0x41;//HDC_ADDR; i2cTransaction.writeCount = 1; i2cTransaction.readBuf = rxBuffer; i2cTransaction.readCount = 4; if (I2C_transfer(i2c, &i2cTransaction)) { /* * Extract degrees C from the received data; * see TMP sensor datasheet */ temperature = rxBuffer[0] ; temperature = (temperature << 8) | (rxBuffer[1]); Display_printf(display, 0, 0, "\n DATA OK: 0x%x 0x%x", rxBuffer[0], rxBuffer[1]); //temperature *= 0.0078125; float f =temperature; f = ((f * 165.0f) / 65536.0f) - 40.0f; int16_t humidity = rxBuffer[2]; humidity = (humidity << 8) | rxBuffer[3]; float H = humidity; H = (H/65536.0) * 100.0; Display_printf(display, 0, 0, "Sample %u: %0.2f (C), %0.2f ", sample, f,H); }
我提供的链接提供了完整的驱动程序源代码。 这只是一个展示需要延迟的读取操作的片段。
https://dev.ti.com/sysconfig/index.html?product=ascstudio&module=/ti/sensors/humiditysensor/HDC2080
谢谢。
任
请尝试参阅 LPSTK-CC1352R/HDC2080测量。