【zephyr】 设备驱动和设备模型_apds9660 接近(Proximity)传感器(二)

本文详细介绍了Zephyr操作系统中apds9960传感器的driver_api接口函数,包括sample_fetch和channel_get的实现。同时,探讨了传感器的初始化步骤,如设置接近传感器的门限值、脉冲个数、驱动电流和增益,以及开启接近传感器功能。此外,还涉及环境光ALS的初始化过程。
摘要由CSDN通过智能技术生成

目录

1.apds9960_driver_api接口函数实现说明

1.1sample_fetch

1.2  channel_get

2. apds9960 传感器初始化动作

1. proxy接近传感器 

 2.2 环境光ALS 初始化


1.apds9960_driver_api接口函数实现说明

1.1sample_fetch

static int apds9960_sample_fetch(struct device *dev, enum sensor_channel chan)
{
	const struct apds9960_config *config = dev->config->config_info;
	struct apds9960_data *data = dev->driver_data;
	u8_t status;

	if (chan != SENSOR_CHAN_ALL) {
		LOG_ERR("Unsupported sensor channel");
		return -ENOTSUP;
	}
//设置中断回调函数 函数
#ifndef CONFIG_APDS9960_TRIGGER
	gpio_pin_enable_callback(data->gpio, config->gpio_pin);
//打开ADPS 接近和光感器 中断 寄存器 
	if (i2c_reg_update_byte(data->i2c, config->i2c_address,
				APDS9960_ENABLE_REG,
				APDS9960_ENABLE_PON | APDS9960_ENABLE_AIEN,
				APDS9960_ENABLE_PON | APDS9960_ENABLE_AIEN)) {
		LOG_ERR("Power on bit not set.");
		return -EIO;
	}
//信号量等待 
	k_sem_take(&data->data_sem, K_FOREVER);
#endif
//读取传感器当前 接近还是光感
	if (i2c_reg_read_byte(data->i2c, config->i2c_address,
			      APDS9960_STATUS_REG, &status)) {
		return -EIO;
	}
//接近传感器 读取
	LOG_DBG("status: 0x%x", status);
	if (status & APDS9960_STATUS_PINT) {
		if (i2c_reg_read_byte(data->i2c, config->i2c_address,
				      APDS9960_PDATA_REG, &data->pdata)) {
			return -EIO;
		}
	}
//环境光 CRGB 读取
	if (status & APDS9960_STATUS_AINT) {
		if (i2c_burst_read(data->i2c, config->i2c_address,
				   APDS9960_CDATAL_REG,
				   (u8_t *)&data->sample_crgb,
				   sizeof(data->sample_crgb))) {
			return -EIO;
		}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值