Добрый стараюсь реализовать FFT средствами <arm_math.h>.
Для начала инициализирую
Код:
arm_rfft_init_q15(&S, FFT_SIZE, 0, 1);
Далее само преобразование и тут вопрос, судя по документации ему на вход надо подавать данные с плавающей точкой в формате 1.15
Код:
arm_rfft_q15(&S,fft_Sbuff, fft_Dbuff);
НАдо ли преобразовывать как-то данные полученные с АЦП и почему?
Далее есть таблица в которой видно, что подаем мы данные в формате 1.15, а на выходе для 128 отсчетов получаем 7.9. Там же в табличке есть столбец number bits of upscale, что он значит?
Дело в том, что в следующую функцию необходимо снова подать данные в формате 1.15, а у нас 7.9
В сети находил, что полученные результат сдвигают влево на число, указанное в последнем столбце. Но почему влево, а не вправо если нам нужен формат 1.15?
Код:
arm_cmplx_mag_q15(fft_Dbuff, fft_Sbuff, FFT_SIZE);
НУ и в итоге выходные данные мы получаем в формате 2.14, что не может не радовать, как теперь получить РЕАЛЬНУЮ амплитуду отсчета?