历史上的今天
今天是:2024年11月26日(星期二)
2018年11月26日 | STM32 I2C HAL库读取HTU21D
2018-11-26 来源:eefocus
以下代码为使用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\r",result);
}
else
{
printf("ret=%d\r",ret);
}
直接使用HAL_I2C_Mem_Read函数会有错误出现,需要对其进行修改。根据HTU21D读转换数据时,在发送读取命令之前,需要延迟一段时间,等待转换完成。而库函数没有设定等待时间。在I2C_RequestMemoryRead函数中,/* Generate Restart */注释之前添加 HAL_Delay(85)即可。
史海拾趣
|
EVC 提示错误 one or more file from the emulator for windows ce is missing.please ret 各位大虾们,帮帮菜鸟吧 刚装EVC,新建一工程编译后没问题,但出现报错 one or more file from the emulator for windows ce is missing.please retinstall emulator for window ce and try again。是什么意思啊?我重装好几次也是这样啊,难道与 ...… 查看全部问答> |
|
前断时间把wince上的usb VIDEO device做好了(是slave的不是host),现在老板又需要做USB AUDIO DEVICE. USB部分已经正常能够发送数据,在电脑上录音设备也能录到声音。但是要真正实现把CE设备的声音通过USB传到电脑上来播放还必须要去修改AUDIO驱 ...… 查看全部问答> |
|
怎么从/PROC/DEVICES中得到动态主设备号?脚本怎么样写,应该写在哪个文件里,怎么样在linux启动时运行这个脚本?谢谢! 怎么从/PROC/DEVICES中得到动态主设备号?脚本怎么样写,应该写在哪个文件里,怎么样在linux启动时运行这个脚本?谢谢!… 查看全部问答> |
|
求助:如何去除交流采样AD出来的声音信号结果中含有直流分量? 交流采样AD出来的声音信号结果中含有直流分量(可以认为是零漂),即交直流混合电平,感觉上好像这个直流分量会发生变化,可以排除是AD前面电路造成的问题,也就是说可以确认是AD输出的漂移造成的,我想是否可以用数字滤波的方法去掉它,如果可以, ...… 查看全部问答> |
|
现在重新测试,同样的板子,程序也一样。 用149一切正常, 换为2418,电流有1.3ma,而且会经常自动重启。。。 郁闷啊。。。。。。。 lierda的工程师们知道为什么吗?… 查看全部问答> |
|
最近正在做玩具智能车,不可避免的要用到单片机的捕获功能。 现想通过MC9S08QG8单片机实现单位时间捕获脉冲次数计数,来计算小车的速度。 问题卡在了捕获功能的实现上。 所用单片机:MC9S08QG8 8位机 实现功能 ...… 查看全部问答> |
|
MSP430 ADC12 使用P6.1没有反应啊!很急啊 谢谢 /********************************************************* 程序功能:将ADC对P6.1端口电压的转换结果按转换数据在液晶上显示 **********************************************************/ #include #include \"allfunc.h\" #include \" ...… 查看全部问答> |
|
箝位放大器 箝位放大器允许设计人员指定高(VCH)和低(VCL)输出箝位电压,以使输出信号箝位在特定电平。与传统的输出箝位器件相比,ADI公司独特的CLAMPIN™输入箝位架构显著改善了箝位性能,箝位区的箝位误差和失真极小。 共模线性化放大器 ...… 查看全部问答> |
|
在调试Z-stack 2007的协议栈里的SampleApp的例子中发现,用户事件初始化函数SampleApp_Init中协调器和终端都加入到了group 1了。我操作终端按键K1,协调器能收到数据。但是我操作协调器的按键K1,终端却不能收到数据。这是为什么呢 难道 ...… 查看全部问答> |




