超宽带定位用于DW1000芯片中信道脉冲响应(CIR)数据的获取。
CIR数据可用于研究非视距(NLOS)信号的识别。并且具有较好的效果,一些时、频域特征都是通过CIR数据计算而来。因此获取CIR数据是十分必要的。CIR图像如下图所示。
Keil 需要自己写一个最大最小值函数, 否则用于“取模”的代码行会出现报错。为了方便获取,代码位置加在CIR数据读取之前即可,(函数代码部分我放在文末)
CIR数据读取的代码如下文章来源:https://www.toymoban.com/news/detail-518985.html
//####CIR读取定义
#define CIR_OFFSET 0x25
u8 cir[3969]; //芯片默认为16MHZ
int16 real =0;
int16 imag =0;
int16 amp=0;
//CIR数据读取
count = sprintf((char*)&tempSendBuff[0], "new data mark row \r\n");
USB_TxWrite(tempSendBuff,count);
// 64对应的是1016个点,程序默认16 对应992个点 自然是四的倍数。 最大长度为3968字节(@16 MHz //PRF)和4064字节(@64 MHz PRF)。
dwt_readaccdata(cir, 3969, 0);//根据dw1000 api函数文件中dwt_readaccdata函数更改程序,程序中默
//认prf为16MHz,读取长度为3968bytes
for(cir_i = 0;cir_i<992;cir_i++)
{
real = (int16)cir[cir_i*4+2] << 8 | (int16)cir[cir_i*4+1];//实部
imag = (int16)cir[cir_i*4+4] << 8 | (int16)cir[cir_i*4+3]; //虚部
amp = max(abs(real),abs(imag)) + 1/4 * min(abs(real),abs(imag));//取模
count = sprintf((char*)&tempSendBuff[0], "%d %d %d %d\r\n ",fp_int,real,imag,amp);
USB_TxWrite(tempSendBuff, count);
}
最大最小值函数的代码如下文章来源地址https://www.toymoban.com/news/detail-518985.html
//最大、最小值函数定义
uint16 max(uint16 a,uint16 b)
{
if(a >= b)
{
return a;
}
else
{
return b;
}
}
uint16 min(uint16 a,uint16 b)
{
if(a <= b)
{
return a;
}
else
{
return b;
}
}
到了这里,关于UWB定位 CIR(信道脉冲响应)数据获取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!