作者:Chris Meng
本文基于xWR1642 OOB例程里接收通道饱和检测的功能,介绍了CQ2数据的含义及使用。相关的CQ2数据的信息也适用于其它TI毫米波传感器芯片。
一、CQ2数据简介
CQ2是chirp quality数据里的一部分。主要提供的是每个接收通道(RX)的ADC/IF的饱和的信息。CQ2数据的监控是在ADC采样时间内以时间片为单位进行的。在每个时间片内,饱和事件会被记录和统计,所有使能监控的采集通道都会一起统计。统计数据的每个bit都表示一次饱和事件。每个时间片内统计事件量的最大值为255(8-bit),统计的事件量超过255也记录为255。
图1 接收通道(RX)饱和监控的时间片
接收通道(RX)饱和监控的时间片分为主时间片(primary slice)和副时间片(secondary slice)。两者的个数相加N的最大值为127。其中主时间片为(N+1)/2个,副时间片为(N-1)/2个。
CQ2数据可以设置为16-bit,14-bit或者12-bit存储。图2是以16-bit为例CQ2数据在内存中的排布。其它输出位数的内存排布请参考参考资料[1]里的相关内容。N表示主时间片和副时间片数量的总和。Pn表示主时间片n在监控期间所有监控RX通道的饱和事件的累加值。Sn表示副时间片n在监控期间所有监控RX通道的饱和事件的累加值。
图2 16-bit CQ2数据在内存中的排布
在OOB例程里面可以通过CQRxSatMonitor参数,对输出的CQ2进行配置。CQRxSatMonitor提供了profile, satMonSel, priSliceDuration, numSlices, rxChanMask四个参数接口。分别对应/control/mmwavelink/include/rl_monitoring.h里rlRxSatMonConf_t结构体的相应内容。
1、Profile参数指明了当前监控配置适用的profile id。这个profile ID必须要有一个匹配的profilecfg。也就是事先需要配置好这个profile id。
2、SatMonSel,这个参数是接收饱和检测模式的设置。01表示仅仅使能对输入ADC的数据进行饱和检测。11表示是同时使能对于输入ADC和输入中频放大器(IFA1)的数据的饱和检测。具体的检测位置,请参考图3的信息。
图3 毫米波前端框图
3、priSliceDuration,这个参数用于设定主时间片的持续时间。1 LSB = 0.16 us。
4、numSlices这个参数设定的是主时间片和副时间片的总个数N。
特别注意:根据图1的信息,总的主时间片时间(priSliceDuration*0.16us*(N+1)/2)必须小于Chirp配置的ADC采样时间。所以在设定priSliceDuration和numSlices的时候,必须要注意ADC采样时间的限制。
5、rxChanMask用于对接收通道是否屏蔽饱和监控的设置。
二、CQ2数据实例分析
在xWR1642 OOB demo(mmWave SDK 2.1),默认CQ2的存储为16-bit。最终设置的是寄存器CQCFG1. CQDATAWIDTH。
cqConfig.cqDataWidth = 0; /* 16bit for mmw demo */
默认配置文件profile_2d.cfg里面对CQ2监控的设置为:CQRxSatMonitor 0 3 4 127 0。表示使用Profile 0,同时监控ADC和中频放大器输入数据是否饱和,主时间片持续时间为4*0.16us*64=40.96 us,总时间片为127个,所有采集通道都进行监控。这个实例中一次获取的CQ2数据为1024 bytes。
ptrDataPathObj->datapathCQ.satMonDataSizePerChirp = 128 (N+1=127+1)
ptrDataPathObj->numChirpsPerChirpEvent = 8
ptrDataPathObj->datapathCQ.satMonTotalSize =1024 (128×8)
在OOB demo里面有利用EDMA将CQ2的数据复制到内存里,图4是CQ2数据的实例。可以看到这个实例测试时候的时间片总数N为0x7F,也就是127个,和配置匹配。图4(a)中所有时间片上统计的饱和事件数为0,也就是采集的数据都是没有饱和的。图4(b)中统计值出现了非0值,也就是采集中出现了饱和的情况。
(a) (b)
图 四 DSS侧EDMA复制出来的部分CQ2数据 (CCS中)
三、数据饱和后的处理
如果在CQ2数据里面发现采集的数据饱和了,可以通过修改profile配置里的rxGain来减小增益。rxGain里面可以配置两个增益,一个是Rx增益,一个是发送的RF的目标增益。****的RF目标增益可以设置三个值,26dB,30dB,36dB。
如果修改rxGain后,还是检测出了饱和,还可以修改profile里面的TxOutPower参数,对****功率做补偿,以减小最大****天线功率。