注意事项
1.DVI引脚电路,根据手册上显示DVI引脚上电要和VCC有一个时间差
电路图参考网络上的原理图可以这样接(下图),也可以接单片机引脚,用单片机引脚来控制逻辑电路的上电,实际情况测试直接接VCC也没多大问题
2.程序上要注意的几点
2.1 SDA引脚的读取
#define B_LUX_SDA0_DAT ((Gpio_GetInputIO(B_LUX_GPIO, B_LUX_SDA0)))
比如这个句宏定义读取SDA引脚的电平,有些单片机的库函数这个读取函数返回的是0或者1,而有些单片机的库函数返回的就是0或者(1<<pin),比如SDA用的是PA1,返回的就是0x02,所以在写程序的不要直接在数值上与这个函数
dat |= B_LUX_SDA0_DAT; //读数据
而要写成这样
/*---------------------------------------------------------------------
功能描述: 从IIC总线接收一个字节数据
参数说明: 无
函数返回: 接收字节
---------------------------------------------------------------------*/
uint8 B_LUX_RecvByte()
{
uint8 i;
uint8 dat = 0;
B_LUX_SDA0_I;
// B_LUX_SDA0_H; //使能内部上拉,准备读取数据,
for (i = 0; i < 8; i++) // 8位计数器
{
dat <<= 1;
B_LUX_SCL0_H; //拉高时钟线
delay10us(1); //延时
if(B_LUX_SDA0_DAT)
dat |= 0x01; //读数据
B_LUX_SCL0_L; //拉低时钟线
delay10us(1); //延时
}
B_LUX_SDA0_O;
return dat;
}
2.2 端口设置,在测试过程中出现读出数据全是0的问题,反复查找最好找到SDA设置成输入的时候没有设置上拉,可能是因为BH1750的输出电流不够吧拉不高SDA的电平导致
stcGpioCfg.enPuPd = GpioPu;