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.

IWR6843AOPEVM: Enable TX Beamforming on AOP

Part Number: IWR6843AOPEVM
Other Parts Discussed in Thread: IWR6843AOP, IWR6843ISK

I am trying to implement TX Beamforming on the IWR6843AOP with the OOB demo firmware. I have been following the "Enabling TX Beamforming" guide in the "68xx ISK - 100m Outdoor People Tracking and False Detection Filtering" lab.  To start I have just been trying to copy their example of of creating 4 subframes with the focus angles of [-33.75 -11.25 11.25 33.75]. The problem I have been running into is that the radar keeps reporting an "error -1" after loading the config and doesn't actually start the sensor. From my testing it looks like there are some other settings that have to be configured correctly that are not mentioned in the "Enabling TX Beamforming" guide (such as dfeDataOutputMode which has to be set to 3 to use the advFrameCfg command). What other setting do I need to be changing in order to get TX beamforming working on this radar?

Here is the .cfg I am using

sensorStop
flushCfg
dfeDataOutputMode 3
channelCfg 15 7 0
adcCfg 2 1
adcbufCfg -1 0 1 1 1
lowPower 0 0
profileCfg 0 60 43 7 40 0 14970880 100 1 224 7000 0 0 30
profileCfg 1 60 43 7 40 0 10276864 100 1 224 7000 0 0 30
profileCfg 2 60 43 7 40 0 6565888 100 1 224 7000 0 0 30
profileCfg 3 60 43 7 40 0 1871872 100 1 224 7000 0 0 30
chirpCfg 0 0 0 0 0 0 0 7
chirpCfg 1 1 1 0 0 0 0 7
chirpCfg 2 2 2 0 0 0 0 7
chirpCfg 3 3 3 0 0 0 0 7
advFrameCfg 4 0 0 1 0
subFrameCfg 0 0 0 1 64 80 0 1 1 80
subFrameCfg 1 0 1 1 64 80 0 1 1 80
subFrameCfg 2 0 2 1 64 80 0 1 1 80
subFrameCfg 3 0 3 1 64 160 0 1 1 160
guiMonitor -1 1 0 0 0 0 0
cfarCfg -1 0 2 8 4 3 0 15 1
cfarCfg -1 1 0 4 2 3 1 15 1
multiObjBeamForming -1 1 0.5
clutterRemoval -1 1
calibDcRangeSig -1 0 -5 8 256
extendedMaxVelocity -1 0
lvdsStreamCfg -1 0 0 0
compRangeBiasAndRxChanPhase 0.0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0
measureRangeBiasAndRxChanPhase 0 1.5 0.2
CQRxSatMonitor 0 3 4 99 0
CQSigImgMonitor 0 111 4
analogMonitor 0 0
aoaFovCfg -1 -90 90 -90 90
cfarFovCfg -1 0 0 30
cfarFovCfg -1 1 -5.02 5.02
%calibData 0 0 0
sensorStart

Here is the CLI output from this .cfg 

