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.

DCA1000EVM: AWR1642+DCA1000采集adc数据的帧率问题

Part Number: DCA1000EVM
Other Parts Discussed in Thread: AWR1642, , IWR6843

您好!

我现在需要使用毫米波雷达与摄像机同步采集数据,因此需要确定雷达回传数据的帧率。

在我做的实验里,AWR的idle time是 7 us,ramp end time是 57.14 us,那么chirp sampling time是 64.14 us,一共128个chirp,需要 0.008 s 。但是从DCA中采集到的数据,显然远没有这么高的帧率,请问是另有设置吗?还是因为数据传输速度有限的原因呢?

  • 帧与帧之间还有帧间隔,请参考下面文档
    Figure 2. Typical Frame Structure
    https://www.ti.com/lit/an/swra553a/swra553a.pdf

  • 您好,

    我没有在这个文档里找到设置inter frame time的方法。经过再次测试,我录制了20s的数据,但解析之后发现只有10帧,这个帧率无论如何都太低了。

    我使用的cfg文件和json文件如下:

    sensorStop
    flushCfg
    dfeDataOutputMode 1
    channelCfg 15 3 0
    adcCfg 2 1
    adcbufCfg -1 0 1 1 1
    profileCfg 0 77 429 7 57.14 0 0 70 1 256 5209 0 0 30
    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 2
    frameCfg 0 1 16 0 250 1 0
    lowPower 0 1
    guiMonitor -1 1 1 0 1 1 1
    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 0
    calibDcRangeSig -1 0 -5 8 256
    extendedMaxVelocity -1 0
    bpmCfg -1 0 0 1
    lvdsStreamCfg -1 0 1 0
    compRangeBiasAndRxChanPhase 0.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 5 121 0
    CQSigImgMonitor 0 127 4
    analogMonitor 0 0
    aoaFovCfg -1 -90 90 -90 90
    cfarFovCfg -1 0 0 8.92
    cfarFovCfg -1 1 -1 1.00
    calibData 0 0 0
    sensorStart
    

    {
      "DCA1000Config": {
        "dataLoggingMode": "raw",
        "dataTransferMode": "LVDSCapture",
        "dataCaptureMode": "ethernetStream",
        "lvdsMode": 2,
        "dataFormatMode": 3,
        "packetDelay_us": 25,
        "ethernetConfig": {
          "DCA1000IPAddress": "192.168.33.180",
          "DCA1000ConfigPort": 4096,
          "DCA1000DataPort": 4098
        },
        "ethernetConfigUpdate": {
          "systemIPAddress": "192.168.33.30",
          "DCA1000IPAddress": "192.168.33.180",
          "DCA1000MACAddress": "12.34.56.78.90.12",
          "DCA1000ConfigPort": 4096,
          "DCA1000DataPort": 4098
        },
        "captureConfig": {
          "fileBasePath": "C:\\Users\\13197\\Desktop\\mmw\\DCA_Record\\data",
          "filePrefix": "adc_data_",
          "maxRecFileSize_MB": 1024,
          "sequenceNumberEnable": 1,
          "captureStopMode": "infinite",
          "bytesToCapture": 4000,
          "durationToCapture_ms": 4000,
          "framesToCapture": 40
        },
        "dataFormatConfig": {
          "MSBToggle": 0,
          "laneFmtMap": 0,
          "reorderEnable": 0,
          "dataPortConfig": [
            {
              "portIdx": 0,
              "dataType": "real"
            },
            {
              "portIdx": 1,
              "dataType": "complex"
            },
            {
              "portIdx": 2,
              "dataType": "real"
            },
            {
              "portIdx": 3,
              "dataType": "real"
            },
            {
              "portIdx": 4,
              "dataType": "complex"
            }
          ]
        }
      }
    }

    请问这是为什么呢?如何提高DCA采集的数据的帧率?

  • 请问mmwave studio里的Radar post processing界面显示的数据正确吗?

  • 之前用过mmwave studio,postproc里显示的热图都是正确的。

    我这次采集数据用的是DCA1000_CLI_Control,是mmwave studio里编译好的可执行文件,我用自己的程序解析了采集的数据,数据没有问题,但是帧率很低。

  • 你好,

    frameCfg 0 1 16 0 250 1 0

    你设定的一帧时间是250ms,也就是每秒只有4帧。

  • AWR的idle time是 7 us,ramp end time是 57.14 us,那么chirp sampling time是 64.14 us

    每个chirp的采样时间是采样点数乘以(1/采样率)。64.14us是一个chirp的总时长。

  • 您好,我依然有两个问题

    1、这里的frame periodicity在我的理解中,是为了保证AWR1642能有足够的时间通过UART回传热图数据而设置的(我想在录制数据时观察visualizer显示的热图,所以设置了比较低的频率),但不影响雷达天线的收发频率,同时也不影响雷达通过LVDS由DCA1000传输原始I/Q数据。是我的理解有误吗?

    2、即便这个参数会影响LVDS传输的频率,也和我实验得到的0.5hz不吻合

  • 1、这里的frame periodicity在我的理解中,是为了保证AWR1642能有足够的时间通过UART回传热图数据而设置的(我想在录制数据时观察visualizer显示的热图,所以设置了比较低的频率),但不影响雷达天线的收发频率,同时也不影响雷达通过LVDS由DCA1000传输原始I/Q数据。是我的理解有误吗?

    这里设置的frame periodicity就是一个毫米波帧的帧周期。一个帧周期内的发波时间是你配置的chirp数据量。你接收到的数据和你设定的每个frame里的chirp数和每个chirp的采样点数相关。

  • 2、即便这个参数会影响LVDS传输的频率,也和我实验得到的0.5hz不吻合

    你的配置的number of frame是0,也就是一直发射。请问你使用DCA1000_CLI_Control是如何确认采集到的数据就是每帧的开始?是先让DCA1000EVM start record,让后再下载cfg文件让毫米波LVDS输出数据?你说的采集了20s是如何来控制的?

    在json脚本里,你可以如下设置来控制采集的时间

    "captureStopMode": "duration",

    "durationToCapture_ms": 20000,

  • 感谢提醒,我并没有注意采集到的数据还需要考虑是否是每帧开头的问题,之前是先发送cfg文件让毫米波启动,再start record接收数据。采集20s是程序运行start record后sleep 20秒再运行stop record完成的

    想请教两个问题:

    1、当模式为raw时,如何确定采集的数据帧头的位置?并且,我此前没有注意这个问题,解析得到的结果看起来也没有问题

    2、帧率为0.5hz的问题依然存在,请问还可能是什么原因呢?

  • 你好,

    1. 正如我之前回复的,先让DCA1000EVM start record,让后再下载cfg文件让毫米波LVDS输出数据,这样可以保证采集到的数据是从第一帧帧头开始的。

    2. 能否使用我建议的durantion来采集?采集后的数据文件包有多大?

  • 您好,

    我尝试了先start record后发送cfg,并且使用duration采集,时间是20s

    最后结果是得到了10332KB大小的数据包,我使用16位整型读取,共有5289648个数据

    雷达有2*4个虚拟天线,每帧128chirp,每个chirp有256个sample,每一个sample有real和imag,那么5289648/(128*256*2*4*2)=10.089,帧率依然是0.5hz

  • 补充:

    我把frame periodicity改为100ms后,录制20s得到了25644KB的数据包,看来这个参数确实影响了帧率,但不知道什么原因导致帧率的具体数值没有对应上

  • 雷达有2*4个虚拟天线,每帧128chirp,每个chirp有256个sample,每一个sample有real和imag,那么5289648/(128*256*2*4*2)=10.089,帧率依然是0.5hz

    channelCfg 15 3 0

    adcCfg 2 1

    profileCfg 0 77 429 7 57.14 0 0 70 1 256 5209 0 0 30
    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 2
    frameCfg 0 1 16 0 250 1 0

    上面这个配置计算一帧ADC数据量如下:

    256(采样点)*(1-0+1)(chirp end index-chirp start index+1)*16(number of loop)*4(4RX)*2(complex 1x)*2 (16-bit ADC) bytes

    请问你计算的数量里的128个chirp是如何来的?

  • 感谢解答,128个chirp这个数据来自我使用的一份开源代码,它应该是IWR6843的参数,我没有注意到AWR1642的num of loop是16

    帧率没有问题了