spectrometer 2.0.0.0
spectrometer.h File Reference

This file contains API for Spectrometer Click driver. More...

#include "drv_digital_out.h"
#include "drv_digital_in.h"
#include "drv_i2c_master.h"

Go to the source code of this file.

Data Structures

struct  spectrometer_t
 Click ctx object definition. More...
 
struct  spectrometer_cfg_t
 Click configuration structure definition. More...
 

Macros

#define SPECTROMETER_MAP_MIKROBUS(cfg, mikrobus)
 
#define SPECTROMETER_RETVAL   uint8_t
 
#define SPECTROMETER_OK   0x00
 
#define SPECTROMETER_INIT_ERROR   0xFF
 
#define SPECTROMETER_I2C_DEV_ADR   0x39
 
#define SPECTROMETER_ASTAT   0x60
 
#define SPECTROMETER_CH0_DATA_L   0x61
 
#define SPECTROMETER_CH0_DATA_H   0x62
 
#define SPECTROMETER_ITIME_L   0x63
 
#define SPECTROMETER_ITIME_M   0x64
 
#define SPECTROMETER_ITIME_H   0x65
 
#define SPECTROMETER_CH1_DATA_L   0x66
 
#define SPECTROMETER_CH1_DATA_H   0x67
 
#define SPECTROMETER_CH2_DATA_L   0x68
 
#define SPECTROMETER_CH2_DATA_H   0x69
 
#define SPECTROMETER_CH3_DATA_L   0x6A
 
#define SPECTROMETER_CH3_DATA_H   0x6B
 
#define SPECTROMETER_CH4_DATA_L   0x6C
 
#define SPECTROMETER_CH4_DATA_H   0x6D
 
#define SPECTROMETER_CH5_DATA_L   0x6E
 
#define SPECTROMETER_CH5_DATA_H   0x6F
 
#define SPECTROMETER_CFG   0x70
 
#define SPECTROMETER_STAT   0x71
 
#define SPECTROMETER_SYNC_EDGE   0x72
 
#define SPECTROMETER_GPIO   0x73
 
#define SPECTROMETER_LED   0x74
 
#define SPECTROMETER_ENABLE   0x80
 
#define SPECTROMETER_ATIME   0x81
 
#define SPECTROMETER_WTIME   0x83
 
#define SPECTROMETER_SP_TH_L_LSB   0x84
 
#define SPECTROMETER_SP_TH_L_MSB   0x85
 
#define SPECTROMETER_SP_TH_H_LSB   0x86
 
#define SPECTROMETER_SP_TH_H_MSB   0x87
 
#define SPECTROMETER_AUXID   0x90
 
#define SPECTROMETER_REVID   0x91
 
#define SPECTROMETER_ID   0x92
 
#define SPECTROMETER_STATUS   0x93
 
#define SPECTROMETER_ASTATUS   0x94
 
#define SPECTROMETER_CH0_ADC_DATA_L   0x95
 
#define SPECTROMETER_CH0_ADC_DATA_H   0x96
 
#define SPECTROMETER_CH1_ADC_DATA_L   0x97
 
#define SPECTROMETER_CH1_ADC_DATA_H   0x98
 
#define SPECTROMETER_CH2_ADC_DATA_L   0x99
 
#define SPECTROMETER_CH2_ADC_DATA_H   0x9A
 
#define SPECTROMETER_CH3_ADC_DATA_L   0x9B
 
#define SPECTROMETER_CH3_ADC_DATA_H   0x9C
 
#define SPECTROMETER_CH4_ADC_DATA_L   0x9D
 
#define SPECTROMETER_CH4_ADC_DATA_H   0x9E
 
#define SPECTROMETER_CH5_ADC_DATA_L   0x9F
 
#define SPECTROMETER_CH5_ADC_DATA_H   0xA0
 
#define SPECTROMETER_STAT_2   0xA3
 
#define SPECTROMETER_STAT_3   0xA4
 
#define SPECTROMETER_STAT_5   0xA6
 
#define SPECTROMETER_STAT_6   0xA7
 
#define SPECTROMETER_CFG_0   0xA9
 
#define SPECTROMETER_CFG_1   0xAA
 
#define SPECTROMETER_CFG_3   0xAC
 
#define SPECTROMETER_CFG_6   0xAF
 
#define SPECTROMETER_CFG_8   0xB1
 
#define SPECTROMETER_CFG_9   0xB2
 
#define SPECTROMETER_CFG_10   0xB3
 
#define SPECTROMETER_CFG_12   0xB5
 
#define SPECTROMETER_PERS   0xBD
 
#define SPECTROMETER_GPIO_2   0xBE
 
