做ad采样实验,采完一个工频周期后算有效值进一步处理,在计算有效值时使用dsp库函数,dsp库设置什么的都是按照例程里面DSP测试实验里搭建dsp运行环境来的,没有什么改动。现在就是ad采样后在调试界面可以看到dma里数组的各个采样瞬时值,但是经过函数计算后没有返回有效值,计算有效值的函数如下:
[mw_shl_code=c,true]//对一个工频周期内的值求有效值
void Getrms(void)
{
u16 count;
//for(i=0;i<M;i++)
for(count=0;count<N;count++)
{
rmsvalue[count]=(1.5-(float)value[count]*(3.3/4095.0))*(2000.0/3.0);
}
arm_rms_f32(&rmsvalue[N],N,&afterrms);
}[/mw_shl_code]
[mw_shl_code=c,true][/mw_shl_code]
[mw_shl_code=c,true][/mw_shl_code]
[mw_shl_code=c,true]afterems一直都是0,不知道为什么,求助论坛各位大大,或者还有别的算电压有效值比较好的方法也可以指点一下[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void arm_rms_f32(float32_t * pSrc , uint32_t blockSize , float32_t * pResult)
pSrc应该是首地址
所以应该写成
arm_rms_f32(rmsvalue,N,&afterrms);
试试看
还有 你用了FPU
写成rmsvalue[count]=(1.5f-(float)value[count]*(3.3f/4095.0f))*(2000.0f/3.0f);
如果不加f 计算的时候按照double类型 是不会通过FPU计算的
一周热门 更多>