全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > MEMS传感器 >

AP3216C三合一环境传感器使用指南

时间:2023-04-17 18:01

人气:

作者:admin

标签:

导读:博主最近在调试 AP3216C 三合一环境传感器,由敦南科技推出的一款传感器,支持环境光强度(ALS)、接近距离(PS)和红外线强度(IR)这三个环境参数检测。...

博主最近在调试 AP3216C 三合一环境传感器,由敦南科技推出的一款传感器,支持环境光强度(ALS)、接近距离(PS)和红外线强度(IR)这三个环境参数检测。

1、前言

该芯片可以通过 I2C 接口与主控制相连,并且支持中断。

2、传感器特性

  1. I2C 接口,快速模式下波特率可以到 400Kbit/S
  2. 多种工作模式选择:ALS, PS+IR, ALS+PS+IR, PD 等等
  3. 内建温度补偿电路。
  4. 宽工作温度范围(-30°C ~ +80°C)。
  5. 超小封装,4.1mm x 2.4mm x 1.35mm
  6. 环境光传感器具有 16 位分辨率(0~65535)。
  7. 接近传感器和红外传感器具有 10 位分辨率(0~1023)。
  8. 4 个用户可选动态范围
  9. Anti-flicker rejection (reject 50/60Hz)(防闪烁抑制)
  10. 高灵敏度@darkened glass
  11. 4 个可编程红外 LED 电流输出
  12. 高环境光抑制
  13. 串扰补偿
  14. 符合 RoHS 安全标准

典型应用

AP3216C 常被用于手机、平板、导航设备等,其内置的接近传感器可以用于检测是否有物体接近,比如手机上用来检测耳朵是否接触听筒,如果检测到的话就表示正在打电话,手机就会关闭手机屏幕以省电。 也可以使用环境光传感器检测光照强度,可以实现自动背光亮度调节。

目标设备

  1. 手机、平板电脑
  2. 个人导航系统
  3. 笔记本电脑/超级本
  4. LCD/PDP电视背光系统
  5. 数码相框
  6. 电容式触摸面板的应用

功能框图

图片

典型应用电路

图片

图片

图片

图片

3、参考资料

《AP3216C_Preliminary_Datasheet_Rev0.86.pdf》

4、引脚说明

图片

5、工作模式

ALS,PS+IR,ALS+PS+IR,PD,ALS 一次,SW Reset,PS+IR一次和ALS + PS+IR一次。

6、I2C 读写地址

从地址0x1E

7、寄存器

系统寄存器表

图片

图片

图片

翻译如下

图片图片

0X00 这个寄存器是模式控制寄存器,用来设置 AP3216C 的工作模式,一般开始先将其设置为 0X04,也就是先软件复位一次 AP3216C。

接下来根据实际使用情况选择合适的工作模式,比如设置为 0X03,也就是开启 ALS+PS+IR。

从 0X0A~0X0F 这 6 个寄存器就是数据寄存器,保存着 ALS、PS 和 IR 这三个传感器获取到的数据值。

如果同时打开 ALS、PS 和 IR ,读取间隔最少要 112.5ms,因为 AP3216C 完成一次转换需要 112.5ms。

8、代码

博主用的是轮询去读数据,大家也可以配置成中断方式。

AP3216C.H

#define AP3216C_ADDR     0X1E

#define AP3216C_SYSTEMCONG  0x00
#define AP3216C_INTSTATUS   0X01
#define AP3216C_INTCLEAR    0X02
#define AP3216C_IRDATALOW   0x0A
#define AP3216C_IRDATAHIGH  0x0B
#define AP3216C_ALSDATALOW  0x0C
#define AP3216C_ALSDATAHIGH  0X0D
#define AP3216C_PSDATALOW   0X0E
#define AP3216C_PSDATAHIGH  0X0F

#define AP3216C_POWER_DOWN   0x00
#define AP3216C_ENABLE_ALL   0x03
#define AP3216C_SW_RESET     0x04

AP3216C 没有 chip id 寄存器,我们先写一个值,然后读出来,如果相等,则表示器件存在。 同时将器件初始化。

u8 AP3216C_Check_And_Init(void)
{
 u8 temp;
 
 I2C_WriteOneByte(AP3216C_ADDR,AP3216C_SYSTEMCONG,AP3216C_SW_RESET);   /*   SW reset   */
 delay_ms(50);
 I2C_WriteOneByte(AP3216C_ADDR,AP3216C_SYSTEMCONG,AP3216C_ENABLE_ALL);   /* enable ALS PS IR */
 
 temp=I2C_ReadOneByte(AP3216C_ADDR,AP3216C_SYSTEMCONG);
     
 if(temp == AP3216C_ENABLE_ALL)
  return 0; 
 else
   return 1; 
}

读取数据

for(i = 0; i < 6; i++) 
{
    buf[i] = I2C_ReadOneByte(AP3216C_ADDR,AP3216C_IRDATALOW + i); 
}
if(buf[0] & 0X80) /* IR_OF 位为 1,则数据无效 */
  ir = 0;     
 else    
  ir = ((unsigned short)buf[1] << 2) | (buf[0] & 0X03);    
als = ((unsigned short)buf[3] << 8) | buf[2];/* 读取 ALS 数据 */
if(buf[4] & 0x40) /* IR_OF 位为 1,则数据无效 */
  ps = 0;                 
 else     
  ps = ((unsigned short)(buf[5] & 0X3F) << 4) | (buf[4] & 0X0F);
printf("ALS:%u ,PS:%u ,IR:%u \\r\\n",als,ps,ir);

读取数据过程中,IR 和 ps 需要先判断数据是否有效,若有效再输出,如注释。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信