#define SPECTROMETER_ASTEP_L   0xCA
 
#define SPECTROMETER_ASTEP_H   0xCB
 
#define SPECTROMETER_AGC_GAIN_MAX   0xCF
 
#define SPECTROMETER_AZ_CFG   0xD6
 
#define SPECTROMETER_FD_TIME_1   0xD8
 
#define SPECTROMETER_FD_TIME_2   0xDA
 
#define SPECTROMETER_FD_CFG0   0xD7
 
#define SPECTROMETER_FD_STAT   0xDB
 
#define SPECTROMETER_INTENAB   0xF9
 
#define SPECTROMETER_CTL   0xFA
 
#define SPECTROMETER_FIFO_MAP   0xFC
 
#define SPECTROMETER_FIFO_LVL   0xFD
 
#define SPECTROMETER_FDATA_L   0xFE
 
#define SPECTROMETER_FDATA_H   0xFF
 
#define SPECTROMETER_CFG_LED_SEL   0x08
 
#define SPECTROMETER_CFG_INT_SEL   0x04
 
#define SPECTROMETER_CFG_INT_MODE_SYND   0x03
 
#define SPECTROMETER_CFG_INT_MODE_SYNS   0x01
 
#define SPECTROMETER_CFG_INT_MODE_SPM   0x00
 
#define SPECTROMETER_STAT_WAIT_SYNC   0x02
 
#define SPECTROMETER_STAT_READY   0x01
 
#define SPECTROMETER_GPIO_PD_GPIO   0x02
 
#define SPECTROMETER_GPIO_PD_INT   0x01
 
#define SPECTROMETER_LED_LED_ACT   0x80
 
#define SPECTROMETER_LED_LED_DRV_4MA   0x00
 
#define SPECTROMETER_LED_LED_DRV_6MA   0x01
 
#define SPECTROMETER_LED_LED_DRV_8MA   0x02
 
#define SPECTROMETER_LED_LED_DRV_10MA   0x03
 
#define SPECTROMETER_LED_LED_DRV_12MA   0x04
 
#define SPECTROMETER_LED_LED_DRV_256MA   0x7E
 
#define SPECTROMETER_LED_LED_DRV_258MA   0x7F
 
#define SPECTROMETER_EN_FDEN   0x40
 
#define SPECTROMETER_EN_SMUXEN   0x10
 
#define SPECTROMETER_EN_WEN   0x08
 
#define SPECTROMETER_EN_SP_EN   0x02
 
#define SPECTROMETER_EN_PON   0x01
 
#define SPECTROMETER_STATUS_ASAT   0x80
 
#define SPECTROMETER_STATUS_AINT   0x08
 
#define SPECTROMETER_STATUS_FINT   0x04
 
#define SPECTROMETER_STATUS_CINT   0x02
 
#define SPECTROMETER_STATUS_SINT   0x01
 
#define SPECTROMETER_STAT_2_AVALID   0x40
 
#define SPECTROMETER_STAT_2_ASAT_DIG   0x10
 
#define SPECTROMETER_STAT_2_ASAT_ANA   0x08
 
#define SPECTROMETER_STAT_2_FDSAT_ANA   0x02
 
#define SPECTROMETER_STAT_2_FDSAT_DIG   0x01
 
#define SPECTROMETER_STAT_3_INT_SP_H   0x20
 
#define SPECTROMETER_STAT_3_INT_SP_L   0x10
 
#define SPECTROMETER_STAT_5_SINT_FD   0x08
 
#define SPECTROMETER_STAT_5_SINT_SMUX   0x04
 
#define SPECTROMETER_STAT_6_FIFO_OV   0x80
 
#define SPECTROMETER_STAT_6_OVTEMP   0x20
 
#define SPECTROMETER_STAT_6_FD_TRIG   0x10
 
#define SPECTROMETER_STAT_6_SP_TRIG   0x04
 
#define SPECTROMETER_STAT_6_SAI_ACT   0x02
 
#define SPECTROMETER_STAT_6_INT_BUSY   0x01
 
#define SPECTROMETER_CFG_0_LOW_POW   0x20
 
#define SPECTROMETER_CFG_0_REG_BANK_1   0x10
 
#define SPECTROMETER_CFG_0_REG_BANK_0   0x00
 
#define SPECTROMETER_CFG_0_WLONG   0x04
 
#define SPECTROMETER_CFG_1_AGAIN_512   0x0A
 
#define SPECTROMETER_CFG_1_AGAIN_256   0x09
 
#define SPECTROMETER_CFG_1_AGAIN_128   0x08
 
#define SPECTROMETER_CFG_1_AGAIN_64   0x07
 
