发新帖我要提问
12
返回列表
打印
[测量]

ATT7022E的谐波数据怎么读取

[复制链接]
楼主: jaywhitejay
手机看帖
扫描二维码
随时随地手机跟帖
21
yaojinghui 发表于 2014-7-1 10:44
一次性读4个字节,只有后三个字节是一个点的有效值。用这样的策略读取整个缓冲区,然后送入FFT计算 ...

你好,请问一下这个FFT计算是芯片自带有这种功能,还是需要我们编FFT这个算法进行分析?

使用特权

评论回复
22
ningling_21| | 2016-6-15 11:59 | 只看该作者
只是那个明 发表于 2016-6-12 11:26
你好,请问一下这个FFT计算是芯片自带有这种功能,还是需要我们编FFT这个算法进行分析? ...

自己编程进行FFT计算

使用特权

评论回复
23
mgfzhh| | 2016-8-9 00:32 | 只看该作者
楼主 fft 怎么处理的

使用特权

评论回复
24
nethopper| | 2016-8-9 12:37 | 只看该作者
下面是从书本的FORTRAN FFT程序转为的C程序:
1)原书的FORTRAN程序:




2)第一次改编:(VC6.0),由于FORTRAN的数组从1开始,所以这里的C的数组也是从1开始的
/*******************************************************
/*             FFT                                     *
/* xr,xi-----input & output array
/* n-----must be integer exponent of 2                 *
/* inv---0:FFT   1---IFFT note the 1/N difference      *
/* arry of fft, e.g. xr,xi, is started with 1,not 0    *
/*******************************************************/

   int FFT(float * xr,float * xi,long n,int inv)  
    {
          float tr,ti,ur,ui,wr,wi,ur1,ui1;
          float pi;
          long m,nv2,nm1,i,j,k,l,le,le1,ip;
          //  n point fft  
      m=log(n)/log(2)+0.1;
          nv2=n/2;
      nm1=n-1;
      j=1;
      for(i=1;i<=nm1;i++)
      {  
                  if(i>=j) goto lop10;
                  tr=xr[j];
                  ti=xi[j];
                  xr[j]=xr;
                  xi[j]=xi;
                  xr=tr;
                  xi=ti;
                  lop10:        k=nv2;
                  lop20:        if(k>=j) goto lop30;
                  j=j-k;
                  k=k/2;
                  goto lop20;
                  lop30:        j=j+k;
       }
           pi=4.0*atan(1.0);
           for(l=1;l<=m;l++)
           {
                   le=pow(2,l)+0.1;
               le1=le/2;
               ur=1.0;
                   ui=0.0;
                   wr=cos(pi/(float)le1);
               wi=-sin(pi/(float)le1);
               if(inv!=0) wi=-wi;
                   for(j=1;j<=le1;j++)
                         {
                           for(i=j;i<=n;i+=le)
                                 {
                                   ip=i+le1;
                                   tr=xr[ip]*ur-xi[ip]*ui;
                                   ti=xr[ip]*ui+xi[ip]*ur;
                                   xr[ip]=xr-tr;
                                   xi[ip]=xi-ti;
                                   xr=xr+tr;
                                   xi=xi+ti;
                                 }
                     ur1=ur*wr-ui*wi;
                    ui1=ur*wi+ui*wr;
                    ur=ur1;
                    ui=ui1;
                         }
           }
           if(inv==0) return 0;
           for(i=1;i<=n;i++)
           {
             xr=xr/(float)n;
             xi=xi/(float)n;
           }
           return 0;
    }

