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.

C5505 HwaFFT1024点fft无法实现



2.1.9 HWAFFT Data and Scratch Pointers Copied as 16-Bit Instead of 23-Bit
On silicon revision 2.0, the HWAFFT uses two data buffers, data and scratch, to pass data to the FFT
coprocessor, to store intermediate results, and to store the FFT output. The hwafft_Npts routines available
in ROM use pointers to access the data and scratch buffers. These pointers are copied as 16-bit
addresses instead of 23-bit addresses when copying from AR0 to AR3 and from AR1 to AR2. The upper
bits are not copied which can lead to incorrect FFT results and potential corruption of data incorrectly
addressed by the hwafft_Npts routine.
The user is responsible for following one of the following workarounds:
• Execute hwafft_Npts from RAM using the updated hwafft.asm with bug fixes. The hwafft.asm file
included with SPRABB6.zip incorporates bug fixes for this errata. The HWAFFT routines stored in
ROM cannot be updated and do not incorporate these bug fixes. For reference, hwafft_rom.asm is
included in SPRABB6.zip and contains the HWAFFT routines exactly as they exist in the ROM of the
affected revisions.
• Execute hwafft_Npts from RAM or from ROM while passing duplicate pointers to the scratch and data
buffers to correctly initialize the upper bits of AR0, AR1, AR2, and AR3. The data and scratch buffers
can be located in word addresses greater than 0x10000, but the buffers must not cross 16-bit address
boundaries (that is, address bits 22–16 must not change). Additionally, if hwafft_512pts is used, data
and scratch must not reside at the beginning of a page boundary (that is, word address 0x10000 or
0x20000). This workaround initializes the most significant bits of internal registers AR2 and AR3 such
that when the 16-bit address is copied from AR0 and AR1, and provided the assumptions above are
satisfied, the full 23-bit address remains correct throughout HWAFFT execution.
In the user program wherever hwafft_Npts is called, replace:
out_sel = hwafft_Npts(data, scratch, fft_flag, scale_flag);
With:
out_sel = hwafft_Npts(data, scratch, scratch, data, fft_flag, scale_flag);
In hwafft.h, replace:
Uint16 hwafft_Npts(
Int32 *data,
Int32 *scratch,
Uint16 fft_flag,
Uint16 scale_flag
);
With:
Uint16 hwafft_Npts(
Int32 *data,
Int32 *scratch,
Int32 *duplicate_scratch,
Int32 * duplicate_data,
Uint16 fft_flag,
Uint16 scale_flag
);
怎么理解这段话,如何实现FFT,折腾了两个周了,还是无法解决问题,请教各位这个到底该如何实现?

希望能提供源码,万分感谢

  • 源码及文档:

    http://www.ti.com/apps/docs/litabsmultiplefilelist.tsp?literatureNumber=sprabb6b&docCategoryId=1&appId=308&keyMatch=sprabb6b&tisearch=Search-EN-Everything

  • 这些资源我都找过了,做过测试发现:fft出来的结果都是不定的,我用的是1-8八个固定数做得fft.这是为何,我用的是官方的开发板,这是为何,难道芯片有Bug?

  • 您好,  

          我是刚学C5505,买的也是官方的开发板TMS320C5505-ezdsp-USB-STICK,现在遇到了一个问题,就是bootloader加载程序。

      (1)、开发板自带的EEProm可以使用SPI-EEProm加载方式么?

      (2)、网上的很多资料我也看过了,.bin拷进eeprom 的这一步始终搞不定。希望得到你的帮助,谢谢!

    这个是官网上的方法:

    这是官网的例程图片:

    这个是我自己的CCS截图,到达不了上边设置输入.bin的那一步,不知道是哪儿的问题。我用的是CCS4.1.3