| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /*
- * ALS308.h
- *
- * Created on: 2022年4月11日
- * Author: amos
- */
- #ifndef RGB381_H_
- #define RGB381_H_
- #include "onechip_include_header.h"
- #define max3v(v1, v2, v3) ((v1)<(v2)? ((v2)<(v3)?(v3):(v2)):((v1)<(v3)?(v3):(v1)))
- #define min3v(v1, v2, v3) ((v1)>(v2)? ((v2)>(v3)?(v3):(v2)):((v1)>(v3)?(v3):(v1)))
- /****************************************************/
- #define SMPTIME 30 //sample times
- #define SAMP_SIZE 18
- #define CALCU_SAMP_SIZE 180
- #define CS_MAX 10
- #define CS_RDR_MIN 50 //光信号最小值
- /***************LTR381RGB address********************/
- #define RGB381_ADDR 0x53
- /***************LTR381RGB register define************/
- #define RGB381_MainCtrl 0x00 /*RGB operation mode control, SW reset*/
- #define RGB381_MeasRate 0x04 /*RGB measurement rate and resolution in Active Mode*/
- #define RGB381_Gain 0x05 /*RGB analog Gain*/
- #define RGB381_PartID 0x06 /*Part number ID and revision ID*/
- #define RGB381_MainState 0x07 /*Power-On status, Interrupt status, Data status*/
- #define RGB381_IR_DataLow 0x0A /*IR ADC measurement data, LSB*/
- #define RGB381_IR_DataMid 0x0B /*IR ADC measurement data*/
- #define RGB381_IR_DataHIG 0x0C /*IR ADC measurement data, MSB*/
- #define RGB381_G_DataLow 0x0D /*G ADC measurement data, LSB*/
- #define RGB381_G_DataMid 0x0E /*G ADC measurement data*/
- #define RGB381_G_DataHIG 0x0F /*G ADC measurement data, MSB*/
- #define RGB381_R_DataLow 0x10 /*red ADC measurement data, LSB*/
- #define RGB381_R_DataMid 0x11 /*red ADC measurement data*/
- #define RGB381_R_DataHIG 0x12 /*CS red ADC measurement data, MSB*/
- #define RGB381_B_DataLow 0x13 /*CS blue ADC measurement data, LSB*/
- #define RGB381_B_DataMid 0x14 /*CS blue ADC measurement data*/
- #define RGB381_B_DataHIG 0x15 /*CS blue ADC measurement data, MSB*/
- #define RGB381_INTCFG 0x19 /*Interrupt configuration*/
- #define RGB381_INTPST 0x1A /*Interrupt persist setting*/
- #define RGB381_THRUP0 0x21 /*RGB interrupt upper threshold, LSB*/
- #define RGB381_THRUP1 0x22 /*RGB interrupt upper threshold, intervening bits*/
- #define RGB381_THRUP2 0x23 /*RGB interrupt upper threshold, MSB*/
- #define RGB381_THRLW0 0x24 /*RGB interrupt lower threshold, LSB*/
- #define RGB381_THRLW1 0x25 /*RGB interrupt lower threshold, intervening bits*/
- #define RGB381_THRLW2 0x26 /*RGB interrupt lower threshold, MSB*/
- /*************************LTR381RGB function define******************/
- #define ALS_MeasRes_20B 0x00 /**< data 20 bit,conversion time 400ms */
- #define ALS_MeasRes_19B 0x10 /**< data 19 bit,conversion time 200ms */
- #define ALS_MeasRes_18B 0x20 /**< data 18 bit,conversion time 100ms */
- #define ALS_MeasRes_17B 0x30 /**< data 17 bit,conversion time 50ms */
- #define ALS_MeasRes_16B 0x40 /**< data 16 bit,conversion time 25ms */
- /*********************************************************************/
- #define ALS_MeasRate_25ms 0x00 /**< measurement time 25ms */
- #define ALS_MeasRate_50ms 0x01 /**< measurement time 50ms */
- #define ALS_MeasRate_100ms 0x02 /**< measurement time 100ms */
- #define ALS_MeasRate_200ms 0x03 /**< measurement time 500ms */
- #define ALS_MeasRate_500ms 0x04 /**< measurement time 500ms */
- #define ALS_MeasRate_1000ms 0x05 /**< measurement time 1000ms */
- #define ALS_MeasRate_2000ms 0x06 /**< measurement time 2000ms */
- /*******************************************************************/
- #define ALS_Gain_1X 0x00 /**< 1x gain */
- #define ALS_Gain_3X 0x01 /**< 3x gain */
- #define ALS_Gain_6X 0x02 /**< 6x gain */
- #define ALS_Gain_9X 0x03 /**< 9x gain */
- #define ALS_Gain_18X 0x04 /**< 18x gain */
- #define CS_Modle 0x02 /* RGB is active mode */
- #define ALS_Active 0x04 /* RGB is active mode */
- /****************************************************/
- typedef struct
- {
- uint32_t RDC; //color data clear raw data 原始值
- uint32_t RDR; //color data red raw data 原始值带小数
- // uint32_t RDG; //color data green raw data
- // uint32_t RDB; //color data blue raw data
- float CDR; //color data red calibration data 校零值(原始值带小数)
- // float CDG; //color data green calibration data
- // float CDB; //color data blue calibration data
- float RtR; //color data red convert data (CDR - RDR)*gain
- // float RtG; //color data green convert data
- // float RtB; //color data blue convert data
- float Tt;
- float TtMin;
- float TtMax; // original Tt
- uint8_t std_num;
- float gain; //归一化值
- //float sum;
- float STD; //标准差
- float average; //均值
- float SAMP[SAMP_SIZE];
- // uint16_t CALCU_SAMP[CALCU_SAMP_SIZE];
- //float AccArea; //accumulation area
- uint8_t Result;
- uint8_t ID; //color sensor ID
- }ColorSensor;
- extern ColorSensor CS[CS_MAX];
- extern uint8_t SensorState1,SensorState2,SensorState3,SensorState4,SensorState5,SensorState6,SensorState7,SensorState8,SensorState9,SensorState10;
- //extern uint8_t SensorState1,SensorState2,SensorState3,SensorState4,SensorState5,SensorState6,SensorState7,SensorState8,SensorState9;
- /**************************************************/
- void SensorMeasurementFactor(uint8_t measfactor);
- void SensorSetGain(uint8_t gain);
- uint8_t SensorGetID(uint8_t ID);
- void SensorGetRawData(ColorSensor *CS);
- void SensorCalculatedCalibrationFactor(ColorSensor *CS);
- void RGBtoHSV(ColorSensor *CS);
- void SensorEnable(void);
- uint8_t SensorInit(ColorSensor *CS);
- int SensorSelfCheck(void);
- void SensorRGBInit(ColorSensor *CS);
- void SensorGetCalData(ColorSensor *CS);
- void sample_first_zero(void);
- void SensorInitial(void);
- int check_first_zero(void);
- void sample_calibrate_calc(uint32_t times);
- void sample_calc_avg_std(void);
- void sample_calc_tt(void);
- void sample_calc_result(void);
- void calc_balance(void);
- /**************************************************/
- #endif /* RGB381_H_ */
|