Datasheet

Designing the VEML6070 UV Light Sensor
Into Applications
Application Note
www.vishay.com
Vishay Semiconductors
APPLICATION NOTE
Revision: 26-Mar-18
11
Document Number: 84310
For technical questions, contact: sensorstechsupport@vishay.com
THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE. THE PRODUCTS DESCRIBED HEREIN AND THIS DOCUMENT
ARE SUBJECT TO SPECIFIC DISCLAIMERS, SET FORTH AT www.vishay.com/doc?91000
VEML6070 REFERENCE SOFTWARE CODE
#define VEML6070_ADDR_ARA (0x18 >> 1)
#define VEML6070_ADDR_CMD (0x70 >> 1)
#define VEML6070_ADDR_DATA_LSB (0x71 >> 1)
#define VEML6070_ADDR_DATA_MSB (0x73 >> 1)
// VEML6070 command register bits
#define VEML6070_CMD_SD 0x01
#define VEML6070_CMD_IT_0_5T 0x00
#define VEML6070_CMD_IT_1T 0x04
#define VEML6070_CMD_IT_2T 0x08
#define VEML6070_CMD_IT_4T 0x0C
#define VEML6070_CMD_DEFAULT (VEML6070_CMD_WDM |
VEML6070_CMD_IT_1T)
type enum {LOW, MODERATE, HIGH, VERY_HIGH, EXTREME} RISK_LEVEL;
BYTE cmd = VEML6070_CMD_DEFAULT;
WORD uvs_step;
RISK_LEVEL risk_level;
struct i2c_msg {
WORD addr;
WORD flags;
#define I2C_M_TEN 0x0010
#define I2C_M_RD 0x0001
#define I2C_M_NOSTART 0x4000
#define I2C_M_REV_DIR_ADDR 0x2000
#define I2C_M_IGNORE_NAK 0x1000
#define I2C_M_NO_RD_ACK 0x0800
#define I2C_M_RECV_LEN 0x0400
WORD len;
BYTE *buf;
};
extern int i2c_transfer(struct i2c_msg *msgs, int num);
//----------------------------------------------------------------------------
// C main function
//----------------------------------------------------------------------------
void main(void)
{
initialize_VEML6070();
// Loop for polling VEML6070 data
while (1)