我正在开发一个 DSP 处理器,以在 Linux 系统上使用 C 实现 BFSK 跳频机制。在程序的接收器部分,我得到一组样本的输入,我使用 Goertzel 算法对其进行解调,以确定接收到的位是 0 还是 1。
现在,我能够单独检测这些位。但是我必须以浮点数组的形式返回数据进行处理。因此,我需要将接收到的每组 32 位打包成一个浮点值。对,我正在做类似的事情:
uint32_t i,j,curBit,curBlk;
unint32_t *outData; //this is intiallized to address of some pre-defined location in DSP memory
float *output;
for(i=0; i<num_os_bits; i++) //Loop for number of data bits
{
//Demodulate the data and set curBit=0x0000 or 0x8000
curBlk=curBlk>>1;
curBlk=curBlk|curBit;
bitsCounter+=1;
if(i!=0 && (bitsCounter%32)==0) //32-bits processed, save the data in array
{
*(outData+j)=curBlk;
j+=1;
curBlk=0;
}
}
output=(float *)outData;
现在,output
数组的值只是outData
小数点后为 0 的数组的值。例如:如果output[i]=12345
`outData[i]=12345.0000'。
但是在测试程序时,我正在使用浮点数组生成位的样本测试数据
float data[] ={123.12456,45.789,297.0956};
因此,在解调之后,我期望浮点数组output
具有与数组相同的值data
。是否有其他方法可以将 32 位数据转换为浮点数。我是否应该将接收到的位存储到一个char
数组中,然后将其转换为浮点数。