HarmonyOS技术社区 · 2020年10月19日

初学 HarmonyOS 系统,给Hi3861L写温湿度传感器HUT21D的驱动

大佬们已经写出了AHT20, OLED1306等I2C总线的驱动把它们作为学习模板,准备将HUT21D、BH1750的驱动,以及模拟单总线DHT11,18b20等移值到运行HarmonyOS的 Hi3861开发板上。

通过实践,对鸿蒙硬件I2C的驱动有了一点了解。感觉库写的非常好,用户不需要管I2C的启动、停止、ACK、NACK等等,屏蔽了中断、寄存器等底层处理。。
总之,直接用wifiiot_i2c.c 的3个库函数就好了。

图片.png
图片.png

例如:

使能I2C:

I2cInit(WifiIotI2cIdx id, unsigned int baudrate);

(先要配置好GPIO和I2C通道,Hi3861 有2个I2C通道.)

读取 BH1750
uint32_t retval = I2cWrite(BH1750FVI_I2C_IDX, BH1750FVI_WRITE_ADDR, &data);

写命令

uint32_t retval = I2cWrite(HTU21D_I2C_IDX, HTU21D_WRITE_ADDR, &data);

附图:harmonyos 库函数 实现读取 HTU21D 的协议

图片.png
图片.png
图片.png
图片.png
图片.png

通过分析,最后把读取应答的延时调整为20MS ,减少重读次数。
图片.png


想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com?jssq

推荐阅读
关注数
2947
内容数
446
华为鸿蒙相关技术,活动及资讯,欢迎关注及加入创作
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息