1.特别说明
? 要是不想看原理和过程,直接下拉找代码吧,都是测试过的,很稳定,有硬件I2C驱动的,也有软件模拟I2C驱动的,基于STM32F103系列和STM32F4系列实现,基于标准库实现,条理清晰。
2.软硬件硬件准备
? (1) Kile 5.27
? (2) 串口助手
? (3) STM32F103与STM32F4系列单片机
? (4) CH340 串口转 TTL 工具
? (5) BH1750-即-GY-302光照传感器
3.了解驱动原理
3.1.程序设计思路
接高电平的硬件地址和接低电平的硬件地址是不一样的:
? 接高电平硬件地址:0X5C (注意:这是高 7 位地址数据)
? 接低电平硬件地址:0X23 (注意:这是高 7 位地址数据)
器件地址(7位-用左移1位-最后1位为读写位–1为读-0为写)
3.3驱动时序
(uint16_t)Data_LX = (uint16_t)(H_data
接收用无符 短 8 位整形接收,移位对齐数据再相加就好了;
4.上代码
4.1硬件IIC驱动
? 特别说明,在刚开始硬件驱动的时候,出了个小问题:完全照着手册的时序写,就是会卡死在接收高 8 位数据的 EV7事件上;
? 解决办法:在发送读指令并接收到回应后(EV6 事件),主机给光照模块发送一个 ACK 信 ,相当于告诉它我们准备好接受数据了,然后等待光照模块发来数据(EV7事件),接着后面就没啥问题了。
4.1.1 适用STM32F103系列的硬件IIC驱动
BH1750.c
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!