Adafruit AS7341 Library
Classes | Macros | Enumerations
Adafruit_AS7341.h File Reference
#include "Arduino.h"
#include <Adafruit_BusIO_Register.h>
#include <Adafruit_I2CDevice.h>
#include <Wire.h>

Go to the source code of this file.

Classes

class  Adafruit_AS7341
 Class that stores state and functions for interacting with the AS7341 11-Channel Spectral Sensor. More...
 

Macros

#define AS7341_I2CADDR_DEFAULT   0x39
 AS7341 default i2c address.
 
#define AS7341_CHIP_ID   0x09
 AS7341 default device id from WHOAMI.
 
#define AS7341_WHOAMI   0x92
 Chip ID register.
 
#define AS7341_ASTATUS   0x60
 AS7341_ASTATUS (unused)
 
#define AS7341_CH0_DATA_L_   0x61
 AS7341_CH0_DATA_L (unused)
 
#define AS7341_CH0_DATA_H_   0x62
 AS7341_CH0_DATA_H (unused)
 
#define AS7341_ITIME_L   0x63
 AS7341_ITIME_L (unused)
 
#define AS7341_ITIME_M   0x64
 AS7341_ITIME_M (unused)
 
#define AS7341_ITIME_H   0x65
 AS7341_ITIME_H (unused)
 
#define AS7341_CONFIG   0x70
 Enables LED control and sets light sensing mode.
 
#define AS7341_STAT   0x71
 AS7341_STAT (unused)
 
#define AS7341_EDGE   0x72
 AS7341_EDGE (unused)
 
#define AS7341_GPIO   0x73
 Connects photo diode to GPIO or INT pins.
 
#define AS7341_LED   0x74
 LED Register; Enables and sets current limit.
 
#define AS7341_ENABLE   0x80
 Measurements and Power. More...
 
#define AS7341_ATIME   0x81
 Sets ADC integration step count.
 
#define AS7341_WTIME   0x83
 AS7341_WTIME (unused)
 
#define AS7341_SP_LOW_TH_L   0x84
 Spectral measurement Low Threshold low byte.
 
#define AS7341_SP_LOW_TH_H   0x85
 Spectral measurement Low Threshold high byte.
 
#define AS7341_SP_HIGH_TH_L   0x86
 Spectral measurement High Threshold low byte.
 
#define AS7341_SP_HIGH_TH_H   0x87
 Spectral measurement High Threshold low byte.
 
#define AS7341_AUXID   0x90
 AS7341_AUXID (unused)
 
#define AS7341_REVID   0x91
 AS7341_REVID (unused)
 
#define AS7341_ID   0x92
 AS7341_ID (unused)
 
#define AS7341_STATUS   0x93
 Interrupt status registers. Indicates the occourance of an interrupt.
 
#define AS7341_ASTATUS_   0x94
 AS7341_ASTATUS, same as 0x60 (unused)
 
#define AS7341_CH0_DATA_L   0x95
 ADC Channel Data.
 
#define AS7341_CH0_DATA_H   0x96
 ADC Channel Data.
 
#define AS7341_CH1_DATA_L   0x97
 ADC Channel Data.
 
#define AS7341_CH1_DATA_H   0x98
 ADC Channel Data.
 
#define AS7341_CH2_DATA_L   0x99
 ADC Channel Data.
 
#define AS7341_CH2_DATA_H   0x9A
 ADC Channel Data.
 
#define AS7341_CH3_DATA_L   0x9B
 ADC Channel Data.
 
#define AS7341_CH3_DATA_H   0x9C
 ADC Channel Data.
 
#define AS7341_CH4_DATA_L   0x9D
 ADC Channel Data.
 
#define AS7341_CH4_DATA_H   0x9E
 ADC Channel Data.
 
#define AS7341_CH5_DATA_L   0x9F
 ADC Channel Data.
 
#define AS7341_CH5_DATA_H   0xA0
 ADC Channel Data.
 
#define AS7341_STATUS2   0xA3
 Measurement status flags; saturation, validity.
 