#define SPECTROMETER_CFG_1_AGAIN_32   0x06
 
#define SPECTROMETER_CFG_1_AGAIN_16   0x05
 
#define SPECTROMETER_CFG_1_AGAIN_8   0x04
 
#define SPECTROMETER_CFG_1_AGAIN_4   0x03
 
#define SPECTROMETER_CFG_1_AGAIN_2   0x02
 
#define SPECTROMETER_CFG_1_AGAIN_1   0x01
 
#define SPECTROMETER_CFG_1_AGAIN_05   0x00
 
#define SPECTROMETER_CFG_3_SAI   0x10
 
#define SPECTROMETER_CFG_6_SMUX_CMD_2   0x10
 
#define SPECTROMETER_CFG_6_SMUX_CMD_1   0x08
 
#define SPECTROMETER_CFG_6_SMUX_CMD_0   0x00
 
#define SPECTROMETER_CFG_8_FIFO_TH_16   0xC0
 
#define SPECTROMETER_CFG_8_FIFO_TH_8   0x80
 
#define SPECTROMETER_CFG_8_FIFO_TH_4   0x40
 
#define SPECTROMETER_CFG_8_FIFO_TH_1   0x00
 
#define SPECTROMETER_CFG_8_FD_AGC   0x08
 
#define SPECTROMETER_CFG_8_SP_AGC   0x04
 
#define SPECTROMETER_CFG_9_SIEN_FD   0x40
 
#define SPECTROMETER_CFG_9_SIEN_SMUX   0x10
 
#define SPECTROMETER_CFG_10_AGC_H_3   0xC0
 
#define SPECTROMETER_CFG_10_AGC_H_2   0x80
 
#define SPECTROMETER_CFG_10_AGC_H_1   0x40
 
#define SPECTROMETER_CFG_10_AGC_H_0   0x00
 
#define SPECTROMETER_CFG_10_AGC_L_3   0x60
 
#define SPECTROMETER_CFG_10_AGC_L_2   0x20
 
#define SPECTROMETER_CFG_10_AGC_L_1   0x10
 
#define SPECTROMETER_CFG_10_AGC_L_0   0x00
 
#define SPECTROMETER_CFG_10_FD_PERS_DEF   0x02
 
#define SPECTROMETER_CFG_12_SP_TH_CH_4   0x04
 
#define SPECTROMETER_CFG_12_SP_TH_CH_3   0x03
 
#define SPECTROMETER_CFG_12_SP_TH_CH_2   0x02
 
#define SPECTROMETER_CFG_12_SP_TH_CH_1   0x01
 
#define SPECTROMETER_CFG_12_SP_TH_CH_0   0x00
 
#define SPECTROMETER_PERS_APERS_60   0x0F
 
#define SPECTROMETER_PERS_APERS_55   0x0E
 
#define SPECTROMETER_PERS_APERS_50   0x0D
 
#define SPECTROMETER_PERS_APERS_45   0x0C
 
#define SPECTROMETER_PERS_APERS_40   0x0B
 
#define SPECTROMETER_PERS_APERS_35   0x0A
 
#define SPECTROMETER_PERS_APERS_30   0x09
 
#define SPECTROMETER_PERS_APERS_25   0x08
 
#define SPECTROMETER_PERS_APERS_20   0x07
 
#define SPECTROMETER_PERS_APERS_15   0x06
 
#define SPECTROMETER_PERS_APERS_10   0x05
 
#define SPECTROMETER_PERS_APERS_5   0x04
 
#define SPECTROMETER_PERS_APERS_3   0x03
 
#define SPECTROMETER_PERS_APERS_2   0x02
 
#define SPECTROMETER_PERS_APERS_1   0x01
 
#define SPECTROMETER_PERS_APERS   0x00
 
#define SPECTROMETER_GPIO_2_GPIO_INV   0x08
 
#define SPECTROMETER_GPIO_2_GPIO_IN   0x04
 
#define SPECTROMETER_GPIO_2_GPIO_OUT   0x02
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_512   0xA0
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_256   0x90
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_128   0x80
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_64   0x70
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_32   0x60
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_16   0x50
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_8   0x40
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_4   0x30
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_2   0x20
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_1   0x10
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_FD_GAIN_MAX_05   0x00
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_512   0x0A
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_256   0x09
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_128   0x08
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_64   0x07
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_32   0x06
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_16   0x05
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_8   0x04
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_4   0x03
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_2   0x02
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_1   0x01
 
#define SPECTROMETER_AGC_GAIN_MAX_AGC_AGAIN_MAX_05   0x00
 
