# M-Three

Members

19

## Reputation Activity

1. M-Three got a reaction from larryfraz in DSP Libraries for Cortex-M3 and other ARM microcontrollers
I was looking around for a general dsp library to do FFTs when I came across this page.

Has a sh*t ton of stuff, hopefully helpful to you guys.

Four groups of functions:

Windowing function
Fast Fourier Transform
Complex magnitude (absolute value of complex frequency)
Miscellaneous functions: logarithm(x), exp(x), pseudorandom generator

Three library versions
GCC ( Rowley CrossWorks, Raisonance, …)
Keil MDK-ARM
IAR Embedded Workbench

Windowing functions (e.g. Hamming window)
Windowing is very common step before FFT calculation
Perform speed optimized windowing of input signal before FFT
16 to 32 bit version performs proper scaling of 16 bit signal for 32 bit FFT

FFT functions
Complex and real FFT, 16 and 32bit FFT versions
Radix4/2 FFT – sizes 4,8,16,32,64,128,256,512,1024,2048 and 4096
Inverse FFT available
Real FFT enables much more efficient processing of the real signals
16 bit FFT precision comparable with other fixed point implementation – precision determined by necessary scaling by 0.5 in every FFT stage
32 bit FFT increases dynamic range by 90 dB , needs extra 20% to 50% cycles
Coefficients located in Flash. RAM location means faster FFT for higher latencies.

Magnitude functions
Calculate complex frequency magnitude mag=sqrt (re^2 + im^2)
Based on custom 32 bit square root algorithm (7/13 cycles)
Multiple versions of different speed / precision tradeoffs for 64 bit sqrt

Logarithm and exponent functions
Calculate log2(x) and exp2(x) = 2^x
log2 input, exp2 output: 16q16 unsigned 1/65536 to 65535+65535/65536
log2 output, exp2 input : 5q27 signed -15.99999 to 15.99999
speed: 11/10 cycles ; precision 0.4 ppm / 3 ppm for log2 / exp2
single multiply conversion to log10(x), ln(x), 10^x, e^x and generic base log, exp

Parallel MLS pseudorandom generator for ARM cpu
Maximum Length Sequence generated by Linear Feedback Shift Registers
Periode 2^31-1 to 2^64-1 words (1 to 64 bits wide)
1 to 64 bits generated in parallel
Order of magnitude faster than bit based approach, 3-10 cycles per whole word
2. M-Three got a reaction from tanh_ta in STM32 wave audio player with LCD
Was searching for FFT libraries when I came across this player. Reads files from an SD card using FatFS by ChaN, displays a spectrum graph on an LCD using the FFT dsp library from Ivan Mellen.

Mini-STM32 WAVE Audio Player.7z
3. M-Three got a reaction from Ferb in Noob Question: What kind of OSes can run on Stellaris Launchpad?
4.
From HAD, the Stellaris is not shipping yet "But [EuphonistiHack] works as a software dev for TI and snagged one of the early development units."

5. M-Three got a reaction from bluehash in DSP Libraries for Cortex-M3 and other ARM microcontrollers
I was looking around for a general dsp library to do FFTs when I came across this page.

Has a sh*t ton of stuff, hopefully helpful to you guys.

Four groups of functions:

Windowing function
Fast Fourier Transform
Complex magnitude (absolute value of complex frequency)
Miscellaneous functions: logarithm(x), exp(x), pseudorandom generator

Three library versions
GCC ( Rowley CrossWorks, Raisonance, …)
Keil MDK-ARM
IAR Embedded Workbench

Windowing functions (e.g. Hamming window)
Windowing is very common step before FFT calculation
Perform speed optimized windowing of input signal before FFT
16 to 32 bit version performs proper scaling of 16 bit signal for 32 bit FFT

FFT functions
Complex and real FFT, 16 and 32bit FFT versions
Radix4/2 FFT – sizes 4,8,16,32,64,128,256,512,1024,2048 and 4096
Inverse FFT available
Real FFT enables much more efficient processing of the real signals
16 bit FFT precision comparable with other fixed point implementation – precision determined by necessary scaling by 0.5 in every FFT stage
32 bit FFT increases dynamic range by 90 dB , needs extra 20% to 50% cycles
Coefficients located in Flash. RAM location means faster FFT for higher latencies.

Magnitude functions
Calculate complex frequency magnitude mag=sqrt (re^2 + im^2)
Based on custom 32 bit square root algorithm (7/13 cycles)
Multiple versions of different speed / precision tradeoffs for 64 bit sqrt

Logarithm and exponent functions
Calculate log2(x) and exp2(x) = 2^x
log2 input, exp2 output: 16q16 unsigned 1/65536 to 65535+65535/65536
log2 output, exp2 input : 5q27 signed -15.99999 to 15.99999
speed: 11/10 cycles ; precision 0.4 ppm / 3 ppm for log2 / exp2
single multiply conversion to log10(x), ln(x), 10^x, e^x and generic base log, exp

Parallel MLS pseudorandom generator for ARM cpu
Maximum Length Sequence generated by Linear Feedback Shift Registers
Periode 2^31-1 to 2^64-1 words (1 to 64 bits wide)
1 to 64 bits generated in parallel
Order of magnitude faster than bit based approach, 3-10 cycles per whole word
6.
http://www.linuxfromscratch.org/lfs/view/stable/chapter05/chapter05.html
7.
ooh I can help!
Make sure "Enable Support for GCC Extensions" box is checked.
Properties->Build->TMS470 Compiler->Language Options. Let me know!

8.
I wanted to be able to verify my system clock was configured properly. I found this feature very useful on the msp430 chips. Turns out that the STM32 Cortex M0 chips also support this. Attached is some code that allows you to output your SYSCLK on pin PA.8 for easy verification of your various clock sources.

/** * Cortex M0 - STM32F0 Discovery board code spew out one of the clocks on PA.8 */ void OutputMCO() { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); /* Output clock on MCO pin ---------------------------------------------*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); // pick one of the clocks to spew RCC_MCOConfig(RCC_MCOSource_SYSCLK); // Put on MCO pin the: System clock selected //RCC_MCOConfig(RCC_MCOSource_HSE); // Put on MCO pin the: freq. of external crystal //RCC_MCOConfig(RCC_MCOSource_PLLCLK_Div2); // Put on MCO pin the: System clock selected }

-rick
9.
The ARM WebRadio is an embedded Internet Radio based on an ARM Cortex-M3 LM3S6950 Microcontroller and VS1053 Audio Codec. The device can be powered through PoE (Power over Ethernet).
Source code and schematics at github.

10. M-Three reacted to bluehash in Win a STM32F0-Discovery Kit
Make sure you are logged in. Once logged in, there will be a submit link below.Last entry is "End of June 2012"

http://www.designspark.com/content/win-stm32f0-discovery
11.
Avnetexpress has the Stellaris Evalbot at 50% discount. Use coupon code
ARMSTELLARIS50 at checkout.
Enjoy!
×
• Blog

• #### Activity

×
• Create New...