我正在使用 Arm-Cortex M3 微控制器和 CMSIS 进行 FFT,我的微控制器不支持浮点单元,因此我必须使用定点(Q15 或 Q31)进行计算。在计算 FFT 之前,我需要对从 ADC 12 位 (0-4095) 收集的数据应用汉宁窗。我的 ADC 数据范围为 1800 ~ 3200。这是我迄今为止尝试过的示例代码。我正确申请了吗?
double hann[512];
uint32_t ADC[512]; /* data range 1800 ~ 3200 */
q31_t input[512]; /* fixed point */
// Hann window
for (int i = 0; i < 512; i++)
{
hann[i] = 0.5 * (1 - cos(2*PI*i/511));
}
// apply hann window to ADC data
for (int j = 0; j < 512; j++)
{
ADC[j] = (ADC[j] - DC) * hann[j];
input[j] = (q31_t)ADC[j] << 19; // convert to fixed point Q31 from 12-bit
}