Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
OPT3101_configuration.cpp
00001 /* 00002 Copyright (c) 2018 Texas Instruments Incorporated 00003 All rights reserved not granted herein. 00004 Limited License. 00005 Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive license under copyrights and patents it now or hereafter owns or controls to make, have made, use, import, offer to sell and sell ("Utilize") this software subject to the terms herein. With respect to the foregoing patent license, such license is granted solely to the extent that any such patent is necessary to Utilize the software alone. The patent license shall not apply to any combinations which include this software, other than combinations with devices manufactured by or for TI (TI Devices). No hardware patent is licensed hereunder. 00006 Redistributions must preserve existing copyright notices and reproduce this license (including the above copyright notice and the disclaimer and (if applicable) source code license limitations below) in the documentation and/or other materials provided with the distribution 00007 Redistribution and use in binary form, without modification, are permitted provided that the following conditions are met: 00008 * No reverse engineering, decompilation, or disassembly of this software is permitted with respect to any software provided in binary form. 00009 * any redistribution and use are licensed by TI for use only with TI Devices. 00010 * Nothing shall obligate TI to provide you with source code for the software licensed and provided to you in object code. 00011 If software source code is provided to you, modification and redistribution of the source code are permitted provided that the following conditions are met: 00012 * any redistribution and use of the source code, including any resulting derivative works, are licensed by TI for use only with TI Devices. 00013 * any redistribution and use of any object code compiled from the source code and any resulting derivative works, are licensed by TI for use only with TI Devices. 00014 Neither the name of Texas Instruments Incorporated nor the names of its suppliers may be used to endorse or promote products derived from this software without specific prior written permission. 00015 DISCLAIMER. 00016 THIS SOFTWARE IS PROVIDED BY TI AND TI's LICENSORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00017 */ 00018 00019 00020 #include "OPT3101device.h " 00021 00022 00023 /* OPT3101 device initialization Sequence Header file written by OPT3101 Calibration tool - Version 0.8.0 00024 By: a0227156 00025 On: 2019-10-02 19:54:11 00026 Configuration Settings: 00027 { 00028 "genDeviceI2CMasterConnection": 1, 00029 "autoHDRMode": true, 00030 "monoshotMode": false, 00031 "TX0HCurrent": 0, 00032 "genDeviceI2CMasterTempSensor": false, 00033 "TXDCCurrent": 0, 00034 "superHDRMode": false, 00035 "LEDOrder": 73746, 00036 "timeStamp": 2019-10-02 19:53:28, 00037 "genDeviceAmbientSupport": 5, 00038 "freqComp": false, 00039 "user": a0227156, 00040 "autoHDRRatio": 4.0, 00041 "multiLEDMode": true, 00042 "TX1HCurrent": 0, 00043 "genDeviceEEPROMConnection": true, 00044 "toolVersion": 0.8.0, 00045 "TX2HCurrent": 0, 00046 "crc": -1193321828, 00047 "genDeviceSubFrameCount": 256, 00048 "autoHDRHThreshold": 25500, 00049 "genDeviceAvgFrameCount": 6, 00050 } 00051 */ 00052 void OPT3101::device::initialize(void){ 00053 // List of registers to initialize OPT3101 device after power-up 00054 00055 this->reg.tg_ovl_window_start = 7000; // //Overload flab observation window 00056 this->reg.en_temp_conv = 1; // //Enables the internal 00057 00058 this->reg.clip_mode_fc = 1; // //Enables Clip mode for Frequency correction 00059 this->reg.clip_mode_temp = 0; // //Disables Clip mode for Temp coff phase correction 00060 this->reg.clip_mode_offset = 0; // //Disables Clip mode for phase offset correction 00061 this->reg.iq_read_data_sel = 3; // //Enables 16 bit frame counter 00062 this->reg.iamb_max_sel = 14; // //Sets maximum ambient support 00063 this->reg.en_temp_corr = 1; // //Enables Temperature Correction 00064 this->reg.gpio1_obuf_en=1; // //Enabled output buffer on GPIO1 pin 00065 this->reg.gpo1_mux_sel=2; // //select dig_gpo_0 on gpio1 00066 this->reg.dig_gpo_sel0 = 9; // //Select Data Ready on dig_gpo_0 00067 00068 this->reg.num_sub_frames = 255; // //Sub frames count 00069 this->reg.num_avg_sub_frames = 127; // //Average frames count 00070 this->reg.xtalk_filt_time_const = 3; // //Crosstalk filter time constant 00071 this->reg.tg_seq_int_start = 9850; // //Sequence Start 00072 this->reg.tg_seq_int_end = 9858; // //Sequence End 00073 this->reg.tg_seq_int_mask_start = 127; // //Same as AvgFrame Count 00074 this->reg.tg_seq_int_mask_end = 127; // //Same as AvgFrame Count 00075 00076 this->reg.hdr_thr_high = 25500; // //High Threshold 00077 this->reg.hdr_thr_low = 5875; // //Low Threshold 00078 this->reg.en_adaptive_hdr = 1; // //Enables adaptive HDR feature 00079 00080 this->reg.illum_dac_h_tx0 = 31; // //High Current settings [173.6mA:5.6mA X 31] 00081 this->reg.illum_scale_h_tx0 = 0; // //Illum scale for H [173.6mA:5.6mA X 31] 00082 00083 this->reg.illum_dac_l_tx0 = 31; // //High Current settings [043.4mA:1.4mA X 31] 00084 this->reg.illum_scale_l_tx0 = 3; // //Illum scale for H [043.4mA:1.4mA X 31] 00085 00086 this->reg.illum_dac_h_tx1 = 31; // //High Current settings [173.6mA:5.6mA X 31] 00087 this->reg.illum_scale_h_tx1 = 0; // //Illum scale for H [173.6mA:5.6mA X 31] 00088 00089 this->reg.illum_dac_l_tx1 = 31; // //High Current settings [043.4mA:1.4mA X 31] 00090 this->reg.illum_scale_l_tx1 = 3; // //Illum scale for H [043.4mA:1.4mA X 31] 00091 00092 this->reg.illum_dac_h_tx2 = 31; // //High Current settings [173.6mA:5.6mA X 31] 00093 this->reg.illum_scale_h_tx2 = 0; // //Illum scale for H [173.6mA:5.6mA X 31] 00094 00095 this->reg.illum_dac_l_tx2 = 31; // //High Current settings [043.4mA:1.4mA X 31] 00096 this->reg.illum_scale_l_tx2 = 3; // //Illum scale for H [043.4mA:1.4mA X 31] 00097 00098 this->reg.tx_seq_reg = 2340; // //Setting TX Switching order 00099 this->reg.en_tx_switch = 1 ; // //Enable TX Switching order 00100 00101 this->reg.tg_en = 1; // //Enables Timing Generator 00102 00103 this->configurationFlags_xtalkFilterTau = 3; // //This is not a register but a settings flag for the SDK 00104 this->configurationFlags_monoshotMode = false; // //This is not a register but a settings flag for the SDK 00105 this->configurationFlags_xtalkSettlingOneTauInMilliSeconds = 512; // //This is not a register but a settings flag for the SDK 00106 this->configurationFlags_xtalkSettlingOneTauInDataReadyCounts = 8; // //This is not a register but a settings flag for the SDK 00107 this->configurationFlags_frameTimeInMilliSeconds = 64; // //This is not a register but a settings flag for the SDK 00108 this->configurationFlags_avgFrameCountExponentOfTwo = 7; // //This is not a register but a settings flag for the SDK 00109 00110 // tx2 xtalk compensation 00111 //this->reg.EN_CTALK_FB_CLK=1; 00112 //this->reg.EN_CALIB_CLK=1; 00113 //this->reg.calib_curr1_en_I=1; 00114 //this->reg.calib_curr1_gain_sel=0; 00115 //this->reg.calib_curr1_DAC_I=4; 00116 //this->reg.calib_curr1_inv_CLK_I=0; 00117 00118 } 00119 00120 OPT3101::device::device(void)//: TODO fix this initialization 00121 //configurationFlags_isTXChannelActive{true,true,true}, 00122 //configurationFlags_isRegisterSetActive(true,true) 00123 { 00124 configurationFlags_isTXChannelActive[0] = true; 00125 configurationFlags_isTXChannelActive[1] = true; 00126 configurationFlags_isTXChannelActive[2] = true; 00127 configurationFlags_isRegisterSetActive[0] = true; 00128 configurationFlags_isRegisterSetActive[1] = true; 00129 } 00130 00131 OPT3101::calibrationC::calibrationC(void)// : calibrationC(true) 00132 { 00133 this->recordLength = 6; // //This configuration requires 6 crosstalk and other configuration record(s) 00134 this->registerAddressListSize= 43; // //This configuration requires 43 registers [1376] bits to be stored for calibration 00135 this->EEPROM_connected = true; // //This configuration helps configure EEPROM 00136 this->extTempSensor_connected= false; // //This configuration helps configure Ext temp sensor 00137 this->registerAddressList[0] = 0x2f; // //Address for register(s) iphase_xtalk_reg_hdr0_tx0,temp_coeff_main_hdr1_tx1 00138 this->registerAddressList[1] = 0x30; // //Address for register(s) qphase_xtalk_reg_hdr0_tx0,temp_coeff_main_hdr1_tx1 00139 this->registerAddressList[2] = 0x38; // //Address for register(s) temp_coeff_xtalk_iphase_hdr0_tx0,qphase_xtalk_reg_hdr0_tx2 00140 this->registerAddressList[3] = 0x39; // //Address for register(s) temp_coeff_xtalk_qphase_hdr0_tx0,iphase_xtalk_reg_hdr1_tx2 00141 this->registerAddressList[4] = 0x42; // //Address for register(s) phase_offset_hdr0_tx0 00142 this->registerAddressList[5] = 0x47; // //Address for register(s) tmain_calib_hdr0_tx0,tillum_calib_hdr0_tx0 00143 this->registerAddressList[6] = 0x45; // //Address for register(s) temp_coeff_main_hdr0_tx0,tmain_calib_hdr1_tx2 00144 this->registerAddressList[7] = 0x46; // //Address for register(s) temp_coeff_illum_hdr0_tx0,tillum_calib_hdr1_tx2 00145 this->registerAddressList[8] = 0x31; // //Address for register(s) iphase_xtalk_reg_hdr1_tx0,temp_coeff_main_hdr0_tx2 00146 this->registerAddressList[9] = 0x32; // //Address for register(s) qphase_xtalk_reg_hdr1_tx0,temp_coeff_main_hdr0_tx2 00147 this->registerAddressList[10] = 0x5e; // //Address for register(s) temp_coeff_xtalk_iphase_hdr1_tx0,temp_coeff_xtalk_iphase_hdr0_tx1 00148 this->registerAddressList[11] = 0x60; // //Address for register(s) temp_coeff_xtalk_qphase_hdr1_tx0,temp_coeff_xtalk_qphase_hdr0_tx1,temp_coeff_xtalk_qphase_hdr1_tx1 00149 this->registerAddressList[12] = 0x51; // //Address for register(s) phase_offset_hdr1_tx0,temp_coeff_illum_hdr1_tx0 00150 this->registerAddressList[13] = 0x48; // //Address for register(s) tmain_calib_hdr1_tx0,tillum_calib_hdr1_tx0 00151 this->registerAddressList[14] = 0x2d; // //Address for register(s) temp_coeff_main_hdr1_tx0,temp_coeff_main_hdr0_tx1 00152 this->registerAddressList[15] = 0x52; // //Address for register(s) temp_coeff_illum_hdr1_tx0,phase_offset_hdr0_tx1 00153 this->registerAddressList[16] = 0x33; // //Address for register(s) iphase_xtalk_reg_hdr0_tx1,temp_coeff_main_hdr1_tx2 00154 this->registerAddressList[17] = 0x34; // //Address for register(s) qphase_xtalk_reg_hdr0_tx1,temp_coeff_main_hdr1_tx2 00155 this->registerAddressList[18] = 0x49; // //Address for register(s) tmain_calib_hdr0_tx1,tillum_calib_hdr0_tx1 00156 this->registerAddressList[19] = 0x53; // //Address for register(s) temp_coeff_illum_hdr0_tx1,phase_offset_hdr1_tx1 00157 this->registerAddressList[20] = 0x54; // //Address for register(s) temp_coeff_illum_hdr0_tx1,phase_offset_hdr0_tx2 00158 this->registerAddressList[21] = 0x35; // //Address for register(s) iphase_xtalk_reg_hdr1_tx1 00159 this->registerAddressList[22] = 0x36; // //Address for register(s) qphase_xtalk_reg_hdr1_tx1 00160 this->registerAddressList[23] = 0x5f; // //Address for register(s) temp_coeff_xtalk_iphase_hdr1_tx1,temp_coeff_xtalk_iphase_hdr0_tx2,temp_coeff_xtalk_iphase_hdr1_tx2 00161 this->registerAddressList[24] = 0x41; // //Address for register(s) tmain_calib_hdr1_tx1 00162 this->registerAddressList[25] = 0x43; // //Address for register(s) tillum_calib_hdr1_tx1,en_phase_corr,en_temp_corr,scale_phase_temp_coeff 00163 this->registerAddressList[26] = 0x55; // //Address for register(s) temp_coeff_illum_hdr1_tx1,phase_offset_hdr1_tx2 00164 this->registerAddressList[27] = 0x56; // //Address for register(s) temp_coeff_illum_hdr1_tx1 00165 this->registerAddressList[28] = 0x37; // //Address for register(s) iphase_xtalk_reg_hdr0_tx2 00166 this->registerAddressList[29] = 0x61; // //Address for register(s) temp_coeff_xtalk_qphase_hdr0_tx2,temp_coeff_xtalk_qphase_hdr1_tx2 00167 this->registerAddressList[30] = 0x3f; // //Address for register(s) tmain_calib_hdr0_tx2,tillum_calib_hdr0_tx2 00168 this->registerAddressList[31] = 0x57; // //Address for register(s) temp_coeff_illum_hdr0_tx2 00169 this->registerAddressList[32] = 0x58; // //Address for register(s) temp_coeff_illum_hdr0_tx2 00170 this->registerAddressList[33] = 0x3a; // //Address for register(s) qphase_xtalk_reg_hdr1_tx2,scale_temp_coeff_xtalk 00171 this->registerAddressList[34] = 0x59; // //Address for register(s) temp_coeff_illum_hdr1_tx2 00172 this->registerAddressList[35] = 0x5a; // //Address for register(s) temp_coeff_illum_hdr1_tx2 00173 this->registerAddressList[36] = 0x2e; // //Address for register(s) illum_xtalk_reg_scale 00174 this->registerAddressList[37] = 0x71; // //Address for register(s) shift_illum_phase 00175 this->registerAddressList[38] = 0xb5; // //Address for register(s) scale_amb_phase_corr_coeff 00176 this->registerAddressList[39] = 0x0c; // //Address for register(s) amb_phase_corr_pwl_coeff0 00177 this->registerAddressList[40] = 0xb4; // //Address for register(s) amb_phase_corr_pwl_coeff1,amb_phase_corr_pwl_coeff2,amb_phase_corr_pwl_coeff3 00178 this->registerAddressList[41] = 0xb8; // //Address for register(s) amb_phase_corr_pwl_x0,amb_phase_corr_pwl_x1 00179 this->registerAddressList[42] = 0xb9; // //Address for register(s) amb_phase_corr_pwl_x2 00180 00181 } 00182 00183
Generated on Sun Jul 17 2022 05:22:03 by
