Hello Experts
So I am wondering about the SDK (3.5.0.4) and industrial toolbox (4.5.0) code that you provide and its compatibility with the IWR6843AOPEVM in terms of the LDO Bypass option of the chip.
On the IWR6843AOPEVM the VIN_RFx is 1.0V and the Vout_PA voltage is shorted to the VIN_RF2 via ferrite bead.
So according to documentation and also in my opinion, the LDO bypass option should be enabled and the PA LDO input should be disabled, i.e. rlRfLdoBypassCfg_t.ldoBypassEnable set to 3. That is bit 0 set to 1 such that the RF LDO bypass is enabled (to be set when 1.0V RF supply is provided) and bit 1 set to 1 (PA LDO input disabled, to be used when VIN_RF is shorted to VOUT_PA) - (see definition and comments of rlRfLdoBypassCfg in mmwave_sdk_xx\packages\ti\control\mmwavelink\include\rl_sensor.h) defined here:
/*! \brief * Radar RF LDO bypass enable/disable configuration */ typedef struct rlRfLdoBypassCfg { /** * @brief Enable LDO bypass \n [b0] 1: RF LDO bypassed, Should be used only when 1.0V RF supply is provided 0: RF LDO not bypassed(default), Should be used only when 1.3V RF supply is provided \n [b1] 0: PA LDO input is enabled\n 1: PA LDO input is disabled (3 TX use case). (To be used only when VIN_RF2 is shorted to VOUT_PA on board and VIN_RF2 is 1.0V) \n [b15:2] Reserved \n usecase LDO bypass PA LDO disable \n 1.3V RF supply 1 and 1.3V RF supply 2 0 0 1.0V RF supply 1 and 1.0V RF supply 2 1 0 1.0V RF supply 1 and 1.0V RF supply 2 1 1 and RF supply 1 shorted to Vout PA */ rlUInt16_t ldoBypassEnable; #ifndef MMWL_BIG_ENDIAN /** * @brief IR drop is the voltage drop from the PMIC output to the device pin. The user should program the voltage drop in percentage units which will be used for measuring the external supplies. \n Value Description \n 0 IR drop of 0% \n 1 IR drop of 3% \n 2 IR drop of 6% \n 3 IR drop of 9% \n */ rlUInt8_t supplyMonIrDrop; /** * @brief IO supply indicator. This is used to indicate the IO supply to the MMIC device * for setting the correct voltage monitor thresholds * Value Description \n * 0 3.3 V IO supply \n * 1 1.8 V IO supply \n */ rlUInt8_t ioSupplyIndicator; // etc... }rlRfLdoBypassCfg_t;
Now, in all code examples provided, including the out of box demo to be used with the IWR6843AOPEVM (mmwave_sdk_xxx\packages\ti\demo\xwr68xx\mmw\ and mmwave_industrial_toolbox_yyy\labs) usually in the mss_main.c file there is a section:
rlRfLdoBypassCfg_t gRFLdoBypassCfg = { .ldoBypassEnable = 0, /* 1.0V RF supply 1 and 1.0V RF supply 2 */ .supplyMonIrDrop = 0, /* IR drop of 3% */ .ioSupplyIndicator = 0, /* 3.3 V IO supply */ };
Now the comments on this seem to be wrong:
- supplyMonIrDrop = 0 would mean monitor is allowing 0% of IR drop, contrary to the comment which states 3%
- ldoBypassEnable = 0 would mean rf ldo is not bypassed and pa ldo is enabled, contrary to the code comment and contrary to the hardware schematic of the board to run the code on (IWR6843AOPEVM)
Shouldn't this be:
rlRfLdoBypassCfg_t gRFLdoBypassCfg = { .ldoBypassEnable = 3, /* 1.0V RF supply 1 and 1.0V RF supply 2 */ .supplyMonIrDrop = 1, /* IR drop of 3% */ .ioSupplyIndicator = 0, /* 3.3 V IO supply */ };
So I am confused in several ways:
- why does the code run on the IWR6843AOPEVM even though it is likely wrong?
- what are the correct values to set for my board (we have the same supply structure as the IWR6843AOPEVM) for best performance
- which comments are correct in the code, the ones in the example projects or the one in the mmwavelink API?
- Plus: what are the default values on startup and why do not all lab projects have the ldo set up in their code? (example: industrial toolbox\labs\people_counting\overhead_3d_people_counting does not set the LDOBypass, while int the same lab people_counting\68xx_3D_people_counting\ does set the ldo [but apparently wrongly]=?