UWB定位 CIR(信道脉冲响应)数据获取

超宽带定位用于DW1000芯片中信道脉冲响应(CIR)数据的获取。

CIR数据可用于研究非视距(NLOS)信号的识别。并且具有较好的效果,一些时、频域特征都是通过CIR数据计算而来。因此获取CIR数据是十分必要的。CIR图像如下图所示。

Keil 需要自己写一个最大最小值函数, 否则用于“取模”的代码行会出现报错。为了方便获取,代码位置加在CIR数据读取之前即可,(函数代码部分我放在文末)

CIR数据读取的代码如下

//####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);	
				}

最大最小值函数的代码如下

//最大、最小值函数定义
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;
	}
}

评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值