主题中讨论的其他器件:OPT3101、 OPT3101EVM、 MSP430F5519
尊敬的先生:
我的客户对 OPT3101有一些问题、请提供帮助。
使用 OPT3101-SDK 示例代码设置为 DESEAS 模式来检测距离超过15m 的物体、它们无法在2个频率之间切换!
使用 OPT3101 EVM 并通过 USB 使用 MSP430Flasher.exe 更新固件时、PC 无法找到 USB FET。
谢谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的先生:
我的客户对 OPT3101有一些问题、请提供帮助。
使用 OPT3101-SDK 示例代码设置为 DESEAS 模式来检测距离超过15m 的物体、它们无法在2个频率之间切换!
使用 OPT3101 EVM 并通过 USB 使用 MSP430Flasher.exe 更新固件时、PC 无法找到 USB FET。
谢谢。
尊敬的 Peter:
您是否了解过此常见问题解答? https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/891035/faq-opt3101-dealias-operation
它包含有关经销商模式的信息和计时寄存器的代码示例。
对于第二个问题、您是否能够发送任何错误代码或屏幕截图来处理此问题?
谢谢、
Brent Elliott
void OPT3101::device::initialize(void){ // List of registers to initialize OPT3101 device after power-up this->reg.force_en_slave = 1; // //Since I2C Master bus is floating this register needs to be set to enable device to respond this->reg.tg_ovl_window_start = 7000; // //Overload flab observation window this->reg.en_temp_conv = 1; // //Enables the internal this->reg.clip_mode_fc = 0; // //Enables Clip mode for Frequency correction this->reg.clip_mode_temp = 0; // //Disables Clip mode for Temp coff phase correction this->reg.clip_mode_offset = 0; // //Disables Clip mode for phase offset correction this->reg.iq_read_data_sel = 3; // //Enables 16 bit frame counter this->reg.iamb_max_sel = 14; // 12=100uA, 14=200uA //Sets maximum ambient support this->reg.gpio1_obuf_en=1; // //Enabled output buffer on GPIO1 pin this->reg.gpo1_mux_sel=2; // //select dig_gpo_0 on gpio1 this->reg.dig_gpo_sel0 = 9; // //Select Data Ready on dig_gpo_0 //this->reg.gpio2_obuf_en = 0; //this->reg.gpio2_ibuf_en = 1; //this->reg.en_tx1_on_tx0 = 1; //this->reg.en_tx2_on_tx0 = 0; this->reg.num_sub_frames = 63; // //Sub frames count this->reg.num_avg_sub_frames = 63; // //Average frames count this->reg.xtalk_filt_time_const = 4; // //Crosstalk filter time constant this->reg.tg_seq_int_start = 9850; // //Sequence Start this->reg.tg_seq_int_end = 9858; // //Sequence End this->reg.tg_seq_int_mask_start = 63; // //Same as AvgFrame Count this->reg.tg_seq_int_mask_end = 63; // //Same as AvgFrame Count this->reg.illum_dac_h_tx0 = 18; // //High Current settings: [173.6mA:5.6mA X 31], [078.4mA:5.6mA X 14], [067.2mA:5.6mA X 12] this->reg.illum_scale_h_tx0 = 0; // //Illum scale for H: 0=5.6mA, 1=4.2mA this->reg.sel_hdr_mode = 1; // //Selecting H Channel by default this->reg.tx_seq_reg = 2184; // //Setting TX Switching order this->reg.en_tx_switch = 0; // //Enable TX Switching order //this->reg.override_clkgen_reg = 1; //this->reg.dealias_en = 1; //this->reg.en_multi_freq_phase = 1; //this->reg.dealias_freq = 0; //this->reg.ncr_config = 0; //this->reg.sub_vd_clk_cnt = 11665; // uint16_t(9999*7/6.0); //this->reg.tg_illumen_start = 0; // uint16_t(0*7/6.0); //this->reg.tg_illumen_end = 9916; // uint16_t(8500*7/6.0); //this->reg.tg_capture_start = 10850; // uint16_t(9300*7/6.0); //this->reg.tg_capture_end = 11433; // uint16_t(9800*7/6.0); //this->reg.tg_calc_start = 9916; // uint16_t(8500*7/6.0); //this->reg.tg_calc_end = 11665; // uint16_t(9999*7/6.0); //this->reg.capture_clk_cnt = 10033; // uint16_t(8600*7/6.0); //this->reg.override_clkgen_reg = 1; //this->reg.dealias_en = 1; //this->reg.en_multi_freq_phase = 1; //this->reg.dealias_freq = 0; this->reg.command0 = 0x100; // Set to fo = 10MHz this->reg.command1 = 0x102; // Set to fo to de-alias frequency this->reg.command2 = 0x400; // Go to Command0 this->reg.ncr_config = 0; this->reg.give_dealias_data = 1; this->reg.en_sequencer = 1; this->reg.en_processor_values = 1; //this->reg.en_dealias_meas = 1; // do it in command1 this->reg.tg_en = 1; // //Enables Timing Generator this->configurationFlags_xtalkFilterTau = 4; // //This is not a register but a settings flag for the SDK this->configurationFlags_monoshotMode = false; // //This is not a register but a settings flag for the SDK this->configurationFlags_xtalkSettlingOneTauInMilliSeconds = 256; // //This is not a register but a settings flag for the SDK this->configurationFlags_xtalkSettlingOneTauInDataReadyCounts = 16; // //This is not a register but a settings flag for the SDK this->configurationFlags_frameTimeInMilliSeconds = 16; // //This is not a register but a settings flag for the SDK this->configurationFlags_avgFrameCountExponentOfTwo = 6; // //This is not a register but a settings flag for the SDK } OPT3101::device::device(void): configurationFlags_isTXChannelActive{true,false,false}, configurationFlags_isRegisterSetActive{false,true} {} // useless OPT3101::calibrationC::calibrationC(void) : calibrationC(true) { this->recordLength = 1; // //This configuration requires 1 crosstalk and other configuration record(s) this->registerAddressListSize= 17; // //This configuration requires 17 registers [544] bits to be stored for calibration this->EEPROM_connected = false; // //This configuration helps configure EEPROM this->extTempSensor_connected= false; // //This configuration helps configure Ext temp sensor this->registerAddressList[0] = 0x31; // //Address for register(s) iphase_xtalk_reg_hdr1_tx0 this->registerAddressList[1] = 0x32; // //Address for register(s) qphase_xtalk_reg_hdr1_tx0 this->registerAddressList[2] = 0x5e; // //Address for register(s) temp_coeff_xtalk_iphase_hdr1_tx0 this->registerAddressList[3] = 0x60; // //Address for register(s) temp_coeff_xtalk_qphase_hdr1_tx0 this->registerAddressList[4] = 0x51; // //Address for register(s) phase_offset_hdr1_tx0,temp_coeff_illum_hdr1_tx0 this->registerAddressList[5] = 0x48; // //Address for register(s) tmain_calib_hdr1_tx0,tillum_calib_hdr1_tx0 this->registerAddressList[6] = 0x2d; // //Address for register(s) temp_coeff_main_hdr1_tx0 this->registerAddressList[7] = 0x52; // //Address for register(s) temp_coeff_illum_hdr1_tx0 this->registerAddressList[8] = 0x2e; // //Address for register(s) illum_xtalk_reg_scale this->registerAddressList[9] = 0x3a; // //Address for register(s) scale_temp_coeff_xtalk this->registerAddressList[10] = 0x71; // //Address for register(s) shift_illum_phase this->registerAddressList[11] = 0x43; // //Address for register(s) en_phase_corr,en_temp_corr,scale_phase_temp_coeff this->registerAddressList[12] = 0xb5; // //Address for register(s) scale_amb_phase_corr_coeff this->registerAddressList[13] = 0x0c; // //Address for register(s) amb_phase_corr_pwl_coeff0 this->registerAddressList[14] = 0xb4; // //Address for register(s) amb_phase_corr_pwl_coeff1,amb_phase_corr_pwl_coeff2,amb_phase_corr_pwl_coeff3 this->registerAddressList[15] = 0xb8; // //Address for register(s) amb_phase_corr_pwl_x0,amb_phase_corr_pwl_x1 this->registerAddressList[16] = 0xb9; // //Address for register(s) amb_phase_corr_pwl_x2 }
您好 、Brent、
对于第二个问题, 错误代码如下所示:
C:\ti\MSPFlasher_1.3.20>.\MSP430Flasher.exe -w "C:\workspace\proj-OPT3101\OPT3101\software\sbac203b-OPT3101-SDK-v0.9.1\bac203b\release_0p9p1\OPT3101_SDK\Debug\OPT3101_SDK.txt" -v -e ERASE_MAIN * -----/|-------------------------------------------------------------------- * * / |__ * * /_ / MSP Flasher v1.3.20 * * | / * * -----|/-------------------------------------------------------------------- * * * Evaluating triggers...done * Checking for available FET debuggers: * Couldn't find any connected USB FETs! * Powering down...done * Disconnecting from device...done * * ---------------------------------------------------------------------------- * Driver : closed (MSP DebugStack not initialized) * ---------------------------------------------------------------------------- */ C:\ti\MSPFlasher_1.3.20>
TI 的官方 OPT3101EVM 评估板可在插入 PC。的 USB 端口时识别两个虚拟串行端口 COM4和 COM5、然后打开 Latte 软件、该软件还可以显示测量的波形、还可以正常修改配置。 但是、当我想使用 MSP430Flasher.exe 更新 EVM 时、PC 无法识别 USB FET。
您好、Cherry、
您是否能够从您提到的帖子中复制设置、然后查看您是否能够使其正常工作? 许多行被注释掉、因此我不清楚您正在运行什么、因为一些注释代码应该会运行。 (https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1071173/opt3101-using-dealias-mode)
您是否有可用于将固件刷写到并将其用作接口的 LaunchPad? 这就是 SDK 与 OPT3101连接的方式。
谢谢、
Brent Elliott
您好、Brent、
感谢您的回复!
我已经测试了两种打开或关闭评论的方法,但它们都工作异常(它们的工作日志相同)。 您能否举一个经销商初始化示例(无 HDR、在 HDR-H 通道中工作、连续读取)?
以下是我的测试日志:
1.在10MHz 时初始化:
void OPT3101::device::initialize(void){ // List of registers to initialize OPT3101 device after power-up this->reg.force_en_slave = 1; // //Since I2C Master bus is floating this register needs to be set to enable device to respond this->reg.tg_ovl_window_start = 7000; // //Overload flab observation window this->reg.en_temp_conv = 1; // //Enables the internal this->reg.clip_mode_fc = 0; // //Enables Clip mode for Frequency correction this->reg.clip_mode_temp = 0; // //Disables Clip mode for Temp coff phase correction this->reg.clip_mode_offset = 0; // //Disables Clip mode for phase offset correction this->reg.iq_read_data_sel = 3; // //Enables 16 bit frame counter this->reg.iamb_max_sel = 14; // 12=100uA, 14=200uA //Sets maximum ambient support this->reg.gpio1_obuf_en=1; // //Enabled output buffer on GPIO1 pin this->reg.gpo1_mux_sel=2; // //select dig_gpo_0 on gpio1 this->reg.dig_gpo_sel0 = 9; // //Select Data Ready on dig_gpo_0 this->reg.num_sub_frames = 63; // //Sub frames count this->reg.num_avg_sub_frames = 63; // //Average frames count this->reg.xtalk_filt_time_const = 4; // //Crosstalk filter time constant this->reg.tg_seq_int_start = 9850; // //Sequence Start this->reg.tg_seq_int_end = 9858; // //Sequence End this->reg.tg_seq_int_mask_start = 63; // //Same as AvgFrame Count this->reg.tg_seq_int_mask_end = 63; // //Same as AvgFrame Count this->reg.illum_dac_h_tx0 = 18; //20;//14; // //High Current settings: [173.6mA:5.6mA X 31], [078.4mA:5.6mA X 14], [067.2mA:5.6mA X 12] this->reg.illum_scale_h_tx0 = 0; // //Illum scale for H: 0=5.6mA, 1=4.2mA this->reg.sel_hdr_mode = 1; // //Selecting H Channel by default this->reg.tx_seq_reg = 2184; // //Setting TX Switching order this->reg.en_tx_switch = 0; // //Enable TX Switching order this->reg.tg_en = 1; // //Enables Timing Generator this->configurationFlags_xtalkFilterTau = 4; // //This is not a register but a settings flag for the SDK this->configurationFlags_monoshotMode = false; // //This is not a register but a settings flag for the SDK this->configurationFlags_xtalkSettlingOneTauInMilliSeconds = 256; // //This is not a register but a settings flag for the SDK this->configurationFlags_xtalkSettlingOneTauInDataReadyCounts = 16; // //This is not a register but a settings flag for the SDK this->configurationFlags_frameTimeInMilliSeconds = 16; // //This is not a register but a settings flag for the SDK this->configurationFlags_avgFrameCountExponentOfTwo = 6; // //This is not a register but a settings flag for the SDK }
10MHz 时的工作日志:
------------------------------- Starting Main Program Execution ------------------------------- INFO::Resetting Host INFO::Validating I2C Transaction INFO::I2C Transaction Successful INFO::Validating OPT3101 Design ID INFO::Design ID 0xc01000100411 Verified INFO::Resetting Host INFO::Writing Initialization sequence I2C registers INFO::Performing Internal Cross talk Measurement... INFO::Internal Cross talk Measurement Completed I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005659,-005627,0,-0005659,-0005627, 0000, 0000, +00, -128.0000, 26.8 INFO::Cover Photodiode with optical shied for illumination Cross talk measurement Press any Key to continue: INFO:Performing Illum Crosstalk for TX0 HDR 1 [DEBUG] measure xtalk h: commonScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 INFO:Writing Illum Cross talk for TX0 HDR 1 to Flash location 0x0010 INFO:Completed Illumination cross talk measurement for all channels INFO::Loading Illumination cross talk Set INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] before set xtalk: maxIllumXtalkScale=1, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] set xtalk: i_xreg_hdr1_tx0=-5709, q_xreg_hdr1_tx0=-24064, tmain_hdr1_tx0=2480 Set Target to distance [2100]mm Press any Key to continue: INFO:Performing Phase Offset for TX0 HDR 1 @ ref Distance 2100mm [DEBUG] before measure phase offset: refDistanceInCodes=9181, shiftIllumPhase=0 [DEBUG] measure phase offset: phaseOffset=9168 PhOfft,rfDCod,ilmScl,ilmDac, fqCnt 009168,009181, 0, 18, 16384, Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C), tIlum(C) 18349,00486, 0, 0,068, 2480, 0000, +54, -128.0000 INFO:Writing Phase Offset for TX0 HDR 1 to Flash location 0x0084 INFO::Loading Phase Offset Set INFO:Reading Phase Offset from TX0 HDR 1 to Flash location 0x0084 PhOfft,rfDCod,ilmScl,ilmDac, fqCnt 009168,009181, 0, 18, 16384, Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C), tIlum(C) 18349,00486, 0, 0,068, 2480, 0000, +54, -128.0000 INFO::Completed First Time bring up INFO::Resetting Host INFO::Performing Internal Cross talk Measurement... INFO::Internal Cross talk Measurement Completed I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -006126,-006013,0,-0006126,-0006013, 0000, 0000, +00, -128.0000, 27.9 INFO::Loading Illumination cross talk Set INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] before set xtalk: maxIllumXtalkScale=1, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] set xtalk: i_xreg_hdr1_tx0=-5709, q_xreg_hdr1_tx0=-24064, tmain_hdr1_tx0=2480 INFO::Loading Illumination crosstalk Temperature Coefficient Set INFO::Loading Illumination cross talk Set INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] before set xtalk: maxIllumXtalkScale=1, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] set xtalk: i_xreg_hdr1_tx0=-5709, q_xreg_hdr1_tx0=-24064, tmain_hdr1_tx0=2480 [DEBUG] magnitude[0][1] = 159.288243 [DEBUG] coffQReg[0][1] = -28 = 228 INFO::Loading Phase Offset Set INFO:Reading Phase Offset from TX0 HDR 1 to Flash location 0x0084 PhOfft,rfDCod,ilmScl,ilmDac, fqCnt 009168,009181, 0, 18, 16384, Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C), tIlum(C) 18349,00486, 0, 0,068, 2480, 0000, +54, -128.0000 INFO::Loading Phase Temperature coefficient Set INFO::Loading Phase Ambient Coefficient Set [DEBUG] xtalk calib data view: iphase_xtalk_reg_hdr0_tx0=0, qphase_xtalk_reg_hdr0_tx0=0, tmain_calib_hdr0_tx0=2048 [DEBUG] xtalk calib data view: iphase_xtalk_reg_hdr1_tx0=-5709, qphase_xtalk_reg_hdr1_tx0=-24064, tmain_calib_hdr1_tx0=2480 [DEBUG] phase offset data view: phase_offset_hdr0_tx0=0, tmain_calib_hdr0_tx0_offset=2048 [DEBUG] phase offset data view: en_phase_corr=1, en_temp_corr=1, phase_offset_hdr1_tx0=9168, tmain_calib_hdr1_tx0_offset=2480 [DEBUG] xtalk temp correct data view: en_temp_xtalk_corr=1, scale_temp_coeff_xtalk=4, temp_coeff_xtalk_iphase_hdr1_tx0=85, temp_coeff_xtalk_qphase_hdr1_tx0=228 [DEBUG] phase temp correct data view: en_phase_corr=1, temp_coeff_main_hdr1_tx0=1771 [DEBUG] phase amb correct data view: amb_x0=0, amb_x1=0, amb_x2=0, coeff0=0, coeff1=0, coeff2=0, coeff3=0, scale_coeff=7 |Distmm, Phase,Amplud,SigS,AmbS,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |002106,009211,000463, 0, 0, 1|--|068,0x06, +53,-128.0000|0000016/0010000|
3.在8.57MHz 上初始化:
void OPT3101::device::initialize(void){ // List of registers to initialize OPT3101 device after power-up this->reg.force_en_slave = 1; // //Since I2C Master bus is floating this register needs to be set to enable device to respond this->reg.tg_ovl_window_start = 7000; // //Overload flab observation window this->reg.en_temp_conv = 1; // //Enables the internal this->reg.clip_mode_fc = 0; // //Enables Clip mode for Frequency correction this->reg.clip_mode_temp = 0; // //Disables Clip mode for Temp coff phase correction this->reg.clip_mode_offset = 0; // //Disables Clip mode for phase offset correction this->reg.iq_read_data_sel = 3; // //Enables 16 bit frame counter this->reg.iamb_max_sel = 14; // 12=100uA, 14=200uA //Sets maximum ambient support this->reg.gpio1_obuf_en=1; // //Enabled output buffer on GPIO1 pin this->reg.gpo1_mux_sel=2; // //select dig_gpo_0 on gpio1 this->reg.dig_gpo_sel0 = 9; // //Select Data Ready on dig_gpo_0 this->reg.num_sub_frames = 63; // //Sub frames count this->reg.num_avg_sub_frames = 63; // //Average frames count this->reg.xtalk_filt_time_const = 4; // //Crosstalk filter time constant this->reg.tg_seq_int_start = 9850; // //Sequence Start this->reg.tg_seq_int_end = 9858; // //Sequence End this->reg.tg_seq_int_mask_start = 63; // //Same as AvgFrame Count this->reg.tg_seq_int_mask_end = 63; // //Same as AvgFrame Count this->reg.illum_dac_h_tx0 = 18; // //High Current settings: [173.6mA:5.6mA X 31], [078.4mA:5.6mA X 14], [067.2mA:5.6mA X 12] this->reg.illum_scale_h_tx0 = 0; // //Illum scale for H: 0=5.6mA, 1=4.2mA this->reg.sel_hdr_mode = 1; // //Selecting H Channel by default this->reg.tx_seq_reg = 2184; // //Setting TX Switching order this->reg.en_tx_switch = 0 ; // //Enable TX Switching order this->reg.override_clkgen_reg = 1; this->reg.dealias_en = 1; this->reg.en_multi_freq_phase = 1; this->reg.dealias_freq = 0; this->reg.ncr_config = 0; this->reg.sub_vd_clk_cnt = 11665; // uint16_t(9999*7/6.0); this->reg.tg_illumen_start = 0; // uint16_t(0*7/6.0); this->reg.tg_illumen_end = 9916; // uint16_t(8500*7/6.0); this->reg.tg_capture_start = 10850; // uint16_t(9300*7/6.0); this->reg.tg_capture_end = 11433; // uint16_t(9800*7/6.0); this->reg.tg_calc_start = 9916; // uint16_t(8500*7/6.0); this->reg.tg_calc_end = 11665; // uint16_t(9999*7/6.0); this->reg.capture_clk_cnt = 10033; // uint16_t(8600*7/6.0); this->reg.en_sequencer = 0; this->reg.en_processor_values = 0; this->reg.give_dealias_data = 0; this->reg.en_dealias_meas = 0; this->reg.tg_en = 1; // //Enables Timing Generator this->configurationFlags_xtalkFilterTau = 4; // //This is not a register but a settings flag for the SDK this->configurationFlags_monoshotMode = false; // //This is not a register but a settings flag for the SDK this->configurationFlags_xtalkSettlingOneTauInMilliSeconds = 256; // //This is not a register but a settings flag for the SDK this->configurationFlags_xtalkSettlingOneTauInDataReadyCounts = 16; // //This is not a register but a settings flag for the SDK this->configurationFlags_frameTimeInMilliSeconds = 16; // //This is not a register but a settings flag for the SDK this->configurationFlags_avgFrameCountExponentOfTwo = 6; // //This is not a register but a settings flag for the SDK }
8.57MHz 时的工作日志:
------------------------------- Starting Main Program Execution ------------------------------- INFO::Resetting Host INFO::Validating I2C Transaction INFO::I2C Transaction Successful INFO::Validating OPT3101 Design ID INFO::Design ID 0xc01000100411 Verified INFO::Resetting Host INFO::Writing Dealias Initialization sequence I2C registers INFO::Performing Internal Cross talk Measurement... INFO::Internal Cross talk Measurement Completed I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -008529,-003017,0,-0008529,-0003017, 0000, 0000, +00, -128.0000, 29.7 INFO::Cover Photodiode with optical shied for illumination Cross talk measurement Press any Key to continue: INFO:Performing Dealias Illum Crosstalk for TX0 HDR 1 [DEBUG] measure xtalk h: commonScale=0, xtalkScale=2, shiftIllumPhase=0, I=4527, Q=-18354, tmain=2480 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd +004527,-018354,2,+0018108,-0073416, 2480, 0000, +54, -128.0000,243.9 INFO:Writing Dealias Illum Cross talk for TX0 HDR 1 to Flash location 0x0148 INFO:Completed Dealias Illumination cross talk measurement for all channels INFO::Loading Dealias Illumination cross talk Set INFO:Reading Dealias Illum Cross talk from Flash location 0x0148 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd +004527,-018354,2,+0018108,-0073416, 2480, 0000, +54, -128.0000,243.9 [DEBUG] load dealias xtalk from flash: maxIllumXtalkScale=0, xtalkScale=2, shiftIllumPhase=0, I=4527, Q=-18354, tmain=2480 [DEBUG] before set xtalk: maxIllumXtalkScale=2, xtalkScale=2, shiftIllumPhase=0, I=4527, Q=-18354, tmain=2480 [DEBUG] set xtalk: i_xreg_hdr1_tx0=4527, q_xreg_hdr1_tx0=-18354, tmain_hdr1_tx0=2480 INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] load dealias xtalk from flash: i1=-5709.000000, q1=-24064.000000, i2=4527.000000, q2=-18354.000000, [DEBUG] load dealias xtalk from flash: dealias_alpha1=10.877155, dealias_beta1=5.590495 Set Target to distance [2100]mm Press any Key to continue: INFO:Performing Dealias Phase Offset for TX0 HDR 1 @ ref Distance 2100mm [DEBUG] before measure phase offset: refDistanceInCodes=9181, shiftIllumPhase=0 [DEBUG] measure phase offset: phaseOffset=7730 PhOfft,rfDCod,ilmScl,ilmDac, fqCnt 007730,009181, 0, 18, 16384, Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C), tIlum(C) 16911,00520, 0, 0,068, 2480, 0000, +54, -128.0000 INFO:Writing Dealias Phase Offset for TX0 HDR 1 to Flash location 0x01bc INFO::Loading Dealias Phase Offset Set INFO:Reading Dealias Phase Offset from TX0 HDR 1 to Flash location 0x01bc PhOfft,rfDCod,ilmScl,ilmDac, fqCnt 007730,009181, 0, 18, 16384, Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C), tIlum(C) 16911,00520, 0, 0,068, 2480, 0000, +54, -128.0000 INFO::Completed First Time Dealias bring up INFO::Resetting Host INFO::Performing Internal Cross talk Measurement... INFO::Internal Cross talk Measurement Completed I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd +003713,-006944,0,+0003713,-0006944, 0000, 0000, +00, -128.0000, 25.8 INFO::Loading Dealias Illumination cross talk Set INFO:Reading Dealias Illum Cross talk from Flash location 0x0148 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd +004527,-018354,2,+0018108,-0073416, 2480, 0000, +54, -128.0000,243.9 [DEBUG] load dealias xtalk from flash: maxIllumXtalkScale=0, xtalkScale=2, shiftIllumPhase=0, I=4527, Q=-18354, tmain=2480 [DEBUG] before set xtalk: maxIllumXtalkScale=2, xtalkScale=2, shiftIllumPhase=0, I=4527, Q=-18354, tmain=2480 [DEBUG] set xtalk: i_xreg_hdr1_tx0=4527, q_xreg_hdr1_tx0=-18354, tmain_hdr1_tx0=2480 INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] load dealias xtalk from flash: i1=-5709.000000, q1=-24064.000000, i2=4527.000000, q2=-18354.000000, [DEBUG] load dealias xtalk from flash: dealias_alpha1=10.877155, dealias_beta1=5.590495 INFO::Loading Dealias Illumination crosstalk Temperature Coefficient Set INFO::Loading Dealias Illumination cross talk Set INFO:Reading Dealias Illum Cross talk from Flash location 0x0148 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd +004527,-018354,2,+0018108,-0073416, 2480, 0000, +54, -128.0000,243.9 [DEBUG] load dealias xtalk from flash: maxIllumXtalkScale=0, xtalkScale=2, shiftIllumPhase=0, I=4527, Q=-18354, tmain=2480 [DEBUG] before set xtalk: maxIllumXtalkScale=2, xtalkScale=2, shiftIllumPhase=0, I=4527, Q=-18354, tmain=2480 [DEBUG] set xtalk: i_xreg_hdr1_tx0=4527, q_xreg_hdr1_tx0=-18354, tmain_hdr1_tx0=2480 INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] load dealias xtalk from flash: i1=-5709.000000, q1=-24064.000000, i2=4527.000000, q2=-18354.000000, [DEBUG] load dealias xtalk from flash: dealias_alpha1=10.877155, dealias_beta1=5.590495 [DEBUG] magnitude[0][1] = 243.924760 [DEBUG] coffQReg[0][1] = -21 = 235 INFO::Loading Dealias Phase Offset Set INFO:Reading Dealias Phase Offset from TX0 HDR 1 to Flash location 0x01bc PhOfft,rfDCod,ilmScl,ilmDac, fqCnt 007730,009181, 0, 18, 16384, Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C), tIlum(C) 16911,00520, 0, 0,068, 2480, 0000, +54, -128.0000 INFO::Loading Phase Temperature coefficient Set INFO::Loading Phase Ambient Coefficient Set [DEBUG] xtalk calib data view: iphase_xtalk_reg_hdr0_tx0=0, qphase_xtalk_reg_hdr0_tx0=0, tmain_calib_hdr0_tx0=2048 [DEBUG] xtalk calib data view: iphase_xtalk_reg_hdr1_tx0=4527, qphase_xtalk_reg_hdr1_tx0=-18354, tmain_calib_hdr1_tx0=2480 [DEBUG] phase offset data view: phase_offset_hdr0_tx0=0, tmain_calib_hdr0_tx0_offset=2048 [DEBUG] phase offset data view: en_phase_corr=1, en_temp_corr=1, phase_offset_hdr1_tx0=7730, tmain_calib_hdr1_tx0_offset=2480 [DEBUG] xtalk temp correct data view: en_temp_xtalk_corr=1, scale_temp_coeff_xtalk=3, temp_coeff_xtalk_iphase_hdr1_tx0=65, temp_coeff_xtalk_qphase_hdr1_tx0=235 [DEBUG] phase temp correct data view: en_phase_corr=1, temp_coeff_main_hdr1_tx0=1771 [DEBUG] phase amb correct data view: amb_x0=0, amb_x1=0, amb_x2=0, coeff0=0, coeff1=0, coeff2=0, coeff3=0, scale_coeff=7 |Distmm, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |002094,009159,000516, 0, 0, 0, 1|--|068,0x0f, +53,-128.0000|0000000/0010000| |002038,008915,000511, 0, 0, 0, 1|--|068,0x1c, +53,-128.0000|0000001/0010000| |002094,009159,000505, 0, 0, 0, 1|--|068,0x0a, +53,-128.0000|0000002/0010000| |002084,009112,000512, 0, 0, 0, 1|--|068,0x18, +53,-128.0000|0000003/0010000| |002073,009066,000508, 0, 0, 0, 1|--|068,0x05, +53,-128.0000|0000004/0010000| |002093,009155,000510, 0, 0, 0, 1|--|068,0x13, +53,-128.0000|0000005/0010000| |002087,009125,000510, 0, 0, 0, 1|--|068,0x00, +53,-128.0000|0000006/0010000| |002073,009066,000509, 0, 0, 0, 1|--|068,0x0e, +53,-128.0000|0000007/0010000|
5.经销商模式初始化:
void OPT3101::device::initialize(void){ // List of registers to initialize OPT3101 device after power-up this->reg.force_en_slave = 1; // //Since I2C Master bus is floating this register needs to be set to enable device to respond this->reg.tg_ovl_window_start = 7000; // //Overload flab observation window this->reg.en_temp_conv = 1; // //Enables the internal this->reg.clip_mode_fc = 0; // //Enables Clip mode for Frequency correction this->reg.clip_mode_temp = 0; // //Disables Clip mode for Temp coff phase correction this->reg.clip_mode_offset = 0; // //Disables Clip mode for phase offset correction this->reg.iq_read_data_sel = 3; // //Enables 16 bit frame counter this->reg.iamb_max_sel = 14; // 12=100uA, 14=200uA //Sets maximum ambient support this->reg.gpio1_obuf_en=1; // //Enabled output buffer on GPIO1 pin this->reg.gpo1_mux_sel=2; // //select dig_gpo_0 on gpio1 this->reg.dig_gpo_sel0 = 9; // //Select Data Ready on dig_gpo_0 //this->reg.gpio2_obuf_en = 0; //this->reg.gpio2_ibuf_en = 1; //this->reg.en_tx1_on_tx0 = 1; //this->reg.en_tx2_on_tx0 = 0; this->reg.num_sub_frames = 63; // //Sub frames count this->reg.num_avg_sub_frames = 63; // //Average frames count this->reg.xtalk_filt_time_const = 4; // //Crosstalk filter time constant this->reg.tg_seq_int_start = 9850; // //Sequence Start this->reg.tg_seq_int_end = 9858; // //Sequence End this->reg.tg_seq_int_mask_start = 63; // //Same as AvgFrame Count this->reg.tg_seq_int_mask_end = 63; // //Same as AvgFrame Count this->reg.illum_dac_h_tx0 = 18; // //High Current settings: [173.6mA:5.6mA X 31], [078.4mA:5.6mA X 14], [067.2mA:5.6mA X 12] this->reg.illum_scale_h_tx0 = 0; // //Illum scale for H: 0=5.6mA, 1=4.2mA this->reg.sel_hdr_mode = 1; // //Selecting H Channel by default this->reg.tx_seq_reg = 2184; // //Setting TX Switching order this->reg.en_tx_switch = 0; // //Enable TX Switching order this->reg.override_clkgen_reg = 1; this->reg.dealias_en = 1; this->reg.en_multi_freq_phase = 1; this->reg.dealias_freq = 0; this->reg.ncr_config = 0; this->reg.sub_vd_clk_cnt = 11665; // uint16_t(9999*7/6.0); this->reg.tg_illumen_start = 0; // uint16_t(0*7/6.0); this->reg.tg_illumen_end = 9916; // uint16_t(8500*7/6.0); this->reg.tg_capture_start = 10850; // uint16_t(9300*7/6.0); this->reg.tg_capture_end = 11433; // uint16_t(9800*7/6.0); this->reg.tg_calc_start = 9916; // uint16_t(8500*7/6.0); this->reg.tg_calc_end = 11665; // uint16_t(9999*7/6.0); this->reg.capture_clk_cnt = 10033; // uint16_t(8600*7/6.0); this->reg.override_clkgen_reg = 1; this->reg.dealias_en = 1; this->reg.en_multi_freq_phase = 1; this->reg.dealias_freq = 0; this->reg.command0 = 0x100; // Set to fo = 10MHz this->reg.command1 = 0x102; // Set to fo to de-alias frequency this->reg.command2 = 0x400; // Go to Command0 this->reg.ncr_config = 0; this->reg.give_dealias_data = 1; this->reg.en_sequencer = 1; this->reg.en_processor_values = 1; this->reg.en_dealias_meas = 1; this->reg.tg_en = 1; // //Enables Timing Generator this->configurationFlags_xtalkFilterTau = 4; // //This is not a register but a settings flag for the SDK this->configurationFlags_monoshotMode = false; // //This is not a register but a settings flag for the SDK this->configurationFlags_xtalkSettlingOneTauInMilliSeconds = 256; // //This is not a register but a settings flag for the SDK this->configurationFlags_xtalkSettlingOneTauInDataReadyCounts = 16; // //This is not a register but a settings flag for the SDK this->configurationFlags_frameTimeInMilliSeconds = 16; // //This is not a register but a settings flag for the SDK this->configurationFlags_avgFrameCountExponentOfTwo = 6; // //This is not a register but a settings flag for the SDK }
6.交易模式下的工作日志:
------------------------------- Starting Main Program Execution ------------------------------- INFO::Resetting Host INFO::Validating I2C Transaction INFO::I2C Transaction Successful INFO::Validating OPT3101 Design ID INFO::Design ID 0xc01000100411 Verified INFO::Resetting Host INFO::Performing Internal Cross talk Measurement... INFO::Internal Cross talk Measurement Completed I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd +003639,-006328,0,+0003639,-0006328, 0000, 0000, +00, -128.0000, 24.3 INFO::Loading Illumination cross talk Set INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] before set xtalk: maxIllumXtalkScale=1, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] set xtalk: i_xreg_hdr1_tx0=-5709, q_xreg_hdr1_tx0=-24064, tmain_hdr1_tx0=2480 INFO::Loading Illumination crosstalk Temperature Coefficient Set INFO::Loading Illumination cross talk Set INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] before set xtalk: maxIllumXtalkScale=1, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] set xtalk: i_xreg_hdr1_tx0=-5709, q_xreg_hdr1_tx0=-24064, tmain_hdr1_tx0=2480 [DEBUG] magnitude[0][1] = 159.288243 [DEBUG] coffQReg[0][1] = -28 = 228 INFO::Loading Phase Offset Set INFO:Reading Phase Offset from TX0 HDR 1 to Flash location 0x0084 PhOfft,rfDCod,ilmScl,ilmDac, fqCnt 009168,009181, 0, 18, 16384, Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C), tIlum(C) 18349,00486, 0, 0,068, 2480, 0000, +54, -128.0000 INFO::Loading Phase Temperature coefficient Set INFO::Loading Phase Ambient Coefficient Set INFO::Loading Dealias Illumination cross talk Set INFO:Reading Dealias Illum Cross talk from Flash location 0x0148 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd +004527,-018354,2,+0018108,-0073416, 2480, 0000, +54, -128.0000,243.9 [DEBUG] load dealias xtalk from flash: maxIllumXtalkScale=0, xtalkScale=2, shiftIllumPhase=0, I=4527, Q=-18354, tmain=2480 INFO:Reading Illum Cross talk from Flash location 0x0010 I, Q,S, ScaledI, ScaledQ,tMain,tIlum,tMain(C), tIlum(C),Magnitd -005709,-024064,1,-0011418,-0048128, 2480, 0000, +54, -128.0000,159.3 [DEBUG] load xtalk from flash: maxIllumXtalkScale=0, xtalkScale=1, shiftIllumPhase=0, I=-5709, Q=-24064, tmain=2480 [DEBUG] load dealias xtalk from flash: i1=-5709.000000, q1=-24064.000000, i2=4527.000000, q2=-18354.000000, [DEBUG] load dealias xtalk from flash: dealias_alpha1=10.877155, dealias_beta1=5.590495 INFO::Loading Dealias Phase Offset Set INFO:Reading Dealias Phase Offset from TX0 HDR 1 to Flash location 0x01bc PhOfft,rfDCod,ilmScl,ilmDac, fqCnt 007730,009181, 0, 18, 16384, Phase,Amplt,SigOl,AmbOl,Amb,tMain,tIlum,tMain(C), tIlum(C) 16911,00520, 0, 0,068, 2480, 0000, +54, -128.0000 [DEBUG] xtalk calib data view: iphase_xtalk_reg_hdr0_tx0=0, qphase_xtalk_reg_hdr0_tx0=0, tmain_calib_hdr0_tx0=2048 [DEBUG] xtalk calib data view: iphase_xtalk_reg_hdr1_tx0=-5709, qphase_xtalk_reg_hdr1_tx0=-24064, tmain_calib_hdr1_tx0=2480 [DEBUG] phase offset data view: phase_offset_hdr0_tx0=0, tmain_calib_hdr0_tx0_offset=2048 [DEBUG] phase offset data view: en_phase_corr=1, en_temp_corr=1, phase_offset_hdr1_tx0=9168, tmain_calib_hdr1_tx0_offset=2480 [DEBUG] xtalk temp correct data view: en_temp_xtalk_corr=1, scale_temp_coeff_xtalk=4, temp_coeff_xtalk_iphase_hdr1_tx0=85, temp_coeff_xtalk_qphase_hdr1_tx0=228 [DEBUG] phase temp correct data view: en_phase_corr=1, temp_coeff_main_hdr1_tx0=1771 [DEBUG] phase amb correct data view: amb_x0=0, amb_x1=0, amb_x2=0, coeff0=0, coeff1=0, coeff2=0, coeff3=0, scale_coeff=7 [DEBUG] dealias data view: alpha0_scale=16, beta0_scale=0, alpha1_scale=10, beta1_scale=5, phase2_of_h0_t0=0, phase2_of_h1_t0=7730 |Distmm, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |009349,040878,000059, 0, 0, 0, 0|--|068,0x14, +43,-128.0000|0008728/0010000|
第二个问题是 、我没有 Launchpad、我只有 OPT3101 EVM 板。 我没有看到文档说需要额外的 Launchpad 或燃烧器。我认为 OPT3101 EVM 板可以 通过 USB 接口直接通过 PC 烧坏。因为 在 OPT3101 EVM 板上找不到烧坏的引脚。
您好、Cherry、
我没有为每种类型的去混叠初始化提供任何示例、因为去混叠模式不在 SDK 中介绍。 您能澄清一下您发送的代码吗? 第6个问题是"在经销商模式下工作日志"、您是否能够使该模式工作、或者您是否仍然只能看到10MHz? 此外、您是否对最初发布的初始化代码进行了任何更改? 它是否产生了影响?
OPT3101EVM 不需要 LaunchPad 即可与 EVM 软件配合使用、但要与 SDK 配合使用、则需要 LaunchPad。 SDK 用户指南中提到了这一点。
谢谢、
Brent Elliott
您好 、Brent、
您能告诉我哪些寄存器需要打开和关闭才能启用混叠模式吗? 还是主初始化过程? 这个问题对我们来说非常紧迫。 我们真的需要您的帮助!
我在 SDK 中使用了"INLAB_STEP_1"来校准,μ s、并使用"testing_live_view"来观察数据输出。 我只更改了"void OPT3101::device::initialize (void)"和8.57MHz 校准参数 Saving (and loading)的函数。 我在(__LW_AT__10MHz 或8.57MHz)下打印校准数据结果、并将其保存到闪存的不同位置。 在每次使用寄存器数据之前、我都会打印寄存器的数据、以确定数据是否正确写入。
在第6号"经销商模式下的工作日志"中 、我无法 使该模式工作、 我仍然只能看到10MHz、 并且光电二极管几乎没有电流输出。
第二个问题 是 OPT3101EVM 上的 MSP430F5503IRGZ 不是 LaunchPad、我需要购买额外的 MSP430F5519 Launchpad 才能使用 SDK?
您好、Cherry、
1) 1)您是否能够使用 SDK 运行标准校准而不会出现任何问题? 您遇到的问题到底是什么? 我无法从日志中得知问题是什么。 您是否能够在10MHz 和8.57MHz 之间切换并确认示波器设置是否正确?
2) 2)可以使用 python 固件更新程序在以下位置刷写 EVM: https://www.ti.com/tool/MSP430USBDEVPACK
注意事项:
如果您想返回将 EVM 用作常规 EVM、则 EVM 校准将被归零、固件消失、从而使 EVM 无法正常工作
SDK 工具模式适用于 Launchpad、这是使用即插即用启动 SDK 的最简单方法。 所有其他配置将要求您检查 SDK 引脚映射是否与您为其编译的 MSP430相匹配。
最棒的
Alex
您好 、Brent、
1) 1)我可以使用 SDK 运行标准校准而不会出现任何问题、并且 可以单独在10MHz 或8MHz 下进行正常校准("1. 以10MHz 初始化"或"3. 以8.57MHz"的上述内容进行初始化)。 它们可以测量超过15m 的距离(超过15m 的数据错误)、并且示波器中的激励波形正常(10MHz 或8.57MHz)。 但是、当我初始化序列发生器设置以启用去混叠测量("5. 代理模式初始化")、 则该仿真器无法在 10MHz 和8.57MHz 之间切换。 几乎没有来自电流斜接器的电流输出、 使用示波器测量的电斜接器的脉冲频率始终为10MHz。 但是、软件可以读取到 MOD_FREQ 寄存器的值 在0和1之间交替变化。
2) 2) OPT3101 EVM 的升级问题已经得到了很好的解决。 非常感谢!
您好、Cherry、
在 dealias 模式初始化中、您的设置与 e2e 帖子不匹配。 差异的原因是什么?
defAliasFreq 1 overrid_clkgen_reg 0 dealias_en 1 en_multi_freq_phase 1 en_dealias_meas 0 NCR_CONFIG 0 sub_VD_clk_cnt 11665 TG_culme_start 0 TG_calmen_end 9916 TG_CAPTURE_START 10850_CAPTURE_END 11433 TG_ctrab_end 11433 TG_c_ctrab_ce_cl65_ctrab_ctrl_cl_cl_cl65_cltG_ctrab_clt 1 tg
最棒的
Alex
您好、Brent、
我发现了电流密特没有 电流的原因(原因是经销商的寄存器配置不正确)。 根据您提供的配置、将有一个正常的混叠频率输出。但是、当距离超过15m 时、根据相位计算的距离数据仍然错误、 根据"OPT3101–去混叠以扩展距离范围"第 3章"输出"、使用计算公式 LEAD_DEALIAS_DATA=1还是 LEAD_DEALIAS_DATA=0。 寄存 器(alpha_dealias_scale、beta1_dealias_scale、Phase2_offset_hdr1_tx0、Phase2_offset_hdr1_tx0)已经过配置、可以确保在 dealias 模式下阴影的幅度在50以内。
我有以下问题:
我们 使用了8.57MHz 频率。 根据数据表、" override_clkgen_reg = 0;"不应该像" override_clkgen_reg = 1;"? 但是、根据后一种配置、该模块不能正常工作。
DEALIAS_FREQ: Select modulation frequency when DEALIAS_EN = 1. This register works only when OVERRIDE_CLKGEN_REG = 1. 0: 10 × (6 / 7) MHz | 1: 10 × (6 / 5) MHz DEALIAS_EN: Change the modulation frequency. This register works only when OVERRIDE_CLKGEN_REG = 1. NCR_CONFIG: Select second frequency for de-alias operation. 0: 10 × (6 / 7) MHz | 1: 10 × (6 / 5) MHz.
2. 必须为 dealias 模式启用频率校正?、因为我在数据表中看到以下内容:
PHASE_OVER_FLOW: PHASE_OUT overflow bit during frequency correction. 0: No overflow | 1: overflow. PHASE_OVER_FLOW_F2: Phase overflow of second modulation frequency used for de-alias operation during frequency correction. 0: No overflow | 1: overflow.
PHASE_OVER 和 PHASE_OVER 和 FLOG_F2的寄存器数据根据 "OPT3101–去混叠以扩展距离范围"第 3章"输出"在距离计算公式中使用。
您能否提供包含所有必要寄存器配置的经销商模式初始化示例? 我不确定其他寄存器是否会影响经销商模式。
3. 我发现在经销商模式下、当距离超过15米时、PHASE_OVER 和 PHASE_OVER 和 FLOG_F2寄存器不会改变。 这是正常的?寄存器(CLIP_MODE_FC、CLIP_MODE_TEMP、CLIP_MODE_OFFSET)需要在哪种模式下工作? 滚动模式还是削波模式?
补充问题:
4. 是否需要分别计算不同频率下的距离计算公式?
// ======GIVE_DEALIAS_DATA='1'====== if (host.mod_freq) { // 1=8.75MHz host.printf("|%06u,",((this->data[c1].phase*17490)>>16) * 64 / 6); } else { // 0=10MHz host.printf("|%06u,",((this->data[c1].phase*14989)>>16) * 64 / 6); } host.printf("=%06u,",host.dealias_bin); host.printf("=%06u,",host.freq_count_read_reg); host.printf("=%02u,",this->data[c1].phaseovl); host.printf("=%02u,",this->data[c1].phaseovlf2); // ======GIVE_DEALIAS_DATA='0'====== float dist_mm = 0; //dist_mm = (float)host.dealias_bin * 65536 * (float)host.freq_count_read_reg / 16384 + (float)this->data[c1].phaseovl * 65536 + (float)this->data[c1].phase; dist_mm = host.dealias_bin * host.freq_count_read_reg * 4 + this->data[c1].phaseovl * 65536 + this->data[c1].phase; if (host.mod_freq == 1) { // 1=8.75MHz //dist_mm = dist_mm * 299792458 / (2 * 8570 * 65536); // in mm dist_mm = dist_mm * 0.26688855f; } else if (host.mod_freq == 0) { // 0=10MHz // in meter //dist_mm = dist_mm * 299792458 / (2 * 10000 * 65536); // in mm dist_mm = dist_mm * 0.22872349f; } host.printf("%06u,",(uint32_t)dist_mm); host.printf("=%06u,",host.dealias_bin); host.printf("=%06u,",host.freq_count_read_reg); host.printf("=%02u,",this->data[c1].phaseovl); host.printf("=%02u,",this->data[c1].phaseovlf2);
谢谢。
樱桃林
补充日志:
// ================== give_dealias_data = 1 ================== // 22m, distance okay at 10MHz, distance error at 8.57MHz, |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |021312, =000001, =016384, =00, =00,008736,000139, 0, 0, 0, 1|--|068,0x05, +60,-128.0000|0000531/0010000| |003822, =000001, =016384, =00, =00,014323,000201, 0, 0, 1, 1|--|068,0x16, +60,-128.0000|0000532/0010000| |021312, =000001, =016384, =00, =00,008737,000142, 0, 0, 0, 1|--|068,0x07, +60,-128.0000|0000533/0010000| |021248, =000001, =016384, =00, =00,008713,000138, 0, 0, 0, 1|--|068,0x17, +60,-128.0000|0000534/0010000| |003858, =000001, =016384, =00, =00,014459,000204, 0, 0, 1, 1|--|068,0x08, +60,-128.0000|0000535/0010000| |021418, =000001, =016384, =00, =00,008780,000146, 0, 0, 0, 1|--|068,0x19, +60,-128.0000|0000536/0010000| // ================== give_dealias_data = 0 ================== // 13m, distance okay |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |014229,=000000,=016384,=00,=00,053315,000245, 0, 0, 1, 1|--|069,0x10, +59,-128.0000|0000353/0010000| |013259,=000000,=016384,=00,=00,057971,000334, 0, 0, 0, 1|--|068,0x01, +60,-128.0000|0000354/0010000| |014272,=000000,=016384,=00,=00,053478,000237, 0, 0, 1, 1|--|069,0x12, +60,-128.0000|0000355/0010000| |013222,=000000,=016384,=00,=00,057812,000333, 0, 0, 0, 1|--|068,0x03, +59,-128.0000|0000356/0010000| |014220,=000000,=016384,=00,=00,053282,000250, 0, 0, 1, 1|--|069,0x14, +59,-128.0000|0000357/0010000| |013249,=000000,=016384,=00,=00,057930,000336, 0, 0, 0, 1|--|068,0x05, +59,-128.0000|0000358/0010000| //15m, distance error |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |015386,=000000,=016384,=00,=00,057650,000203, 0, 0, 1, 1|--|068,0x06, +60,-128.0000|0002100/0010000| |089080,=000005,=016384,=00,=00,061788,000217, 0, 0, 0, 1|--|068,0x17, +60,-128.0000|0002101/0010000| |014206,=000000,=016384,=00,=00,062111,000221, 0, 0, 0, 1|--|068,0x0f, +60,-128.0000|0002103/0010000| |015411,=000000,=016384,=00,=00,057745,000213, 0, 0, 1, 1|--|068,0x00, +60,-128.0000|0002104/0010000| |015472,=000000,=016384,=00,=00,057973,000205, 0, 0, 1, 1|--|068,0x18, +60,-128.0000|0002106/0010000| |014247,=000000,=016384,=00,=00,062291,000220, 0, 0, 0, 1|--|068,0x09, +60,-128.0000|0002107/0010000| |089220,=000005,=016384,=00,=00,062402,000225, 0, 0, 0, 1|--|068,0x01, +60,-128.0000|0002109/0010000| |015498,=000000,=016384,=00,=00,058072,000239, 0, 0, 1, 1|--|068,0x12, +60,-128.0000|0002110/0010000| |015732,=000000,=016384,=00,=00,058947,000250, 0, 0, 1, 1|--|068,0x1c, +60,-128.0000|0002118/0010000| |014698,=000000,=016384,=00,=00,064264,000250, 0, 0, 0, 1|--|068,0x0d, +60,-128.0000|0002119/0010000| |015902,=000000,=016384,=00,=00,059586,000230, 0, 0, 1, 1|--|068,0x1e, +60,-128.0000|0002120/0010000| |103400,=000005,=016384,=00,=00,059749,000189, 0, 0, 1, 1|--|068,0x0e, +60,-128.0000|0002121/0010000| |014741,=000000,=016384,=00,=00,064453,000210, 0, 0, 0, 1|--|068,0x1f, +60,-128.0000|0002122/0010000| |015956,=000000,=016384,=00,=00,059786,000189, 0, 0, 1, 1|--|068,0x10, +60,-128.0000|0002123/0010000| |014823,=000000,=016384,=00,=00,064808,000208, 0, 0, 0, 1|--|068,0x01, +60,-128.0000|0002124/0010000| |016000,=000000,=016384,=00,=00,059951,000202, 0, 0, 1, 1|--|068,0x12, +60,-128.0000|0002125/0010000| |089739,=000005,=016384,=00,=00,064668,000216, 0, 0, 0, 1|--|068,0x03, +60,-128.0000|0002126/0010000| |015135,=000001,=016384,=00,=00,000639,000059, 0, 0, 0, 1|--|068,0x03, +61,-128.0000|0002219/0010000| |089061,=000005,=016384,=00,=00,006023,000068, 0, 0, 1, 1|--|068,0x14, +61,-128.0000|0002220/0010000| |089962,=000006,=016384,=00,=00,000108,000024, 0, 0, 0, 1|--|068,0x05, +61,-128.0000|0002221/0010000| |018530,=000001,=016384,=00,=00,003896,000097, 0, 0, 1, 1|--|068,0x16, +61,-128.0000|0002222/0010000| |016351,=000001,=016384,=00,=00,005954,000219, 0, 0, 0, 1|--|068,0x07, +61,-128.0000|0002223/0010000| // 17m, distance okay |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |017536,=000001,=016384,=00,=00,011134,000188, 0, 0, 0, 1|--|068,0x13, +61,-128.0000|0002237/0010000| |017726,=000001,=016384,=00,=00,011967,000193, 0, 0, 0, 1|--|068,0x0b, +61,-128.0000|0002239/0010000| |018759,=000001,=016384,=00,=00,004755,000239, 0, 0, 1, 1|--|068,0x1c, +61,-128.0000|0002240/0010000| |018841,=000001,=016384,=00,=00,016842,000036, 0, 0, 0, 1|--|068,0x0d, +61,-128.0000|0002241/0010000| // 21m, distance okay |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |021509,=000001,=016384,=00,=00,028506,000189, 0, 0, 0, 1|--|068,0x01, +61,-128.0000|0002305/0010000| |021635,=000001,=016384,=00,=00,015528,000610, 0, 0, 1, 1|--|068,0x12, +61,-128.0000|0002306/0010000| |021922,=000001,=016384,=00,=00,030313,000163, 0, 0, 0, 1|--|068,0x03, +61,-128.0000|0002307/0010000| |021814,=000001,=016384,=00,=00,016202,000173, 0, 0, 1, 1|--|068,0x14, +61,-128.0000|0002308/0010000| // 30m, distance okay |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |028898,=000001,=016384,=00,=00,060809,000071, 0, 0, 0, 1|--|068,0x17, +60,-128.0000|0002363/0010000| |029206,=000001,=016384,=00,=00,062159,000080, 0, 0, 0, 1|--|068,0x07, +60,-128.0000|0002364/0010000| |029506,=000001,=016384,=00,=00,045023,000029, 0, 0, 1, 1|--|068,0x18, +60,-128.0000|0002365/0010000| |028798,=000001,=016384,=00,=00,060375,000058, 0, 0, 0, 1|--|068,0x09, +60,-128.0000|0002366/0010000| // 31m, distance error |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |003062,=000000,=016384,=00,=00,013389,000959, 0, 0, 0, 0|--|068,0x13, +60,-128.0000|0002441/0010000| |003067,=000000,=016384,=00,=00,011492,000830, 0, 0, 1, 0|--|068,0x04, +59,-128.0000|0002442/0010000| |003125,=000000,=016384,=00,=00,013667,000914, 0, 0, 0, 0|--|068,0x15, +59,-128.0000|0002443/0010000| |003067,=000000,=016384,=00,=00,011494,000847, 0, 0, 1, 0|--|068,0x06, +59,-128.0000|0002444/0010000| |003021,=000000,=016384,=00,=00,013211,000996, 0, 0, 0, 0|--|068,0x17, +59,-128.0000|0002445/0010000| // 35m, distance error |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |033734,=000001,=016384,=00,=00,060864,000023, 0, 0, 1, 1|--|068,0x10, +61,-128.0000|0002537/0010000| |033135,=000001,=016384,=00,=00,058617,000031, 0, 0, 1, 1|--|068,0x00, +61,-128.0000|0002538/0010000| |015397,=000001,=016384,=00,=00,001783,000049, 0, 0, 0, 1|--|068,0x11, +61,-128.0000|0002539/0010000| |033345,=000001,=016384,=00,=00,059405,000035, 0, 0, 1, 1|--|068,0x02, +61,-128.0000|0002540/0010000| |015116,=000001,=016384,=00,=00,000555,000045, 0, 0, 0, 1|--|068,0x13, +61,-128.0000|0002541/0010000| // 36m, distance error |Distmm,=dealias_bin,=freq_count_read_reg,=phaseovl,=phaseovlf2, Phase,Amplud,SigS,AmbS,ModFreq,HDR|--|Amb,Cntr,Tmain,Tillum | Count/Total | |003283,=000000,=016384,=00,=00,012302,000462, 0, 0, 1, 0|--|068,0x00, +55,-128.0000|0002790/0010000| |003452,=000000,=016384,=00,=00,015093,000571, 0, 0, 0, 0|--|068,0x11, +55,-128.0000|0002791/0010000| |003297,=000000,=016384,=00,=00,012354,000445, 0, 0, 1, 0|--|068,0x02, +55,-128.0000|0002792/0010000| |003429,=000000,=016384,=00,=00,014996,000581, 0, 0, 0, 0|--|068,0x13, +55,-128.0000|0002793/0010000| |003319,=000000,=016384,=00,=00,012438,000466, 0, 0, 1, 0|--|068,0x04, +55,-128.0000|0002794/0010000|
谢谢。
樱桃林
您好、Brent、
我确信它完全根据您的配置进行设置。
我发现:
当"out_dealias _data = 1"时、 在10MHz 和8.57MHz 时、在同一距离下、PHASE_OUT 寄存器具有不同的相位值。
当"out_dealias_data = 0"时、 AFE 输出值 "dealias_bin"接近15~17m 和30~34m 是错误的。 在该范围之外是正常的。
谢谢。
樱桃林
您好、Cherry、
是否将 LEAD_DEALIAS_DATA 设置为1? 如果是这样、芯片将自动直接提供组合相位、因此您不需要该二进制文件。 如果您希望使用片外器件、则需要该 bin 值。
关于您的问题-此处的图4可能有助于说明这一点: https://www.ti.com/lit/an/sbaa303/sbaa303.pdf
您可以看到、10MHz 和交替频率测量仅对齐1个经销商库。 使用两个频率测量值确定正确的经销商库
最棒的
Alex