This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RFFT32_split in CONTROLSUITE Texas library - explain what it does ?

Part Number: TMS320F2808
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

The ControlSUITE documentation on the function of function RFFT32_split() is very poor.

There is a thread in the forum:with a link to a document which suggests it explains this but a password is required to access the file. No idea how to access it.

The link is:

 e2e.ti.com/support/microcontrollers/c2000/f/171/p/554522/2029513?keyMatch=fft%20split&tisearch=Search-EN

(prefix this with https:// - I had to remove this to stop the editor corrupting the text.)

Any help appreciated.

Thanks!

  • Hi Peter,

    I'm sorry that you had to face issues with the documentation. There are a few points I would like to elaborate on here:

    First, I would just like to clarify one thing that the split function(CFFT_unpack) is available only in the VCU library. In case you are using the FPU library, it won't be accessible to you.

    Second, here is some more information regarding the unpack function:

    * The pack function is run on an N-point complex spectrum to derive an 
      N/2 point complex spectrum which is subject to an inverse FFT to give
      an N/2 point real signal
    * The pack function must be called with FFTSize of N/2 i.e. the size of 
      the inverse FFT that is run subsequent to the pack function

    What this basically means is that to perform an RFFT, you do not need a special rfft function. You can perform a cfft, then call unpack, then use inverse FFT to get RFFT. The only thing that will vary is the fft size that you take in each step. For more details on the formula that was used, you can refer to <install_dir>\ti\c2000\C2000Ware_1_XX_03_00\libraries\dsp\VCU\c28\source\vcu2\fft\vcu2_cfft_utils.asm

    Third, regarding the link, I acknowledge the error and I will get it rectified soon by the developer. I will update you with the new link.

    Lastly, we are moving to C2000Ware for our new software releases. You will be able to find the latest code and documentation in C2000Ware. It would be great if you could download and refer to C2000Ware for your new product releases.

    Hope this helps you in some way.

    -Ritvik

  • Ritvik,

    Thank you for the very fast reply.

    We are using the ControlSUITE fixed point dsp library; C:\ti\controlSUITE\libs\dsp\FixedPointLib\v1_20_00_00.

    In this library (C:\ti\controlSUITE\libs\dsp\FixedPointLib\v1_20_00_00\source) there is a source file: RFFT32_split.asm which has some comments which describe its function.which I have copied as a screenshot below:. It would be helpful to have more explanation of the comments and the function of split().

    We use this function as suggests by the Texas RFFT example rfft.c (in C:\ti\controlSUITE\libs\dsp\FixedPointLib\v1_20_00_00\examples_ccsv5\2833x_FixedPoint_RFFT\source), a screenshot of part of rfft.c is below - which has the rfft.split() function call.

    So Texas suggest split() should be used. Do you have a more detailed explanation of split() I can refer to please?

    We have some issues with phase and magnitude to resolve which require detailed knowledge of what data is being used and how.

    Many thanks,

    Peter Walker

  • Here are the screenshots missed from the previous post.

    RFFT32_split.asm



    RFFT.c:

  • Thanks Peter for mentioning that you are using Fixed Point Library. I got confused because the link you shared pointed to VCU library. 

    Coming to your question, the split function is the same as unpack function I mentioned before. And the process remains the same. Only the names and code has changed because of the difference in the libraries. The underlying principle remains mostly the same.

    Now, the issues with phase and magnitude can occur because of many reasons, I will state some of the basics things you need to take care of:

    1. Check the FFT size, and then check the how much size are you assigning to the buffer.
    2. Check in the linker command file if you are allocating correct size to the DATA SECTIONS: "FFTipcb" and "FFTipcbsrc"
    3. Check if you have used correct alignment in linker file. For Real FFT, the variable FFT_ALIGN must be equal to 2 times the number of FFT points.
    4. In the Project Properties->Build->C2000 Linker->File Search Path on the right side, the library with the name "rts2800_ml.lib" is included. 

    Please check if these things are in order. If possible, I will need some snapshots of your initialization code and the sequence in which you are calling the functions so that I can assist you further.

    -Ritvik

  • Hi Peter,

    I haven’t heard from you for over a week, so I’m assuming you were able to resolve your issue. If this isn’t the case, please reject this resolution and reply to this thread. If this thread locks, please make a new thread describing the current status of your issue.

    Ritvik

  • Hi Ritvik,
    What I really need is a detailed description of the of the operation of rfft.split() which is a textual description and not just a reference to an assembler code listing.
    As I said above:
    "We use this function as suggests by the Texas RFFT example rfft.c (in C:\ti\controlSUITE\libs\dsp\FixedPointLib\v1_20_00_00\examples_ccsv5\2833x_FixedPoint_RFFT\source), a screenshot of part of rfft.c is below - which has the rfft.split() function call."
    Thank you.

    Regards,

    Peter Walker
  • Hi Peter,

    I checked with the developer who had written the document. He too doesn't have a copy the document mentioned in that link. I am afraid that you will have to look up some resources outside TI to get the information. I will still try and see if I can get the document from some other source, but the chances are bleak. You will have to take cues from code comments in the file I pointed to.

    -Ritvik