×
单片机 > 单片机程序设计 > 详情

STM32 I2C HAL库读取HTU21D

发布时间:2020-05-18 发布时间:
|

以下代码为使用I2C库函数读取HTU21D温度数据的例程。


ret=HAL_I2C_Mem_Read(&hi2c1,0x80,0xf3,I2C_MEMADD_SIZE_8BIT,rx_buf,2,2000);


if(ret == HAL_OK)


{


rx_buf[1] &= 0xfc;


temp = rx_buf[0];


temp *= 256;    //wendu <<=8;


temp += rx_buf[1];


temp *= 17572;


temp /= 65536;


temp -= 4685;   //保留两位小数


temp /=10;


result = (int16_t)temp;


printf("temperature=%d ",result);


}


else


{


printf("ret=%d ",ret);


}


直接使用HAL_I2C_Mem_Read函数会有错误出现,需要对其进行修改。根据HTU21D读转换数据时,在发送读取命令之前,需要延迟一段时间,等待转换完成。而库函数没有设定等待时间。在I2C_RequestMemoryRead函数中,/* Generate Restart */注释之前添加 HAL_Delay(85)即可。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32 USB HID 键盘