#define AS7341_STATUS3   0xA4
 Spectral interrupt source, high or low threshold.
 
#define AS7341_STATUS5   0xA6
 AS7341_STATUS5 (unused)
 
#define AS7341_STATUS6   0xA7
 AS7341_STATUS6 (unused)
 
#define AS7341_CFG0   0xA9
 Sets Low power mode, Register bank, and Trigger lengthening.
 
#define AS7341_CFG1   0xAA
 Controls ADC Gain.
 
#define AS7341_CFG3   0xAC
 AS7341_CFG3 (unused)
 
#define AS7341_CFG6   0xAF
 Used to configure Smux.
 
#define AS7341_CFG8   0xB1
 AS7341_CFG8 (unused)
 
#define AS7341_CFG9   0xB2
 interrupts More...
 
#define AS7341_CFG10   0xB3
 AS7341_CFG10 (unused)
 
#define AS7341_CFG12   0xB5
 Spectral threshold channel for interrupts, persistence and auto-gain.
 
#define AS7341_PERS   0xBD
 interupt More...
 
#define AS7341_GPIO2   0xBE
 input More...
 
#define AS7341_ASTEP_L   0xCA
 Integration step size ow byte.
 
#define AS7341_ASTEP_H   0xCB
 Integration step size high byte.
 
#define AS7341_AGC_GAIN_MAX   0xCF
 AS7341_AGC_GAIN_MAX (unused)
 
#define AS7341_AZ_CONFIG   0xD6
 AS7341_AZ_CONFIG (unused)
 
#define AS7341_FD_TIME1   0xD8
 Flicker detection integration time low byte.
 
#define AS7341_FD_TIME2   0xDA
 Flicker detection gain and high nibble.
 
#define AS7341_FD_CFG0   0xD7
 AS7341_FD_CFG0 (unused)
 
#define AS7341_FD_STATUS   0xDB
 type More...
 
#define AS7341_INTENAB   0xF9
 Enables individual interrupt types.
 
#define AS7341_CONTROL   0xFA
 Auto-zero, fifo clear, clear SAI active.
 
#define AS7341_FIFO_MAP   0xFC
 AS7341_FIFO_MAP (unused)
 
#define AS7341_FIFO_LVL   0xFD
 AS7341_FIFO_LVL (unused)
 
#define AS7341_FDATA_L   0xFE
 AS7341_FDATA_L (unused)
 
#define AS7341_FDATA_H   0xFF
 AS7341_FDATA_H (unused)
 
#define AS7341_SPECTRAL_INT_HIGH_MSK   0b00100000
 bitmask to check for a high threshold interrupt
 
#define AS7341_SPECTRAL_INT_LOW_MSK   0b00010000
 bitmask to check for a low threshold interrupt
 

Enumerations

enum  as7341_gain_t {
  AS7341_GAIN_0_5X, AS7341_GAIN_1X, AS7341_GAIN_2X, AS7341_GAIN_4X,
  AS7341_GAIN_8X, AS7341_GAIN_16X, AS7341_GAIN_32X, AS7341_GAIN_64X,
  AS7341_GAIN_128X, AS7341_GAIN_256X, AS7341_GAIN_512X
}
 Allowable gain multipliers for setGain
 
enum  as7341_smux_cmd_t { AS7341_SMUX_CMD_ROM_RESET, AS7341_SMUX_CMD_READ, AS7341_SMUX_CMD_WRITE }
 Available SMUX configuration commands. More...
 
enum  as7341_adc_channel_t {
  AS7341_ADC_CHANNEL_0, AS7341_ADC_CHANNEL_1, AS7341_ADC_CHANNEL_2, AS7341_ADC_CHANNEL_3,
  AS7341_ADC_CHANNEL_4, AS7341_ADC_CHANNEL_5
}
 ADC Channel specifiers for configuration.
 
