
回复
串行时钟线SCL管脚为GPIOF14,串行数据线SDA管脚为GPIOF15.
I2C使用步骤为
I2C的16位flags的每一位定义:
位操作 | 使用定义 | 模式 |
---|---|---|
0 | — | Write flag |
(0x1 << 0) | I2C_FLAG_READ | Read flag |
(0x1 << 4) | I2C_FLAG_ADDR_10BIT | 10-bit addressing flag |
(0x1 << 11) | I2C_FLAG_READ_NO_ACK | No-ACK read flag |
(0x1 << 12) | I2C_FLAG_IGNORE_NO_ACK | Ignoring no-ACK flag |
(0x1 << 14) | I2C_FLAG_NO_START | No START condition flag |
(0x1 << 15) | I2C_FLAG_STOP | STOP condition flag |
例如:当需要读取数据的时候,将flags的第一位设置为1,此时I2C的模式便为读取模式。
先i2c管脚的IO口配置并初始化复位管脚,此步骤需要查询寄存器手册
以下代码都为在驱动代码中添加
#include "i2c_if.h"
定义调用I2C所用的数据结构
注意在使用BH1750之前需要初始化BH1750,依次向BH1750发送0x01和0x20