94 lines
3 KiB
C
94 lines
3 KiB
C
|
/***************************************************************************
|
|||
|
*
|
|||
|
* Copyright 2015-2019 BES.
|
|||
|
* All rights reserved. All unpublished rights reserved.
|
|||
|
*
|
|||
|
* No part of this work may be used or reproduced in any form or by any
|
|||
|
* means, or stored in a database or retrieval system, without prior written
|
|||
|
* permission of BES.
|
|||
|
*
|
|||
|
* Use of this work is governed by a license granted by BES.
|
|||
|
* This work contains confidential and proprietary information of
|
|||
|
* BES. which is protected by copyright, trade secret,
|
|||
|
* trademark and other intellectual property rights.
|
|||
|
*
|
|||
|
****************************************************************************/
|
|||
|
#ifndef __HAL_HWFFT__
|
|||
|
#define __HAL_HWFFT__
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
//#include "cmsis_os.h"
|
|||
|
|
|||
|
#define HWFFT_USE_BUSY_WAIT 1
|
|||
|
#define HAVE_EQUIVALENT_MODE 1 /* 128in 128out not 128in 130out mode */
|
|||
|
|
|||
|
struct hwfft_t {
|
|||
|
int mode;
|
|||
|
int order;
|
|||
|
int sym_fft;
|
|||
|
//osSemaphoreId _osSemaphoreId;
|
|||
|
// osSemaphoreDef_t _osSemaphoreDef;
|
|||
|
//#ifdef CMSIS_OS_RTX
|
|||
|
// uint32_t _semaphore_data[2];
|
|||
|
//#endif
|
|||
|
};
|
|||
|
|
|||
|
enum hwfft_mode_t {
|
|||
|
HWFFT_MODE_FFT = 0x1,
|
|||
|
HWFFT_MODE_IFFT = 0x2,
|
|||
|
HWFFT_MODE_EQVL_FFT = 0x4,
|
|||
|
HWFFT_MODE_EQVL_IFFT = 0x8,
|
|||
|
};
|
|||
|
|
|||
|
enum hwfft_order_t {
|
|||
|
HWFFT_ORDER_64SAMP = 64,
|
|||
|
HWFFT_ORDER_128SAMP = 128,
|
|||
|
HWFFT_ORDER_256SAMP = 256,
|
|||
|
HWFFT_ORDER_512SAMP = 512,
|
|||
|
};
|
|||
|
|
|||
|
bool hwfft_is_enable(void);
|
|||
|
int hwfft_destroy(struct hwfft_t *fft_inst);
|
|||
|
/*
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>hwfft_t <EFBFBD>ṹ<EFBFBD><EFBFBD>
|
|||
|
mode: hwfft_mode_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD>HWFFT_MODE_FFT: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱsym_fft<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD>
|
|||
|
ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n/2+1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱsym_fft<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1<EFBFBD><EFBFBD>
|
|||
|
HWFFT_MODE_IFFT: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱsym_fft<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD>
|
|||
|
ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> n/2+1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱsym_fft<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1<EFBFBD><EFBFBD>
|
|||
|
HWFFT_MODE_EQVL_FFT: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>spx_fft<EFBFBD><EFBFBD><EFBFBD><EFBFBD>fftģʽ
|
|||
|
HWFFT_MODE_EQVL_IFFT: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>spx_ifft<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ifftģʽ
|
|||
|
|
|||
|
order: hwfft_order_t<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>֧<EFBFBD><EFBFBD> 512/256/128/64 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> fft/ifft
|
|||
|
|
|||
|
sym_fft: 1: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fft<EFBFBD>ĶԳ<EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD>fft<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n/2+1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD>ifft<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> n/2+1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>n Ϊfft/ifft<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
0: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int hwfft_create(struct hwfft_t *fft_inst, int mode, int order, int sym_fft);
|
|||
|
/*
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>fft/ifft
|
|||
|
fft_inst: hwfft_create<EFBFBD><EFBFBD><EFBFBD>ɵĶ<EFBFBD>Ӧ<EFBFBD>ṹ<EFBFBD><EFBFBD>
|
|||
|
in: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>buf
|
|||
|
out: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>buf
|
|||
|
*/
|
|||
|
int hwfft_fft_process(struct hwfft_t *fft_inst, short *in, short *out);
|
|||
|
/*
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fft/ifft
|
|||
|
fft_inst: hwfft_create<EFBFBD><EFBFBD><EFBFBD>ɵĶ<EFBFBD>Ӧ<EFBFBD>ṹ<EFBFBD><EFBFBD>
|
|||
|
in: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>buf<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fft<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>buf<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
out: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>buf
|
|||
|
num: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mode: 0 һֱ<EFBFBD>ȵ<EFBFBD>fft<EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
1 dma<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>fft<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD>أ<EFBFBD>cpu<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD>fft ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int hwfft_multifft_process(struct hwfft_t *fft_inst, short *in, short *out, unsigned short num,unsigned char mode);
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
#endif
|