Other Parts Discussed in Post: IWR1843, IWR6843, AWR1843, AWR6843

作者:Chris Meng

        TI在毫米波产品上提供了非常多的例程供用户参考,但有些演示例程只基于某些器件,没有覆盖到全部的毫米波产品。例如level_sensing的例程就没有支持IWR1843的工程示例。本文就以level_sensing的例程为例,介绍如何把IWR6843的CCS工程代码移植到IWR1843上。

        IWR6843和IWR1843在硬件上是pin to pin兼容的,软件上也是基于同一个mmWave SDK。但是IWR6843工作的频率范围是60~64GHz,而IWR6843工作的频率范围是76~81GHz。两者pinmux定义,调用的库函数也有些不同。软件的移植主要就是基于上面几点的不同。

        本文介绍的移植基于mmwave_industrial_toolbox_4_9_0[1]里的level_sensing例程以及mmWave SDK 3.5[2]

1. 首先在\mmwave_industrial_toolbox_4_9_0\labs\level_sensing目录下新创建一个名为18xx_high_accuracy的文件夹。将68xx_high_accuracy目录下的所有文件复制到新目录18xx_high_accuracy下。

2. 把18xx_high_accuracy\src目录下的两个CCS工程文件修改文件名为projectspec/high_accuracy_18xx_dss.projectspec。然后分别用文本编辑器打开两个工程文件,把“68”相关内容替换为“18”。例如把工程文件里的定义“-DSOC_XWR68XX”修改为“-DSOC_XWR18XX”。

3. 同样,在18xx_high_accuracy\src目录下的.c,.h文件里搜索“68”关键字,并替换为“18”。

4. 在配置初始化校准时,需要设定校准的频率范围。由于IWR6843和IWR1843的工作频率范围不同,所以相关代码需要修改。

下面是IWR6843和IWR1843的mss_main.c里相关代码的比较。

C:\ti\mmwave_industrial_toolbox_4_9_0\labs\level_sensing\68xx_high_accuracy\src\mss\mss_main.c

C:\ti\mmwave_industrial_toolbox_4_9_0\labs\level_sensing\18xx_high_accuracy\src\mss\mss_main.c

Line 754              gMmwMssMCB.cfg.openCfg.freqLimitLow  = 600U;

Line 755              gMmwMssMCB.cfg.openCfg.freqLimitHigh = 640U;

Line 754                   gMmwMssMCB.cfg.openCfg.freqLimitLow  = 760U;

Line 755                   gMmwMssMCB.cfg.openCfg.freqLimitHigh = 810U;

 5. 由于IWR6843和IWR1843的工作频率范围不同,配置文件也要做相应的修改。在18xx_high_accuracy\chirp_configs目录下修改cfg文件名cfg。修改配置里的起始频率为77。

下面是IWR6843和IWR1843的配置文件的比较。

C:\ti\mmwave_industrial_toolbox_4_9_0\labs\level_sensing\68xx_high_accuracy\ chirp_configs\high_accuracy_demo_68xx.cfg

C:\ti\mmwave_industrial_toolbox_4_9_0\labs\level_sensing\18xx_high_accuracy\chirp_configs\high_accuracy_demo_18xx.cfg

Line 6     profileCfg 0 60 7 7 114.4 0 0  33.71 1 512 5000 0 0 48

Line 5  profileCfg 0 77 7 7 114.4 0 0  33.71 1 512 5000 0 0 48

6. Profilecfg有配置起始频率和斜率参数,底层API里每位(bit)代表的单位对于60GHz芯片和77GHz芯片是不同的。下表是 AWR_PROFILE_CONF_SB contents[3]的部分内容,可以看出两者的区别。

在通过cfg配置文件传递profilecfg、chirpcfg参数给MSS的时候,level sensing例程使用了cli库,这个库会调用SOC_getDeviceRFFreqScaleFactor()函数,判断使用的芯片是哪一款,获得不同的单位。当IWR6843时,赋值变量gCLI_mmwave_freq_scale_factor为2.7。而当使用的芯片为IWR1843时,gCLI_mmwave_freq_scale_factor变量值为3.6。

Cli库会把输入配置参数值转换为射频配置需要的值。例如cfg文件里profilecfg配置起始频率为60或者77,在cli库里的CLI_MMWaveProfileCfg()函数会通过下面的代码做转换。

所以对于输入参数解析和射频配置,移植时用户不需要修改相关代码。

在level sensing的例程的chirpcfg里和工作频率相关的CHIRP_FREQ_START_VAR、CHIRP_FREQ_SLOPE_VARl两个参数设置为0,代码中没有涉及。这两个参数每位(bit)代表的单位可以在参考资料 [3] 里找到。

如果应用层需要使用射频配置参数的时候,需要把射频配置的值还原到实际的频率或者斜率。这种情况做移植时,代码需要根据77Ghz芯片对应的单位做相应修改。

7. 最后,保存修改,通过CCS导入工程编译即可。

        移植过程做68和18代码替换的时候,还是需要要看看代码是否有什么特殊含义。例如在IWR6843的mss_main.c里有一个#ifndef SOC_XWR68XX_ES1相关代码,阅读后发现是针对IWR6843 ES1.0芯片的操作,对于IWR1843可以将相关宏定义代码去除。具体移植后的18xx_high_accuracy代码可以在参考资料 [4] 里下载。

        本文的方法也适用于AWR6843,AWR1843 CCS工程代码的相互移植。

参考资料:

  1. Industrial toolbox 4.9 (https://dev.ti.com/tirex/explore/node?a=VLyFKFf__4.9.0&node=AJoMGA2ID9pCPWEKPi16wg__VLyFKFf__4.9.0)
  2. mmWave SDK 3.5 (MMWAVE-SDK Software development kit (SDK) | TI.com)
  3. \mmwave_dfp_01_02_06_03\docs\mmWave-Radar-Interface-Control.pdf (https://dr-download.ti.com/secure/software-development/firmware/MD-4KzhRZFj8g/01.02.06.03/mmwave_dfp_01_02_06_03_win32.exe)
  4. (+) AWR1843AOPEVM: AWR1843AO能否配置实现单发单收? - 传感器论坛 - 传感器 - E2ETm 设计支持 (ti.com)
Anonymous