mmwDemo:/>sensorStop
sensorStop
Ignored: Sensor is already stopped
Done
mmwDemo:/>flushCfg
flushCfg
Done
mmwDemo:/>dfeDataOutputMode 3
dfeDataOutputMode 3
Done
mmwDemo:/>channelCfg 15 7 0
channelCfg 15 7 0
Done
mmwDemo:/>adcCfg 2 1
adcCfg 2 1
Done
mmwDemo:/>adcbufCfg -1 0 1 1 1
adcbufCfg -1 0 1 1 1
Done
mmwDemo:/>lowPower 0 0
lowPower 0 0
Done
mmwDemo:/>profileCfg 0 60 43 7 40 0 14970880 100 1 224 7000 0 0 30
profileCfg 0 60 43 7 40 0 14970880 100 1 224 7000 0 0 30
Done
mmwDemo:/>profileCfg 1 60 43 7 40 0 10276864 100 1 224 7000 0 0 30
profileCfg 1 60 43 7 40 0 10276864 100 1 224 7000 0 0 30
Done
mmwDemo:/>profileCfg 2 60 43 7 40 0 6565888 100 1 224 7000 0 0 30
profileCfg 2 60 43 7 40 0 6565888 100 1 224 7000 0 0 30
Done
mmwDemo:/>profileCfg 3 60 43 7 40 0 1871872 100 1 224 7000 0 0 30
profileCfg 3 60 43 7 40 0 1871872 100 1 224 7000 0 0 30
Done
mmwDemo:/>chirpCfg 0 0 0 0 0 0 0 7
chirpCfg 0 0 0 0 0 0 0 7
Done
mmwDemo:/>chirpCfg 1 1 1 0 0 0 0 7
chirpCfg 1 1 1 0 0 0 0 7
Done
mmwDemo:/>chirpCfg 2 2 2 0 0 0 0 7
chirpCfg 2 2 2 0 0 0 0 7
Done
mmwDemo:/>chirpCfg 3 3 3 0 0 0 0 7
chirpCfg 3 3 3 0 0 0 0 7
Done
mmwDemo:/>advFrameCfg 4 0 0 1 0
advFrameCfg 4 0 0 1 0
Done
mmwDemo:/>subFrameCfg 0 0 0 1 64 80 0 1 1 80
subFrameCfg 0 0 0 1 64 80 0 1 1 80
Done
mmwDemo:/>subFrameCfg 1 0 1 1 64 80 0 1 1 80
subFrameCfg 1 0 1 1 64 80 0 1 1 80
Done
mmwDemo:/>subFrameCfg 2 0 2 1 64 80 0 1 1 80
subFrameCfg 2 0 2 1 64 80 0 1 1 80
Done
mmwDemo:/>subFrameCfg 3 0 3 1 64 160 0 1 1 160
subFrameCfg 3 0 3 1 64 160 0 1 1 160
Done
mmwDemo:/>guiMonitor -1 1 0 0 0 0 0
guiMonitor -1 1 0 0 0 0 0
Done
mmwDemo:/>cfarCfg -1 0 2 8 4 3 0 15 1
cfarCfg -1 0 2 8 4 3 0 15 1
Done
mmwDemo:/>cfarCfg -1 1 0 4 2 3 1 15 1
cfarCfg -1 1 0 4 2 3 1 15 1
Done
mmwDemo:/>multiObjBeamForming -1 1 0.5
multiObjBeamForming -1 1 0.5
Done
mmwDemo:/>clutterRemoval -1 1
clutterRemoval -1 1
Done
mmwDemo:/>calibDcRangeSig -1 0 -5 8 256
calibDcRangeSig -1 0 -5 8 256
Done
mmwDemo:/>extendedMaxVelocity -1 0
extendedMaxVelocity -1 0
Done
mmwDemo:/>lvdsStreamCfg -1 0 0 0
lvdsStreamCfg -1 0 0 0
Done
mmwDemo:/>compRangeBiasAndRxChanPhase 0.0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0
compRangeBiasAndRxChanPhase 0.0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0
Done
mmwDemo:/>measureRangeBiasAndRxChanPhase 0 1.5 0.2
measureRangeBiasAndRxChanPhase 0 1.5 0.2
Done
mmwDemo:/>CQRxSatMonitor 0 3 4 99 0
CQRxSatMonitor 0 3 4 99 0
Done
mmwDemo:/>CQSigImgMonitor 0 111 4
CQSigImgMonitor 0 111 4
Done
mmwDemo:/>analogMonitor 0 0
analogMonitor 0 0
Done
mmwDemo:/>aoaFovCfg -1 -90 90 -90 90
aoaFovCfg -1 -90 90 -90 90
Done
mmwDemo:/>cfarFovCfg -1 0 0 30
cfarFovCfg -1 0 0 30
Done
mmwDemo:/>cfarFovCfg -1 1 -5.02 5.02
cfarFovCfg -1 1 -5.02 5.02
Done
mmwDemo:/>sensorStart
sensorStart
Debug: Init Calibration Status = 0x1ffe
Error -1
mmwDemo:/>

  • Hello

    Can you please help us confirm if the binary images + configuration that is provided as part of the TIrex  works for you

    or

    Do you use such errors even on that combination.

    Thank you,

    Vaibhav

  • Hello,

    Also, are you still using the Long Range people detection lab with the AOP EVM? There will be additional changes needed to support the antenna geometry, but this is probably the easiest way. The default beamforming configuration should work with the AOP EVM, although the angle estimation will be wrong. Did you try this default config shows errors?

    Also, if you are running in CCS debug, there should be an error code given other than -1, is that the case?

    Regards,

    Jackson

  • Sure, I have been testing this evaluation module mostly with the demo visualizer. It is flashed with the out of the box demo firmware from the industrial toolbox. (mmwave_industrial_toolbox_4_9_0/labs/out_of_box_demo/68xx_aop_mmwave_sdk_hwa/prebuilt_binaries/xwr64xxAOP_mmw_demo.bin) Most of the configuration files that I have been using have been generated by the demo visualizer, these .cfg files always seem to work.

    Here is the software version info from the device that I gathered by sending the "version" command.

    Platform : xWR68xx_AOP
    mmWave SDK Version : 03.05.00.04
    Device Info : IWR68XX QM non-secure AOP ES 02.00
    RF F/W Version : 06.03.02.06.20.08.11
    RF F/W Patch : 00.00.00.00.00.00.00
    mmWaveLink Version : 01.02.06.06
    Lot number : 4142451
    Wafer number : 20
    Die coordinates in wafer: X = 22, Y = 40

    Also I noticed this morning that after sending the config file if I send the "sensorStart" command again it shows me an additional error message "Error: Full configuration must be provided before sensor can be started the first time". I have seen this before if I accidentally deleted a line from a .cfg file. I assume I am just missing some cli command to enable the device to do beamforming.

    sensorStart
    Debug: Init Calibration Status = 0x1ffe
    Error -1
    mmwDemo:/>
    mmwDemo:/>sensorStart
    sensorStart
    Error: Full configuration must be provided before sensor can be started the first time
    Error -1
    mmwDemo:/>

  • No I am using the out of the box firmware still. I am trying to test beam forming/steering, can this be done with the out of the box demo?

  • Hi Parker,

    This should also be possible with the OOB firmware. The full config error just means you have sent sensorStart again without sending the rest of the config since the previous sensorStart.

    Just to check, if you use the default AOP CFG file for the OOB demo, does the sensor start? Just to confirm the HW is working.

    Are you able to run in debug mode with CCS to see more info about the error reported?

    Regards,

    Jackson

  • No I don't have the debugger module so I can't run in debug mode with CCS, but I actually figured out the problem with my config. I needed to change the txMask in the chipCfgs from 7 to 1, 2, or 4 (I was trying to enable all 3 tx antennas for the chirpCfg but apparently you can't do that) and then I needed to change profile index on the CQRxSatMonitor and CQSigImgMonitor commands to -1 so that it was enabled for all profiles.

    Now I am trying to tune the phase shift values to get beam angles I want. In the "Enabling TX Beamforming" guide which is written for the iwr6843isk it lists the 3 6bit phase shift registers as having a step size of 5.625 degrees. I haven't been able to find this spec in the AOP data sheet. Is this step size the same for the iwr6843AOP?

    In addition to being able to configure the beam angle I would like to be able to configure the beam width. Is this achievable with the AoP model, and is there any TI document that addresses this?

  • Hi Parker,

    The step size should be the same for AOP. For more information on setting the angles, please see the following post.

    https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/987243/iwr6843isk-beamsteering-question/3650082#3650082

    Regards,

    Jackson

  • Hello,

    Would you be able to share the beamforming config file that you were able to get working with the OOB firmware? I've been searching for ways to improve the AOP range and I believe beamforming will work, but I've been struggling to get the config file right. 

  • Hello,

    Have you tried the config from the long range people default binary? This is the only configuration I have used. It should work with the OOB binary if you combine it with the rest of the AOP CFG for the OOB demo.

    profileCfg 0 61.0 10 6 135 0 14970880 1.8 1 256 2000 0 0 48
    profileCfg 1 61.0 10 6 135 0 10276864 1.8 1 256 2000 0 0 48
    profileCfg 2 61.0 10 6 135 0 6565888 1.8 1 256 2000 0 0 48
    profileCfg 3 61.0 10 6 135 0 1871872 1.8 1 256 2000 0 0 48
    chirpCfg 0 0 0 0 0 0 0 7
    chirpCfg 1 1 1 0 0 0 0 7
    chirpCfg 2 2 2 0 0 0 0 7
    chirpCfg 3 3 3 0 0 0 0 7
    advFrameCfg 4 0 0 1 0
    subFrameCfg 0 0 0 1 128 80 0 1 1 80
    subFrameCfg 1 0 1 1 128 80 0 1 1 80
    subFrameCfg 2 0 2 1 128 80 0 1 1 80
    subFrameCfg 3 0 3 1 128 160 0 1 1 160

    Regards,

    Jackson