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.

IWR6843ISK: Only a few bytes can be fetched via UART and the board have no response any more

Part Number: IWR6843ISK

Dear TI experts:

I am trying to fetch some raw data from the sample project:

  • mmwave_automotive_toolbox / labs / incabinsensing / incabin_gesture_sensing sample project.
  • the name of the pre-built binary is multi_guesture_demo_68xx_ods.bin.

I uncommented a piece of code and want to fetch such data buffer via UART. (changed the if-conditon and always true)

    /* Sending range Azimuth Heat Map */
    if (/* pGuiMonSel->rangeAzimuthHeatMap == */ 1)
    {
        itemPayloadLen = obj->numRangeBins * obj->numVirtualAntAzim * sizeof(cmplx16ImRe_t);
        message.body.detObj.tlv[tlvIdx].length = itemPayloadLen;
        message.body.detObj.tlv[tlvIdx].type = MMWDEMO_OUTPUT_MSG_AZIMUT_STATIC_HEAT_MAP;
        message.body.detObj.tlv[tlvIdx].address = (uint32_t)obj->azimuthStaticHeatMap;
        tlvIdx++;

        totalPacketLen += sizeof(MmwDemo_output_message_tl) + itemPayloadLen;
    }

Such payload (2048 bytes in size) could be sent via the internal mailbox from DSS to MSS. The data could be memcpy or accessed in MSS correctly without problems. However I tried to send such payload via UART, the board hang up while calling UART_writePolling(). After many tests, I can only send 200 bytes while UART_writePolling(). Are there any suggestions to send a 2048-buffer via UART without "CPU fault" or hang up? The following sample code I used to send data buffer.

    for (itemIdx = 1;  itemIdx < message.body.detObj.header.numTLVs; itemIdx++) {
        UART_writePolling(gMmwMssMCB.loggingUartHandle,
                           (uint8_t*)&message.body.detObj.tlv[itemIdx],
                           sizeof(MmwDemo_output_message_tl));
        // send out all tlv data
        UART_writePolling(gMmwMssMCB.loggingUartHandle,
                        (uint8_t*)SOC_translateAddress(message.body.detObj.tlv[itemIdx].address,
                                                        SOC_TranslateAddr_Dir_FROM_OTHER_CPU,NULL),
                        message.body.detObj.tlv[itemIdx].length);

    }
    

I could send continuous 6144-byte heatmap buffers and receive them at the host side without a problem by using another sample project (occupancy_plus_vital_signs). Is there anything I missed?

UPDATE: Here I attached the firmware bin files.

mmwbin.zip

ShengChih Lai