3)第二次改编:(VC6.0),这里的C的数组改为更常见的从0开始
/*******************************************************
/*             FFT                                     *
/* xr,xi-----input & output array
/* n-----must be integer exponent of 2                 *
/* inv---0:FFT   1---IFFT note the 1/N difference      *
/* arry of fft, e.g. xr,xi, is started with 0,not 1    *
/*******************************************************/

    int FFT(float * xr,float * xi,long n,int inv)  
    {
          float tr,ti,ur,ui,wr,wi,ur1,ui1;
      float pi;
      long m,nv2,nm1,i,j,k,l,le,le1,ip;
          //  n point fft  
      m=log(n)/log(2)+0.1;
          nv2=n/2;
      nm1=n-1;
      j=0;//j=1;
      for(i=0;i<nm1;i++) //for(i=1;i<=nm1;i++)
      {  
                  if(i>=j) goto lop10;
                  tr=xr[j];
                  ti=xi[j];
                  xr[j]=xr;
                  xi[j]=xi;
                  xr=tr;
                  xi=ti;
                  lop10:        k=nv2;
                  lop20:        if(k>j) goto lop30;//if(k>=j) goto lop30;
                  j=j-k;
                  k=k/2;
                  goto lop20;
                  lop30:        j=j+k;
       }
           pi=4.0*atan(1.0);
           for(l=0;l<m;l++)  //for(l=1;l<=m;l++)  
           {
                   le=pow(2,l+1)+0.1;//le=pow(2,l)+0.1;
               le1=le/2;
               ur=1.0;
                   ui=0.0;
                   wr=cos(pi/(float)le1);
               wi=-sin(pi/(float)le1);
               if(inv!=0) wi=-wi;
                   for(j=0;j<le1;j++)  //for(j=1;j<=le1;j++)
                         {
                           for(i=j;i<n;i+=le)  // for(i=j;i<=n;i+=le)
                                 {
                                   ip=i+le1;
                                   tr=xr[ip]*ur-xi[ip]*ui;
                                   ti=xr[ip]*ui+xi[ip]*ur;
                                   xr[ip]=xr-tr;
                                   xi[ip]=xi-ti;
                                   xr=xr+tr;
                                   xi=xi+ti;
                                 }
                     ur1=ur*wr-ui*wi;
                    ui1=ur*wi+ui*wr;
                    ur=ur1;
                    ui=ui1;
                         }
           }
           if(inv==0) return 0;
           for(i=0;i<n;i++) //for(i=1;i<=n;i++)
           {
             xr=xr/(float)n;
             xi=xi/(float)n;
           }
           return 0;
    }

使用特权

评论回复
25
qq3147106| | 2017-7-14 10:32 | 只看该作者
楼主 你好 我现在也在做这个谐波采集  那个ADC数据如何可以转换成我们认识的那个电压电流值

使用特权

评论回复
26
yanyanmolly| | 2017-8-24 09:18 | 只看该作者
qq3147106 发表于 2017-7-14 10:32
楼主 你好 我现在也在做这个谐波采集  那个ADC数据如何可以转换成我们认识的那个电压电流值 ...

你好 我也在做这方面,我会把ADC转换成电压值,但是我没调通从ADC缓冲区取数,请问是怎么取的

使用特权

评论回复
27
夏夕| | 2021-1-4 16:55 | 只看该作者
楼主,谐波分析有做出来吗??有几个问题想请教一下

使用特权

评论回复
28
ningling_21| | 2021-1-5 11:50 | 只看该作者
夏夕 发表于 2021-1-4 16:55
楼主,谐波分析有做出来吗??有几个问题想请教一下

做到哪一步了

使用特权

评论回复
29
wuminghao123| | 2021-1-19 17:01 | 只看该作者

您好,我现在刚开始做,需要大于21次谐波,ATT7022E配置采用手动同步数据模式,有几个问题想请教下:
1.0xC4同步系数怎么确定?
2.是不是要连续读取1024个缓存数据?然后7个通道,每个通道取128点做FFT分析?
3.如果使用手动同步方式分析大于21次谐波(31次),那手册里面提供的0~21次谐波增益系数是不是用不到了?

使用特权

评论回复
30
ningling_21| | 2021-1-19 18:45 | 只看该作者
wuminghao123 发表于 2021-1-19 17:01
您好,我现在刚开始做,需要大于21次谐波,ATT7022E配置采用手动同步数据模式,有几个问题想请教下:
1.0 ...

https://bbs.21ic.com/icview-1618944-1-1.html

使用特权

评论回复
31
wuminghao123| | 2021-1-19 19:03 | 只看该作者
ningling_21 发表于 2021-1-19 18:45
https://bbs.21ic.com/icview-1618944-1-1.html

好的,谢谢!
我看了这个帖子,他同步系数直接写的14400,这是个固定值还是通过什么公式算出来的呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则