你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
[复制链接]
一直很安静-393701
提问时间:2013-11-1 13:14 /
问答
是否解决:
我用STM32F3 的DSP库 arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
求指点啊,谢谢啦
赞
0
收藏
0
评论
8
分享
发布时间:2013-11-1 13:14
举报
请先
登录
后回复
8个回答
安
回答时间:2013-11-1 14:11:02
a0a.1 0b0c
RE:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
请问一下数据是有错误还是高低字节不对?
赞
0
评论
回复
支持
反对
一直很安静-393701
回答时间:2013-11-1 14:18:30
a0a.1 0b0c
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
回复第 2 楼 于2013-11-01 14:11:02发表:
请问一下数据是有错误还是高低字节不对?
是数据在数组的顺序不对
赞
0
评论
回复
支持
反对
一直很安静-393701
回答时间:2013-11-1 14:24:10
a0a.1 0b0c
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
我拿50HZ和100HZ的信号进行FFT。在1和2出应该是32.可1处是对的,另一个就不对了。跑到40多去了
赞
0
评论
回复
支持
反对
一直很安静-393701
回答时间:2013-11-1 14:27:28
a0a.1 0b0c
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
回复第 2 楼 于2013-11-01 14:11:02发表:
请问一下数据是有错误还是高低字节不对?
赞
0
评论
回复
支持
反对
安
回答时间:2013-11-1 15:30:29
a0a.1 0b0c
RE:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
是否可以看一下你的相关代码?
赞
0
评论
回复
支持
反对
一直很安静-393701
回答时间:2013-11-1 16:32:00
a0a.1 0b0c
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
<div style="padding:5px;border:1px dashed #ccc;">回复第 6 楼 于2013-11-01 15:30:29发表:
是否可以看一下你的相关代码?
//#define fftSize 64 //FFT²ÉÑùµãÊý£¬Èç¹ûÓÃDSP¿â½øÐÐFFTÔò´ÎÊýΪ16¡¢64¡¢256¡¢1024
#define TEST_LENGTH_SAMPLES 128
#define NUM_TAPS 32 //Â˲¨Æ÷µÄÂ˲¨ÏµÊýµÄÄ¿Êý£¬Â˲¨Æ÷³¤¶È
#define BLOCK_SIZE 32//Â˲¨Æ÷ ͬһʱ¼ä´¦ÀíµÄÑù±¾Êý
float32_t testfftInput[TEST_LENGTH_SAMPLES];
static float32_t testfftOutput[TEST_LENGTH_SAMPLES/2];/
uint32_t fftSize = 64;
uint8_t ifftFlag = 0;
uint8_t doBitReverse = 1;
float32_t spidata[64];
int w[MAXSIZE];
int m[3];
float32_t testOutput[NumberMAX];
float32_t firStateF32[BLOCK_SIZE+NUM_TAPS-1];
float32_t SpiBuffer[NumberMAX];
float Value[NumberMAX];
u8 SamplingEnd;
u8 SamplingCount;
int next_data_handle(int addr)
{
return (addr) == MAXSIZE ? 0
addr) ;
}
int main(void)
{
u8 i=0;
u32 j;
u8 k;
arm_fir_instance_f32 S;
arm_cfft_radix4_instance_f32 S1;
float32_t maxValue;
arm_status status;
float32_t *inputF32,*outputF32;
float32_t threshold;//Ææ´Îг²¨°Ù·Ö±È
int flag = 0;
int warn = 0;//±¨¾¯±êÖ¾
//int middle = 0;
int addr1 = 0;
float32_t sum1 = 0;
float32_t sum2 = 0;
float32_t sum3 = 0;
SystemInit();//ϵͳʱÖÓ³õʼ»¯Îª72M
GPIO_Configuration();//¶Ë¿Ú³õʼ»¯
NVIC_Configuration();//ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
SPI_Configuration();
Init_SPI();
USART_Configuration(9600);
TIM_Configuration();
delay_init(72); //ÑÓʱº¯Êý³õʼ»¯
EXTIX_Init();
status = ARM_MATH_SUCCESS;
status = arm_cfft_radix4_init_f32(&S1,fftSize,ifftFlag,doBitReverse);
while(1)
{
if(SamplingEnd==true)//²É¼¯Íê64¸öµã
{
for(i=0;i
赞
0
评论
回复
支持
反对
一直很安静-393701
回答时间:2013-11-1 16:37:57
a0a.1 0b0c
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
回复第 6 楼 于2013-11-01 15:30:29发表:
是否可以看一下你的相关代码?
还有就是我把arm_common_tables.h 里的
extern const uint16_t armBitRevTable[1024];和extern const float32_t twiddleCoef[6144];
改成extern uint16_t armBitRevTable[1024]和extern const float32_t twiddleCoef[4096*2];了,
在arm_cfft_radix4_init_f32.c里加了句uint16_t armBitRevTable[1024];否则编译错误
对了我用的是STM32F3的固件库
赞
0
评论
回复
支持
反对
Zacking
回答时间:2015-4-29 10:19:04
a0a.1 0b0c
楼主,请问利用stm32 dsp库做fft运算后,怎样根据得出的幅值验证结果的正确性啊,我在网上看到有一个例子它是根据峰值出现的位置就说跟预期结果相符,请问这是怎么知道的呢?
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
请问一下数据是有错误还是高低字节不对?
是数据在数组的顺序不对
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
请问一下数据是有错误还是高低字节不对?
RE:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
是否可以看一下你的相关代码?
//#define fftSize 64 //FFT²ÉÑùµãÊý£¬Èç¹ûÓÃDSP¿â½øÐÐFFTÔò´ÎÊýΪ16¡¢64¡¢256¡¢1024
#define TEST_LENGTH_SAMPLES 128
#define NUM_TAPS 32 //Â˲¨Æ÷µÄÂ˲¨ÏµÊýµÄÄ¿Êý£¬Â˲¨Æ÷³¤¶È
#define BLOCK_SIZE 32//Â˲¨Æ÷ ͬһʱ¼ä´¦ÀíµÄÑù±¾Êý
float32_t testfftInput[TEST_LENGTH_SAMPLES];
static float32_t testfftOutput[TEST_LENGTH_SAMPLES/2];/
uint32_t fftSize = 64;
uint8_t ifftFlag = 0;
uint8_t doBitReverse = 1;
float32_t spidata[64];
int w[MAXSIZE];
int m[3];
float32_t testOutput[NumberMAX];
float32_t firStateF32[BLOCK_SIZE+NUM_TAPS-1];
float32_t SpiBuffer[NumberMAX];
float Value[NumberMAX];
u8 SamplingEnd;
u8 SamplingCount;
int next_data_handle(int addr)
{
return (addr) == MAXSIZE ? 0addr) ;
}
int main(void)
{
u8 i=0;
u32 j;
u8 k;
arm_fir_instance_f32 S;
arm_cfft_radix4_instance_f32 S1;
float32_t maxValue;
arm_status status;
float32_t *inputF32,*outputF32;
float32_t threshold;//Ææ´Îг²¨°Ù·Ö±È
int flag = 0;
int warn = 0;//±¨¾¯±êÖ¾
//int middle = 0;
int addr1 = 0;
float32_t sum1 = 0;
float32_t sum2 = 0;
float32_t sum3 = 0;
SystemInit();//ϵͳʱÖÓ³õʼ»¯Îª72M
GPIO_Configuration();//¶Ë¿Ú³õʼ»¯
NVIC_Configuration();//ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
SPI_Configuration();
Init_SPI();
USART_Configuration(9600);
TIM_Configuration();
delay_init(72); //ÑÓʱº¯Êý³õʼ»¯
EXTIX_Init();
status = ARM_MATH_SUCCESS;
status = arm_cfft_radix4_init_f32(&S1,fftSize,ifftFlag,doBitReverse);
while(1)
{
if(SamplingEnd==true)//²É¼¯Íê64¸öµã
{
for(i=0;i
回复:arm_cfft_radix4_f32()做FFT后数据对,但是在数组位置不对是怎么回事啊???
是否可以看一下你的相关代码?
还有就是我把arm_common_tables.h 里的
extern const uint16_t armBitRevTable[1024];和extern const float32_t twiddleCoef[6144];
改成extern uint16_t armBitRevTable[1024]和extern const float32_t twiddleCoef[4096*2];了,
在arm_cfft_radix4_init_f32.c里加了句uint16_t armBitRevTable[1024];否则编译错误
对了我用的是STM32F3的固件库