enum  as7341_color_channel_t {
  AS7341_CHANNEL_415nm_F1, AS7341_CHANNEL_445nm_F2, AS7341_CHANNEL_480nm_F3, AS7341_CHANNEL_515nm_F4,
  AS7341_CHANNEL_CLEAR_0, AS7341_CHANNEL_NIR_0, AS7341_CHANNEL_555nm_F5, AS7341_CHANNEL_590nm_F6,
  AS7341_CHANNEL_630nm_F7, AS7341_CHANNEL_680nm_F8, AS7341_CHANNEL_CLEAR, AS7341_CHANNEL_NIR
}
 Spectral Channel specifiers for configuration and reading.
 
enum  as7341_int_cycle_count_t {
  AS7341_INT_COUNT_ALL, AS7341_INT_COUNT_1, AS7341_INT_COUNT_2, AS7341_INT_COUNT_3,
  AS7341_INT_COUNT_5, AS7341_INT_COUNT_10, AS7341_INT_COUNT_15, AS7341_INT_COUNT_20,
  AS7341_INT_COUNT_25, AS7341_INT_COUNT_30, AS7341_INT_COUNT_35, AS7341_INT_COUNT_40,
  AS7341_INT_COUNT_45, AS7341_INT_COUNT_50, AS7341_INT_COUNT_55, AS7341_INT_COUNT_60
}
 The number of measurement cycles with spectral data outside of a threshold required to trigger an interrupt. More...
 
enum  as7341_gpio_dir_t { AS7341_GPIO_OUTPUT, AS7341_GPIO_INPUT }
 Pin directions to set how the GPIO pin is to be used. More...
 
enum  as7341_waiting_t { AS7341_WAITING_START, AS7341_WAITING_LOW, AS7341_WAITING_HIGH, AS7341_WAITING_DONE }
 Wait states for async reading.
 

Macro Definition Documentation

◆ AS7341_ENABLE

#define AS7341_ENABLE   0x80

Measurements and Power.

Main enable register. Controls SMUX, Flicker Detection, Spectral

◆ AS7341_CFG9

#define AS7341_CFG9   0xB2

interrupts

Enables flicker detection and smux command completion system

◆ AS7341_PERS

#define AS7341_PERS   0xBD

interupt

Number of measurement cycles outside thresholds to trigger an

◆ AS7341_GPIO2

#define AS7341_GPIO2   0xBE

input

GPIO Settings and status: polarity, direction, sets output, reads

◆ AS7341_FD_STATUS

#define AS7341_FD_STATUS   0xDB

type

Flicker detection status; measurement valid, saturation, flicker

Enumeration Type Documentation

◆ as7341_smux_cmd_t

Available SMUX configuration commands.

Enumerator
AS7341_SMUX_CMD_ROM_RESET 

ROM code initialization of SMUX.

AS7341_SMUX_CMD_READ 

Read SMUX configuration to RAM from SMUX chain.

AS7341_SMUX_CMD_WRITE 

Write SMUX configuration from RAM to SMUX chain.

◆ as7341_int_cycle_count_t

The number of measurement cycles with spectral data outside of a threshold required to trigger an interrupt.

Enumerator
AS7341_INT_COUNT_ALL 

0

AS7341_INT_COUNT_1 

1

AS7341_INT_COUNT_2 

2

AS7341_INT_COUNT_3 

3

AS7341_INT_COUNT_5 

4

AS7341_INT_COUNT_10 

5

AS7341_INT_COUNT_15 

6

AS7341_INT_COUNT_20 

7

AS7341_INT_COUNT_25 

8

AS7341_INT_COUNT_30 

9

AS7341_INT_COUNT_35 

10

AS7341_INT_COUNT_40 

11

AS7341_INT_COUNT_45 

12

AS7341_INT_COUNT_50 

13

AS7341_INT_COUNT_55 

14

AS7341_INT_COUNT_60 

15

◆ as7341_gpio_dir_t

Pin directions to set how the GPIO pin is to be used.

Enumerator
AS7341_GPIO_OUTPUT 

THhe GPIO pin is configured as an open drain output.

AS7341_GPIO_INPUT 

The GPIO Pin is set as a high-impedence input.