>VCNL36826S-i2c相关代码
//app_ui.c
void VCNL36826S_I2C_init(void)
{
i2c_gpio_set(I2C_GPIO_GROUP_C0C1);//set CLK SDA GPIO
//slave device id 0x5C(write) 0x5D(read)
//i2c clock 400K, only master need set i2c clock
i2c_master_init(VCNL36826S_SLAVE_ADD, (unsigned char)(CLOCK_SYS_CLOCK_HZ/(2*200000)) );//设置时钟和I2C地址为8位
u8 write_data[2];
//寄存器-根据供应商提供的参考代码进行API函数实现。
write_data[0]= 0x03;
write_data[1]= 0x02;
i2c_write_series(ST_CONF,1,&write_data[0],1);
write_data[0]= 0x83;
write_data[1]= 0x02;
i2c_write_series(ST_CONF,1,&write_data[0],2);
write_data[0]= 0xC4;//0x00 0x04;
write_data[1]= 0x5C;//0x0C;
i2c_write_series(PS_CONF1,1,&write_data[0],2);
write_data[0]= 0x08;
write_data[1]= 0xE3;//0xE2 10mA 0xE5 16mA czb 200818
i2c_write_series(PS_CONF3,1,&write_data[0],2);
write_data[0]= LEVEL_LOW_THDL;
write_data[1]= LEVEL_LOW_THDH;
i2c_write_series(PS_THDL,1,&write_data[0],2);
write_data[0]= LEVEL_HIGH_THDL;
write_data[1]= LEVEL_HIGH_THDH;
i2c_write_series(PS_THDH,1,&write_data[0],2);
write_data[0]= 0xFF;
write_data[1]= 0xFF;
i2c_read_series(0xFA,1,&write_data[0],2);
//打印硬件信息,保证通信正常
printf("\n");
printf("write_data[0]:0x%x\n",write_data[0]);
printf("write_data[1]:0x%x\n",write_data[1]);
}
>相关宏定义
//app_config.h
#define ST_CONF 0x00
#define LEVEL_LOW_THDH 0x00 // 0x00 3.8cm E2
#define LEVEL_LOW_THDL 0xC8 // 0x96 0x8f
#define LEVEL_HIGH_THDH 0x01 //0x08 2.5cm E2 0x01 0x03
#define LEVEL_HIGH_THDL 0x90 // 200817 0x66 0x06
#define LEVEL3_THDH 200
#define LEVEL3_THDL 150
#define VCNL36826S_SLAVE_ADD 0xC0
#define PS_CONF1 0x03
#define PS_CONF3 0x04
#define PS_THDL 0x05
#define PS_THDH 0x06
#define PS_CANC 0x07
#define PS_DATA 0xF8
#define VCNL36826S_FLAG 0xF9
#define LEVEL1_THDH 20
#define LEVEL1_THDL 10
#define LEVEL2_THDH 70
#define LEVEL2_THDL 50
#define LEVEL3_THDH 200
#define LEVEL3_THDL 150
PS_data打印
//battery_check.c
u8 write_data[2];//局部定义
write_data[0]= 0xFF;
write_data[1]= 0xFF;
i2c_read_series(0xF8,1,&write_data[0],2);
printf("PS_DATA:\n");
printf("write_data[0]:0x%x\n",write_data[0]);
printf("write_data[1]:0x%x\n",write_data[1]);
打印结果:
离远离近效果:
【离远】
【离近】