229
社区成员
发帖
与我相关
我的任务
分享
我们正在开发一个基于RS6130的透镜方案的雷达测距仪。
手册上的内容表示,40MHz的晶振具有更好的相噪性能,因此我们自己打样的PCB上使用了一颗40MHz,±10ppm的晶振

但是,截至目前最新的SDK RS6x_7x_mmWave_sdk_V2.1.1 中,貌似有诸多不兼容40MHz晶振的地方。
首先,当前的SDK不允许简单在板级文件#define CONFIG_CLK_DCXO_FREQ 40000000
至少存在这些阻碍:
1、MSI 测频参考被写死为 32 MHz
SDK在hal_clock_calib.c中写死:
#define CALIB_STD_CLK_FREQ 32000000
Calib_Open(LL_CALIB_HSRC_DCXO, LL_CALIB_LSRC_MSI, calibTime);
这会导致MSI真实频率与SDK记录值不一致。
2、在第一个问题解决后,如果把参考频率修正为40MHz,有一个32bit溢出问题。
在hal_clock_calib.c中:
cap_freq = calibTime * (calibFreq / 1000) / cap_tick;
其中,#define CALIB_CAL_TARGET_MSI_CNT (131072)
如果取calibFreq=40000000,乘法结果是131072 × 40000 = 5,242,880,000——溢出
此外,还有数个硬件选择/硬编码假设32MHz的问题,就不一一列举。

我们修改了SDK的部分代码,尝试调整了SoC内部的时钟树
对于原来的SDK与官方demo的32MHz的晶振来说,时钟去向大概是:
系统:32 MHz MSI → SPLL → CPU和总线/外设
雷达前端:32 MHz XTAL/DCXO → DPLL → Radar
由于SDK代码多处暗示非雷达前端的系统时钟有32MHz写死的属性。
我们在第一次修改中,系统PLL仍以约32 MHz的MSI为输入,雷达前端则使用40 MHz DCXO;MSI由40 MHz DCXO作为参考进行校准。
系统:32 MHz MSI → SPLL → CPU和总线/外设
雷达前端:40 MHz XTAL/DCXO → DPLL → Radar
但此时,出现了一些雷达前端问题,可能是chirp非线性。
下图中,第一张图是雷达对天花板测量的结果,range谱峰有明显的展宽问题。第二张图是多次上电/断电,或者RST中偶然遇到的较好情况。
此时,图中雷达前端扫频设置是59GHz起步,4cm分辨率,1024 range bin,没有单独设置截止频率。如果以57GHz起步,其谱峰向低频展宽更严重,我们以此怀疑是chirp线性度的问题。


在已保存的两次明显宽峰启动中,通过mmw_chirp_calibdata_get()读回的257点校准数据均全部等于4095。作为对照的一次窄峰启动中,数据范围为2255~4095,其中索引0、64、128、192、256分别为2919、2580、2259、4095、4095。
未进行大量的实验,因此只是猜测相关。
于是我们在反复尝试了之后,选择:
系统:40 MHz XTAL/DCXO → SPLL → CPU和总线/外设
雷达前端:40 MHz XTAL/DCXO → DPLL → Radar
之后未发现类似的情况,距离谱得到了显著改善
我们想知道:
为什么源码要走
系统:32 MHz MSI → SPLL → CPU和总线/外设
雷达前端:32 MHz XTAL/DCXO → DPLL → Radar
这样的路径?
为什么
系统:32 MHz MSI → SPLL → CPU和总线/外设
雷达前端:40 MHz XTAL/DCXO → DPLL → Radar
会带来问题?
既然
系统:40 MHz XTAL/DCXO → SPLL → CPU和总线/外设
雷达前端:40 MHz XTAL/DCXO → DPLL → Radar
可行,我们能不能使用
系统:32 MHz XTAL/DCXO → SPLL → CPU和总线/外设
雷达前端:32 MHz XTAL/DCXO → DPLL → Radar
或者
系统:40 MHz MSI → SPLL → CPU和总线/外设
雷达前端:40 MHz XTAL/DCXO → DPLL → Radar
我们想要知道更多有关的信息。当初决策40MHz晶振的时候并没有考虑到SDK支持问题。而我们肯定也不愿意在雷达前端留下潜在的性能风险。
盼复!
目前只开发和验证了32M XTAL的功能,40M现在没开发和验证,所以不保证稳定。
建议还是采用32M XTAL。