应粉丝强烈要求,出一篇文章讲解一下AWR1843(案例automatived parking)的代码架构,本篇文章主要讲解的是DSS工程的代码架构,主要是从宏观上进行讲解,具体的细节就不进行详述
立马进入正题
文章目录
- 代码文件解析
- 函数调用架构
- main
- MmwDemo_dataPathConfigPopulate
- MmwDemo_populateUSRR
- MmwDemo_dataPathInit1Dstate
- MRR_DSS_initTask
- MRR_DSS_dssDataPathConfigAdcBuf
- MmwDemo_dataPathConfigBuffers
- MmwDemo_dataPathConfigEdma
- MRR_DSS_mmWaveTask
- MmwDemo_processChirp
- MmwDemo_interChirpProcessing
- MmwDemo_interFrameProcessing
- MRR_DSS_DataPathOutputLogging
- MRR_DSS_SendProcessOutputToMSS
- 总结
代码文件解析
下图是整个DSS工程的目录结构,红框框住的是存放代码的一些文件,需要着重理解,下面说明每个文件的主要功能
文件主要功能说明
- cfg.c 功能:配置了MRR(medium range resolution) TI Design和描述了minimal mode的使用,主要是ADC格式、收发天线数量、profile、frame、advframe、chirp发射信号等配置
- mmw_config.h 功能:这是一个头文件,用来描述毫米波demo配置的头文件,个人感觉不重要
- mmw_message.h 功能:这是毫米波demo主要的头文件,主要是一些消息结构体,用来定义与DSS、PC交互的消息
- mmw_output.h 功能:和mmw_output.h头文件一起使用
- pa_config_chirp_design_MRR120.h 功能:定义了与MRR(120m)配置功能的一些常数信息
- pa_config_chirp_design_MRR80.h 功能:定义了与MRR(80m)配置功能的一些常数信息
- pa_config_chirp_design_USRR80.h 功能:定义了与USRR(20m)配置功能的一些常数信息
- pa_config_consts.h 功能:定义了一些常数,包括发射信号(chirp、frame)、可检测最大的对象数、EDMA通道
- pa_defines.h 功能:定义了一些常数,包括发射发射、接收天线数量、ADC数据格式、LVDS、HPF等
- clustering 文件夹里的是关于聚类的算法及API接口
- detection 文件里面是关于cfar检测的算法及API接口
- DoA 文件里面是关于角度估计的算法及API接口
- dopplerProc 文件里是关于多普勒算法及API接口
- utilities 文件里是关于一些常用的功能函数(如,周期时长测量函数、c674的内联函数、内存分配函数)
- cplx_types.h 功能:定义了一些常用的数据类型结构体
- dss_config_edma_util.c dss_config_edma_util.h 功能:定义核实现了关于EDMA的配置接口
- dss_data_path.c dss_data_path.h 功能:定义和实现了数据路径处理功能
- dss_main.c 功能: 这个就不多说了,dss_main是DSS工程里最主要的,所有的执行函数基本都在这个文件里
- dss_pa.h 功能:是DSS中最主要的头文件,被dss_main.c所调用
- radarProcess.h radarProcess.c 定义和实现了雷达信号处理链
- swpform.h 定义了编程时要使用的类型
- dss_pa_linker.cmd、r4f_linker.cmd、dss_pa.cfg 功能:是对底层环境的配置,不进行讲解,偏于底层
函数调用架构
main
dss_main.c中的main函数,在dss_main.c文件中的365行,调用结构图如下:
MmwDemo_dataPathConfigPopulate
MmwDemo_dataPathConfigPopulate在dss_main.c文件中的600行,调用结构图如下:
MmwDemo_populateUSRR
MmwDemo_populateUSRR在dss_main.c文件中的1352行,调用结构图如下:
MmwDemo_dataPathInit1Dstate
MmwDemo_dataPathInit1Dstate在dss_data_path.c文件中的1707行,主要是对1D FFT处理要用到的计数器进行初始化
MRR_DSS_initTask
MRR_DSS_initTask在dss_main.c文件中的456行,主要功能是初始化DSS子系统中的各种组件
MRR_DSS_dssDataPathConfigAdcBuf
MRR_DSS_dssDataPathConfigAdcBuf在dss_main.c文件中的981行,主要功能是对adcbuffer进行配置
MmwDemo_dataPathConfigBuffers
MmwDemo_dataPathConfigBuffers在dss_data_path.c文件中的1861行,主要功能是进行内存的分配
MmwDemo_dataPathConfigEdma
MmwDemo_dataPathConfigEdma在dss_data_path.c文件中的721行,主要功能是对所有子帧进行EDMA通道配置
MRR_DSS_mmWaveTask
MRR_DSS_mmWaveTask在dss_data_path.c文件中的233行,主要功能是进行数据处理并发送给MSS
MmwDemo_processChirp
MmwDemo_processChirp在dss_data_path.c文件中的1479行,主要功能是对每个chirp进行fft处理
MmwDemo_interChirpProcessing
MmwDemo_processChirp在dss_data_path.c文件中的1428行,主要功能是对4个接收天线接收回来的chirp进行fft处理
MmwDemo_interFrameProcessing
MmwDemo_interFrameProcessing在dss_data_path.c文件中的1428行,主要功能是进行帧间处理
关于雷达算法处理流程就不详述了,可以看我另一篇文章:Xiaojie雷达之路—TI实战笔记—雷达数据处理流程总结
MRR_DSS_DataPathOutputLogging
MRR_DSS_DataPathOutputLogging在dss_data_path.c文件中的928行,主要功能是判断HSRAM共享内存是否可用
MRR_DSS_SendProcessOutputToMSS
MRR_DSS_SendProcessOutputToMSS在dss_data_path.c文件中的928行,主要功能是将要发送的内容以消息的形式组装起来,然后通过邮箱发送
总结
DSS整个工程到底完成了什么功能
- 将接收天线接收到的数据存放到adcbuffer中
- 完成了雷达信号处理的整个流程
- 将检测到目标和点云通过邮箱发送到MSS
至此,AWR1843(案例automated parking)代码架构(下)已经结束,希望能够对您有所帮助