2020/5/21

DCA1000EVM, UDP and command Line, Record File format

DCA1000EVM 送 UDP Data, 有 RAW mode 跟 Data Seperate mode.

論壇說...DCA1000EVM_CLI_Control 怎麼存檔的,沒有文件,但是你可以去看 source code,
studio 2.1 版有附 source code...

/** Data Index in the buffer     - With bytes count (6 bytes)                */
#define RECORD_DATA_BUF_INDEX    10

       s32CtPktRecvSize = recvfrom(sRFDCCard_SockInfo.s32DataSock[u8DataTypeId],
                               s8ReceiveBuf, MAX_BYTES_PER_PACKET, 0,
                               (struct sockaddr *)&SenderAddr,
                               &s32SenderAddrSize);
       ...
       memcpy(&u32CtPktNum, &s8ReceiveBuf[0], sizeof(UINT32));

       memcpy(&u64BytesSentTillCtPkt, &s8ReceiveBuf[4], 6);



       writeDataToBuffer_Inline(&s8ReceiveBuf[RECORD_DATA_BUF_INDEX],
                               (s32CtPktRecvSize - RECORD_DATA_BUF_INDEX),
                                false, false);
 

所以真的就是把後面的 rawdata 存起來...


存檔格式的話,mmWave Radar Device ADC Raw Data Capture .pdf 的 6.xWR16XX and IWR6843 with DCA1000 Data Format 有說明...


因為LVDS 是一個一個 Lane 傳送的,一個lane 可以傳送兩筆資料。
因為 DCA1000 傳送 ADC 資料時,只能用 complex。
所以格式就是先兩筆 I 資料(Lane1),再兩筆 Q 資料 (Lane2)
而不是 (I.Q), (I.Q) 成對依序出現。

同樣的 pdf 檔,9.Interpreting Binary File in MATLAB 有code 證實這樣的format..
counter=1
for i=1:4:filesize-1
    LVDS(1,counter  ) = adcData(i  ) + sqrt(-1)*adcData(i+2);
    LVDS(1,counter+1) = adcData(i+1) + sqrt(-1)*adcData(i+3);
    counter = counter+2
end

沒有留言:

張貼留言