#define SPECTROMETER_FD_CFG0_FD_FIFO   0x80
 
#define SPECTROMETER_FD_STAT_FD_VALID   0x20
 
#define SPECTROMETER_FD_STAT_FD_SAT   0x10
 
#define SPECTROMETER_FD_STAT_FD_120HZ_VALID   0x08
 
#define SPECTROMETER_FD_STAT_FD_100HZ_VALID   0x04
 
#define SPECTROMETER_FD_STAT_FD_120HZ   0x02
 
#define SPECTROMETER_FD_STAT_FD_100HZ   0x01
 
#define SPECTROMETER_INTENAB_ASIEN   0x80
 
#define SPECTROMETER_INTENAB_SP_IEN   0x08
 
#define SPECTROMETER_INTENAB_F_IEN   0x04
 
#define SPECTROMETER_INTENAB_SIEN   0x01
 
#define SPECTROMETER_CTL_AZ_SP_MAN   0x04
 
#define SPECTROMETER_CTL_FIFO_CLR   0x02
 
#define SPECTROMETER_CTL_CLR_SAI_ACT   0x01
 
#define SPECTROMETER_FIFO_MAP_WR_DATA_CH6   0x40
 
#define SPECTROMETER_FIFO_MAP_WR_DATA_CH5   0x20
 
#define SPECTROMETER_FIFO_MAP_WR_DATA_CH3   0x10
 
#define SPECTROMETER_FIFO_MAP_WR_DATA_CH2   0x08
 
#define SPECTROMETER_FIFO_MAP_WR_DATA_CH1   0x04
 
#define SPECTROMETER_FIFO_MAP_WR_DATA_CH0   0x02
 
#define SPECTROMETER_FIFO_MAP_WR_ASTAT   0x01
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_05   0x00
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_1   0x08
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_2   0x10
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_4   0x18
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_8   0x20
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_16   0x28
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_32   0x30
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_64   0x38
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_128   0x40
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_256   0x48
 
#define SPECTROMETER_FD_TIME_2_FD_GAIN_512   0x50
 
#define SPECTROMETER_UNKNOWN_FREQ   0x01
 
#define SPECTROMETER_DETECTED_100_HZ   0x02
 
#define SPECTROMETER_DETECTED_120_HZ   0x03
 
#define SPECTROMETER_READING_ERROR   0x00
 
#define SPECTROMETER_ID_VALUE   0x24
 

Functions

void spectrometer_cfg_setup (spectrometer_cfg_t *cfg)
 Config Object Initialization function.
 
SPECTROMETER_RETVAL spectrometer_init (spectrometer_t *ctx, spectrometer_cfg_t *cfg)
 Initialization function.
 
void spectrometer_generic_write (spectrometer_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
 Generic write function.
 
void spectrometer_generic_read (spectrometer_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
 Generic read function.
 
void spectrometer_pon (spectrometer_t *ctx)
 Set the power on bit function.
 
void spectrometer_sp_en (spectrometer_t *ctx, uint8_t state)
 Set the spectral measurement enabled bit function.
 
void spectrometer_smux_en (spectrometer_t *ctx)
 Starting the SMUX function.
 
uint8_t spectrometer_get_smux_en (spectrometer_t *ctx)
 Reading and Polling the the SMUX Enable bit function.
 
uint8_t spectrometer_get_data_ready (spectrometer_t *ctx)
 Reading and Polling the the AVALID bit function.
 
void spectrometer_f1f4_clr_nir (spectrometer_t *ctx)
 SMUX Configuration for F1,F2,F3,F4,NIR,Clear function.
 
void spectrometer_f5f8_clr_nir (spectrometer_t *ctx)
 SMUX Configuration for F5,F6,F7,F8,NIR,Clear function.
 
void spectrometer_fd_cfg (spectrometer_t *ctx)
 Flicker Detect Configuration function.
 
void spectrometer_reg_bank_cfg (spectrometer_t *ctx, uint8_t reg_bank)
 Select Register bank function.
 
void spectrometer_def_cfg (spectrometer_t *ctx)
 Default configuration function.
 
void spectrometer_raw_rd_val_mode_1 (spectrometer_t *ctx, uint8_t *adc_data)
 Raw Read Mode 1 function.
 
void spectrometer_raw_rd_val_mode_2 (spectrometer_t *ctx, uint8_t *adc_data)
 Raw Read Mode 2 function.
 
uint8_t spectrometer_flicker_detection (spectrometer_t *ctx)
 name function
 
uint8_t spectrometer_get_int (spectrometer_t *ctx)
 Get Interrupt state function.
 

Detailed Description

This file contains API for Spectrometer Click driver.