mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-17 07:28:14 +08:00
165 lines
4.8 KiB
C
165 lines
4.8 KiB
C
/**
|
||
******************************************************************************
|
||
* @file apds9930.h
|
||
* @author William Xu
|
||
* @version V1.0.0
|
||
* @date 17-Mar-2015
|
||
* @brief apds9930 controller operations.
|
||
******************************************************************************
|
||
* UNPUBLISHED PROPRIETARY SOURCE CODE
|
||
* Copyright (c) 2016 MXCHIP Inc.
|
||
*
|
||
* The contents of this file may not be disclosed to third parties, copied or
|
||
* duplicated in any form, in whole or in part, without the prior written
|
||
* permission of MXCHIP Corporation.
|
||
******************************************************************************
|
||
*/
|
||
|
||
|
||
#ifndef __APDS9930_H_
|
||
#define __APDE9930_H_
|
||
|
||
#include "platform.h"
|
||
|
||
/** @addtogroup MICO_Drivers_interface
|
||
* @{
|
||
*/
|
||
|
||
/** @defgroup MiCO_Sensor_Driver MiCO Sensor Driver
|
||
* @brief Provide driver interface for MiCO Sensor Devices
|
||
* @{
|
||
*/
|
||
|
||
/** @addtogroup MiCO_Sensor_Driver
|
||
* @{
|
||
*/
|
||
|
||
/** @defgroup MiCO_ADPS9930_Driver MiCO ADPS9930 Driver
|
||
* @brief Provide driver interface for ADPS9930 Sensor
|
||
* @{
|
||
*/
|
||
|
||
|
||
#ifndef APDS9930_I2C_DEVICE
|
||
#define APDS9930_I2C_DEVICE MICO_I2C_NONE
|
||
#endif
|
||
|
||
#define APDS9930_ID 0x39 //APDS-9930 device id
|
||
#define GA 0.49 //Glass (or Lens) Attenuation Factor
|
||
#define DF 52 //Device Factor, DF = 52 for APDS-9930
|
||
|
||
/*Specifis register address*/
|
||
/*R/W*/
|
||
#define ENABLE_ADDR 0x00 //Enable of states and interrupts
|
||
#define ATIME_ADDR 0x01 //ALS ADC time
|
||
#define PTIME_ADDR 0x02 //Proximity ADC time
|
||
#define WTIME_ADDR 0x03 //Wait time
|
||
#define AILTL_ADDR 0x04 //ALS interrupt low threshold low byte
|
||
#define AILTH_ADDR 0x05 //ALS interrupt low threshold hi byte
|
||
#define AIHTL_ADDR 0x06 //ALS interrupt hi threshold low byte
|
||
#define AIHTH_ADDR 0x07 //ALS interrupt hi threshold hi byte
|
||
#define PILTL_ADDR 0x08 //Proximity interrupt low threshold low byte
|
||
#define PILTH_ADDR 0x09 //Proximity interrupt low threshold hi byte
|
||
#define PIHTL_ADDR 0x0A //Proximity interrupt hi threshold low byte
|
||
#define PIHTH_ADDR 0x0B //Proximity interrupt hi threshold hi byte
|
||
#define PERS_ADDR 0x0C //Interrupt persistence fiters
|
||
#define CONFIG_ADDR 0x0D //Confiuration
|
||
#define PPULSE_ADDR 0x0E //Proximity pulse count
|
||
#define CONTROL_ADDR 0x0F //Gain control register
|
||
#define POFFSET_ADDR 0x1E //Proximity offet register
|
||
#define CLIT_ADDR 0xE7 //Clear interrupt
|
||
/*R*/
|
||
#define ID_ADDR 0x12 //Device ID
|
||
#define STATUS_ADDR 0x13 //Device status
|
||
#define Ch0DATAL_ADDR 0x14 //Ch0 ADC low data register
|
||
#define Ch0DATAH_ADDR 0x15 //Ch0 ADC high data register
|
||
#define Ch1DATAL_ADDR 0x16 //Ch1 ADC low data register
|
||
#define Ch1DATAH_ADDR 0x17 //Ch1 ADC high data register
|
||
#define PDATAL_ADDR 0x18 //Proximity ADC low data register
|
||
#define PDATAH_ADDR 0x19 //Proximity ADC high data register
|
||
|
||
|
||
/*Command Value*/
|
||
/*ENABLE reg value*/
|
||
#define APDS9930_DISABLE 0x00 //Disable and Powerdown
|
||
#define WEN 0x08 // Enable Wait
|
||
#define PEN 0x04 //Enable Prox
|
||
#define AEN 0x02 //Enable ALS
|
||
#define PON 0x01 //Enable Power On
|
||
/*CONFIG reg value*/
|
||
#define RECONFIG 0x00
|
||
/*CONTROL reg value*/
|
||
#define PDRIVE_100 0x00 //100mA of LED Power
|
||
#define PDIODE_CH1 0x20 //CH1 Diode
|
||
#define PGAIN_1x 0x00 //1x Prox gain
|
||
#define AGAIN_1x 0x00 //1x ALS gain
|
||
/*ATIME reg value*/
|
||
#define ATIME_1C 0xFF //2.7 ms <20>C minimum ALS integration time
|
||
#define ATIME_256C 0x00 //699 ms <20>C ALS integration time
|
||
/*PTIME reg value*/
|
||
#define PTIME_1C 0xFF //2.7 ms <20>C minimum Prox integration time
|
||
#define PTIME_10C 0xF6 //Prox integration time
|
||
/*WTIME reg value*/
|
||
#define WTIME_1C 0xFF // 2.7 ms <20>C minimum Wait time
|
||
#define WTIME_74C 0xB6 //202
|
||
#define WTIME_256C 0x00 //699
|
||
/*PPULSE reg value*/
|
||
#define PPULSE_MIN 0x08 //Minimum prox pulse count
|
||
|
||
|
||
|
||
|
||
/**
|
||
* @brief Initialize ADPS9930 device .
|
||
*
|
||
* @return kNoErr : on success.
|
||
* @return kGeneralErr : if an error occurred
|
||
*/
|
||
OSStatus apds9930_sensor_init(void);
|
||
|
||
/**
|
||
* @brief Deinitialize ADPS9930 device .
|
||
*
|
||
* @return kNoErr : on success.
|
||
* @return kGeneralErr : if an error occurred
|
||
*/
|
||
OSStatus apds9930_sensor_deinit(void);
|
||
|
||
/**
|
||
* @brief Read data from ADPS9930 device .
|
||
*
|
||
* @param Prox_data: proximity distance
|
||
* @param Lux_data: light intensity
|
||
*
|
||
* @return kNoErr : on success.
|
||
* @return kGeneralErr : if an error occurred
|
||
*/
|
||
OSStatus apds9930_data_readout(uint16_t *Prox_data, uint16_t *Lux_data);
|
||
|
||
|
||
/**
|
||
* @brief Enable ADPS9930 device function .
|
||
*
|
||
* @return none
|
||
*/
|
||
void apds9930_enable(void);
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
#endif // __APDS9930_H_
|
||
|