AP3216C是敦南科技退出的一款三合一环境传感器,它包含了:数字环境光传感器(ALS)、接近传感器(PS)和一个红外LED(IR)。该芯片通过IIC接口和MCU连接,并支持中断(INT)输出。
可以检测光强,接近,红外感应
光传感器特点
1.IIC接口
2.支持多种工作混合模式光强,接近,红外感应按要求配合使用
3.内置温度补偿电路
4.环境关传感器16位分辨率
5.接近传感器20位分辨率
6.红外传感器10位分辨率
AP3216C光传感器被广泛应用于智能手机上面,用来检测光强度(自动背光控制),和接近开关控制(听筒靠近耳朵,手机自动灭屏功能)。
8个引脚,
一个地,一个电源,
两个通信接口
LEDA与LEDC阴极与阳极
LED,LED驱动引脚,接入LEDC
INT,中断输出脚
AP3216C和我们的MCU只需要连接SCL、SDA和INT,就可以实现驱动。其SCL和SDA同24C02共用,连接在PH4和PH5上,INT脚连接在PCF8574的P1上。
0x00:系统模式,就是设置选择功能
0x0a:IR低位数据
0x0b:IR高位数据
0x0c与0x0d:ALS低位与高位数据
0x0E与0x0F:PS低位与高位数据
1.写寄存器
先启动,然后发送AP3216C的地址8位(最低位0表示写数据,1表示读数据),等待应答,随后发送寄存器地址,等待应答,最后发送内容
1.读寄存器
先启动,然后发送AP3216C的地址8位(最低位0表示写数据,1表示读数据),等待应答,随后发送寄存器地址(确定了地址),等待应答,然后重新发送起始信号,发送读数据的信号,
读取寄存器的值
写函数
u8 AP3216C_WriteOneByte(u8 reg,u8 data)
{
IIC_Start();
IIC_Send_Byte(AP3216C_ADDR|0X00);//发送器件地址+写命令
if(IIC_Wait_Ack()) //等待应答
{
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg); //写寄存器地址
IIC_Wait_Ack(); //等待应答
IIC_Send_Byte(data); //发送数据
if(IIC_Wait_Ack()) //等待ACK
{
IIC_Stop();
return 1;
}
IIC_Stop();
return 0;
}
读函数
u8 AP3216C_ReadOneByte(u8 reg)
{
u8 res;
IIC_Start();
IIC_Send_Byte(AP3216C_ADDR|0X00); //发送器件地址+写命令
IIC_Wait_Ack(); //等待应答
IIC_Send_Byte(reg); //写寄存器地址
IIC_Wait_Ack(); //等待应答
IIC_Start();
IIC_Send_Byte(AP3216C_ADDR|0X01); //发送器件地址+读命令
IIC_Wait_Ack(); //等待应答
res=IIC_Read_Byte(0); //读数据,发送nACK
IIC_Stop(); //产生一个停止条件
return res;
}
读取所有传感器数据
void AP3216C_ReadData(u16* ir,u16* ps,u16* als)
{
u8 buf[6];
u8 i;
for(i=0;i<6;i++)
{
buf[i]=AP3216C_ReadOneByte(0X0A+i); //循环读取所有传感器数据
}
if(buf[0]&0X80)*ir=0; //IR_OF位为1,则数据无效
else *ir=((u16)buf[1]<<2)|(buf[0]&0X03); //读取IR传感器的数据
*als=((u16)buf[3]<<8)|buf[2]; //读取ALS传感器的数据
if(buf[4]&0x40)*ps=0; //IR_OF位为1,则数据无效
else *ps=((u16)(buf[5]&0X3F)<<4)|(buf[4]&0X0F); //读取PS传感器的数据
}