CM3592 simple library

Dependents:   Mt05_MtSense05

Committer:
johnathanlyu
Date:
Fri Apr 27 09:58:04 2018 +0000
Revision:
1:8547ec72dba2
Parent:
0:a434d2ca0357
update library flow

Who changed what in which revision?

UserRevisionLine numberNew contents of line
johnathanlyu 0:a434d2ca0357 1 #include "CM3592.h"
johnathanlyu 0:a434d2ca0357 2
johnathanlyu 0:a434d2ca0357 3 CM3592::CM3592(I2C& i2c) : m_i2c(i2c) {
johnathanlyu 1:8547ec72dba2 4 config[0] = 0x00; //default LSB set 60ms integration.
johnathanlyu 1:8547ec72dba2 5 config[1] = 0x82; //default MSB set Hight Sensitivity and High Dynamic Range.
johnathanlyu 0:a434d2ca0357 6 }
johnathanlyu 0:a434d2ca0357 7
johnathanlyu 0:a434d2ca0357 8 int CM3592::init() {
johnathanlyu 0:a434d2ca0357 9
johnathanlyu 0:a434d2ca0357 10 // char data[3] = { CM3592_REG_CTRL, config[0], config[1]};
johnathanlyu 0:a434d2ca0357 11 // m_i2c.write(CM3592_ADDR, data, 3, false);
johnathanlyu 0:a434d2ca0357 12
johnathanlyu 0:a434d2ca0357 13 write(CM3592_REG_CTRL, config);
johnathanlyu 0:a434d2ca0357 14
johnathanlyu 0:a434d2ca0357 15
johnathanlyu 0:a434d2ca0357 16 return 0;
johnathanlyu 0:a434d2ca0357 17 }
johnathanlyu 0:a434d2ca0357 18
johnathanlyu 0:a434d2ca0357 19 int CM3592::init(char configL, char configH) {
johnathanlyu 0:a434d2ca0357 20
johnathanlyu 0:a434d2ca0357 21 config[0] = configL;
johnathanlyu 0:a434d2ca0357 22 config[1] = configH;
johnathanlyu 0:a434d2ca0357 23 write(CM3592_REG_CTRL, config);
johnathanlyu 0:a434d2ca0357 24
johnathanlyu 0:a434d2ca0357 25 return 0;
johnathanlyu 0:a434d2ca0357 26
johnathanlyu 0:a434d2ca0357 27 }
johnathanlyu 0:a434d2ca0357 28
johnathanlyu 0:a434d2ca0357 29 int CM3592::readData(uint16_t *uv) {
johnathanlyu 0:a434d2ca0357 30
johnathanlyu 0:a434d2ca0357 31 char uv_raw[2];
johnathanlyu 0:a434d2ca0357 32
johnathanlyu 0:a434d2ca0357 33 read(CM3592_REG_UV_DATA, uv_raw);
johnathanlyu 0:a434d2ca0357 34
johnathanlyu 0:a434d2ca0357 35 *uv = uv_raw[1]<<8 | uv_raw[0];
johnathanlyu 0:a434d2ca0357 36
johnathanlyu 0:a434d2ca0357 37 return 0;
johnathanlyu 0:a434d2ca0357 38 }
johnathanlyu 0:a434d2ca0357 39
johnathanlyu 0:a434d2ca0357 40 int CM3592::getUVIndex(uint16_t uv) {
johnathanlyu 0:a434d2ca0357 41 if(uv<747){
johnathanlyu 0:a434d2ca0357 42 return 0;
johnathanlyu 0:a434d2ca0357 43 }else if(uv>=747 && uv<1494){
johnathanlyu 0:a434d2ca0357 44 return 1;
johnathanlyu 0:a434d2ca0357 45 }else if(uv>=1494 && uv<2442){
johnathanlyu 0:a434d2ca0357 46 return 2;
johnathanlyu 0:a434d2ca0357 47 }else if(uv>=2442 && uv<3188){
johnathanlyu 0:a434d2ca0357 48 return 3;
johnathanlyu 0:a434d2ca0357 49 }else if(uv>=3188 && uv<3735){
johnathanlyu 0:a434d2ca0357 50 return 4;
johnathanlyu 0:a434d2ca0357 51 }else if(uv>=3735 && uv<4483){
johnathanlyu 0:a434d2ca0357 52 return 5;
johnathanlyu 0:a434d2ca0357 53 }else if(uv>=4483 && uv<5229){
johnathanlyu 0:a434d2ca0357 54 return 6;
johnathanlyu 0:a434d2ca0357 55 }else if(uv>=5229 && uv<5977){
johnathanlyu 0:a434d2ca0357 56 return 7;
johnathanlyu 0:a434d2ca0357 57 }else if(uv>=5977 && uv<6724){
johnathanlyu 0:a434d2ca0357 58 return 8;
johnathanlyu 0:a434d2ca0357 59 }else if(uv>=6724 && uv<7471){
johnathanlyu 0:a434d2ca0357 60 return 9;
johnathanlyu 0:a434d2ca0357 61 }else if(uv>=7471 && uv<8218){
johnathanlyu 0:a434d2ca0357 62 return 10;
johnathanlyu 0:a434d2ca0357 63 }else{
johnathanlyu 0:a434d2ca0357 64 return 10;
johnathanlyu 0:a434d2ca0357 65 }
johnathanlyu 0:a434d2ca0357 66 }
johnathanlyu 0:a434d2ca0357 67
johnathanlyu 0:a434d2ca0357 68 void CM3592::write(char reg, char data[]) {
johnathanlyu 0:a434d2ca0357 69 char send[3];
johnathanlyu 0:a434d2ca0357 70 send[0] = reg;
johnathanlyu 0:a434d2ca0357 71 send[1] = data[0];
johnathanlyu 0:a434d2ca0357 72 send[2] = data[1];
johnathanlyu 0:a434d2ca0357 73 m_i2c.write(CM3592_ADDR, send, 3, false);
johnathanlyu 0:a434d2ca0357 74 }
johnathanlyu 0:a434d2ca0357 75
johnathanlyu 0:a434d2ca0357 76 void CM3592::read(char reg, char data[]) {
johnathanlyu 0:a434d2ca0357 77 m_i2c.write(CM3592_ADDR, &reg, 1, false);
johnathanlyu 0:a434d2ca0357 78 m_i2c.read(CM3592_ADDR, data, 2, false);
johnathanlyu 0:a434d2ca0357 79
johnathanlyu 0:a434d2ca0357 80 m_i2c.write(CM3592_ADDR, &reg, 1, false);
johnathanlyu 0:a434d2ca0357 81 // i2c.read(addr, rx, 2, false);
johnathanlyu 0:a434d2ca0357 82 }