TI提供的库中sgen.calc(&sgen);是什么意思??

2019-03-26 15:22发布

我在看TI的源码看到sgen.calc(&sgen)。
很疑惑,看不懂。sgen.calc(&sgen);是如何影响gen.out的值?求大神讲解一下运行的过程。
例如:
  1. /* ==============================================================================

  2. System Name:    Complex FFT - Software Test Bench (STB)

  3. File Name:      FFTCD.C

  4. Description:    Primary System file for demonstrating the Complex FFT module

  5. Originator:     Advanced Embeeded Control (AEC) - Texas Instruments

  6. Target dependency:  x28x

  7. Description:
  8. ============

  9. */

  10. #include <stb.h>
  11. #include <fft.h>

  12. /* Create an instance of Signal generator module    */
  13. SGENTI_1 sgen = SGENTI_1_DEFAULTS;

  14. /* Create an instance of DATALOG Module             */
  15. DLOG_4CH dlog=DLOG_4CH_DEFAULTS;      
  16.    
  17. /* Create an Instance of FFT module                 */
  18. #define N   128
  19. #pragma DATA_SECTION(ipcb, "FFTipcb");
  20. #pragma DATA_SECTION(mag, "FFTmag");
  21. CFFT32  fft=CFFT32_128P_DEFAULTS;     
  22. long ipcb[2*N];
  23. long mag[N];

  24. /* Define window Co-efficient Array  and place the
  25. .constant section in ROM memory                                */
  26. const long win[N/2]=HAMMING128;

  27. CFFT32_ACQ  acq=CFFT32_ACQ_DEFAULTS;        
  28.    
  29. int xn,yn;
  30. void main()
  31. {   

  32. /* DATALOG module initialisation                    */        
  33.        dlog.iptr1=&xn;
  34.        dlog.iptr2=&yn;
  35.        dlog.trig_value=0x800;
  36.        dlog.size=0x400;         /* Can log 1024 Samples                      */
  37.        dlog.init(&dlog);

  38. /* Signal Generator module initialisation           */
  39.        sgen.offset=0;
  40.        sgen.gain=0x7fff;        /* gain=1 in Q15                              */
  41.        sgen.freq=10000;         /* freq = (Required Freq/Max Freq)*2^15       */
  42.                                 /*      = (931/3051.7)*2^15 = 10000           */         
  43.        sgen.step_max=10000;     /* Max Freq= (step_max * sampling freq)/65536 */
  44.                                 /* Max Freq = (10000*20k)/65536 = 3051.7      */

  45. /* Initialize acquisition module                    */
  46.         acq.buffptr=ipcb;
  47.         acq.tempptr=ipcb;
  48.         acq.size=N;
  49.         acq.count=N;
  50.         acq.acqflag=1;

  51. /* Initialize FFT module                            */
  52.         fft.ipcbptr=ipcb;
  53.         fft.magptr=mag;  
  54.         fft.winptr=(long *)win;
  55.         fft.init(&fft);  

  56. /*---------------------------------------------------------------------------
  57.     Nothing running in the background at present           
  58. ----------------------------------------------------------------------------*/

  59.         while(1)
  60.         {
  61.             sgen.calc(&sgen);
  62.             xn=sgen.out;
  63.             yn=sgen.out;
  64.             dlog.update(&dlog);

  65.             acq.input=((unsigned long)xn)<<16;
  66.             acq.update(&acq);   

  67.             if (acq.acqflag==0)     // If the samples are acquired      
  68.             {   
  69.                 CFFT32_brev2(ipcb,ipcb,N);
  70.                 CFFT32_brev2(ipcb,ipcb,N);  // Input samples in Real Part
  71.                 fft.win(&fft);      
  72.                 CFFT32_brev2(ipcb,ipcb,N);
  73.                 CFFT32_brev2(ipcb,ipcb,N);  // Input after windowing   
  74.                 fft.izero(&fft);
  75.                 fft.calc(&fft);
  76.                 fft.mag(&fft);
  77.                 acq.acqflag=1;      // Enable the next acquisition         
  78.             }

  79.         }      

  80. } /* End: main() */
复制代码

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
xy598646744
1楼-- · 2019-03-26 23:19
 精彩回答 2  元偷偷看……

一周热门 更多>