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.

IWR1642BOOST: Changing profileCfg parameters in the people counting demo

Part Number: IWR1642BOOST
  •  mmWave SDK .01.02.00.05

  • IWR1642BOOST

  • Silicon revision ES1.0

  • Code Composer Studio Version: 8.1.0.00011 

Hi,

I am attempting to change the parameters in the profileCfg command being sent to a slightly modified version of the people counting demo (from industrial toolbox v2.3.0) to try at give better sensing at reduced range. It functions correctly using the configuration provided with the demo:

dfeDataOutputMode 1
channelCfg 15 3 0
adcCfg 2 1
adcbufCfg 0 1 1 1
profileCfg 0 77 30 7 62 0 0 60 1 128 2500 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 2
frameCfg 0 1 128 0 50 1 0
lowPower 0 0
guiMonitor 1 1 0 0
cfarCfg 6 4 4 0 0 16 16 4 4 50 62 0
doaCfg 600 1875 30 0
SceneryParam -6 6 0.05 4
GatingParam 4 3 2 0
StateParam 10 5 10 100 5
AllocationParam 250 0.01 5 1 2
VariationParam 0.289 0.289 1.0
trackingCfg 1 2 250 20 200 50 90
sensorStart

But if I attempt to change the configuration I get errors. For example, Changing profileCfg parameters to the ones given in the mm Wave Sensing Estimator for the short range default: 

profileCfg 0 77 7 6.3 50.06 0 0 58.13 1 223 4306 0 0 30

It gives this console log:

[Cortex_R4_0] **********************************************
Debug: Launching the Millimeter Wave Demo
**********************************************
Debug: MMWDemoMSS Launched the Initialization Task
Debug: System Heap (TCM): Size: 65536, Used = 2832, Free = 62704 bytes
Debug: MMWDemoMSS mmWave Control Initialization was successful
[C674X_0] Debug: Logging UART Instance @00816150 has been opened successfully
Debug: DSS Mailbox Handle @0080c148
Debug: MMWDemoDSS create event handle succeeded
Debug: MMWDemoDSS mmWave Control Initialization succeeded
Debug: MMWDemoDSS ADCBUF Instance(0) @00816120 has been opened successfully
Debug: MMWDemoDSS Data Path init succeeded
Debug: MMWDemoDSS initTask exit
[Cortex_R4_0] Debug: CLI is operational
Debug: Heap before creating a tracker
Debug: System Heap (TCM): Size: 65536, Used = 27864, Free = 37672 bytes
Debug: (GtrackModuleInstance *)0x8008e18
Debug: System Heap (TCM): Size: 65536, Used = 51392, Free = 14144 bytes
Debug: MMWDemoMSS Received CLI sensorStart Event
Error: MMWDemoMSS mmWave Configuration failed [Error code -203685722]

And if I use these parameters generated using the sensing estimator:

profileCfg 0 77 429 7 57.14 0 0 70 1 256 5209 0 0 30

I get this in the console:

[Cortex_R4_0] **********************************************
Debug: Launching the Millimeter Wave Demo
**********************************************
Debug: MMWDemoMSS Launched the Initialization Task
Debug: System Heap (TCM): Size: 65536, Used = 2832, Free = 62704 bytes
Debug: MMWDemoMSS mmWave Control Initialization was successful
[C674X_0] Debug: Logging UART Instance @00816150 has been opened successfully
Debug: DSS Mailbox Handle @0080c148
Debug: MMWDemoDSS create event handle succeeded
Debug: MMWDemoDSS mmWave Control Initialization succeeded
Debug: MMWDemoDSS ADCBUF Instance(0) @00816120 has been opened successfully
Debug: MMWDemoDSS Data Path init succeeded
Debug: MMWDemoDSS initTask exit
[Cortex_R4_0] Debug: CLI is operational
Debug: Heap before creating a tracker
Debug: System Heap (TCM): Size: 65536, Used = 27864, Free = 37672 bytes
Debug: (GtrackModuleInstance *)0x8008e18
Debug: System Heap (TCM): Size: 65536, Used = 51392, Free = 14144 bytes
Debug: MMWDemoMSS Received CLI sensorStart Event
Error: MMWDemoMSS mmWave Configuration failed [Error code -203816638]

How do I go about decoding these error codes to find out what the problem is? Is there any reference as to what the limitations on the profile configuration are for the people counting demo? Additionally what would the best way be to go about working out configurations for this as the sensing estimator does not seem to give configurations that work for this?

Many thanks,

Tim

  • Hi Tim,

    Unfortunately, we do not currently have guidelines about what will or will not work with the People Counting demo. 

    When using the sensing estimator to design chirps, ensure that you are using both the profile configuration, chirp configuration, and frame configuration that come from the sensing estimator.  For example, in the second example you sent, your frame configuration is set to run a frame every 50 ms, the People Counting default, but it will take 125 ms to finish all the chirp in one frame. 

    Edit: The first example fails because it needs more time to sample then there is ramp time. 

    I will determine a way for you to translate the error codes and reply with that.

    Regards,

    Justin

  • Hi Tim,

    To decode an error, follow the process below:

    Each error is a 32 bit value. bits  31:16 are the error type.  If you take your value and right shift 16, you will get this value. For example, the first error you show is -203685722. Right shift 16 gives -3108. In <mmwave_sdk_install>\packages\ti\control\mmwave\mmwave.h and <mmwave_sdk_install>\packages\ti\common\mmwave_error.h, you can find these values defined.  From mmwave_error.h, you will see that MMWAVE_ERRNO_BASE = -3100, and from  mmwave.h you will see that MWAVE_EPROFILECFG = (MMWAVE_ERRNO_BASE-8).  This is where the -3108 value comes from. 

    The sub system error is encoded in bits 15:2.  Extracting these bits will give you 41. You can look up the error is section 10.6.7 of this document. Now you can see that 41 = RL_RET_CODE_PF_RAMP_END_1INVAL_IN - unfortunately, this error is not defined any where else.However, now we know there is an issue with the way the ramp is configured. Now let's consider the chirp: 223 samples, 4306 ksps. This gives 51.7 us (micro-seconds) to take all samples. the ramp end time is 50.06 us, and the adc start time is 6.3 us, leaving only ~44 us to sample. This is why the error is thrown.

    To summarize the error resolution process:

    1. Extract bits 31:16 of the error code - this should be a four digit negative value. This will tell you which command caused the error
    2. Extract bits 15:2 of the error code - this value will be between -15 and 1048, look up this value in the table at 10.6.7. (don't worry, there aren't 1063 error codes).
    3. Use the error code name to determine what is incorrect.

    Another example - Error code: -203816638

    Error Type: -3110 = Frame config error

    Error code: RL_RET_CODE_FRAME_PERIOD_1INVAL_IN. This error is caused because you need 125 ms to chirp, but the frame time is only 50 ms. 

    Regards,

    Justin