MThree

Content Count
19 
Joined

Last visited
Reputation Activity

MThree got a reaction from larryfraz in DSP Libraries for CortexM3 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 MDKARM
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^311 to 2^641 words (1 to 64 bits wide)
1 to 64 bits generated in parallel
Order of magnitude faster than bit based approach, 310 cycles per whole word

MThree 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.
MiniSTM32 WAVE Audio Player.7z

MThree got a reaction from Ferb in Noob Question: What kind of OSes can run on Stellaris Launchpad?

MThree reacted to Automate in Frequency analyzer built from the new Stellaris Launchpad
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."
http://hackaday.com/...arislaunchpad/

MThree got a reaction from bluehash in DSP Libraries for CortexM3 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 MDKARM
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^311 to 2^641 words (1 to 64 bits wide)
1 to 64 bits generated in parallel
Order of magnitude faster than bit based approach, 310 cycles per whole word

MThree reacted to Rickta59 in Literature: Programming, Compiling, Linking ...Toolchains in general
http://www.linuxfromscratch.org/lfs/view/stable/chapter05/chapter05.html 
MThree reacted to bytesize in Code Composer Studio Stellaris "__attribute" has already been declared in the current scope
ooh I can help!
Make sure "Enable Support for GCC Extensions" box is checked.
Properties>Build>TMS470 Compiler>Language Options. Let me know!

MThree reacted to Rickta59 in Output MCO on GPIOA.8  STM32F0
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

MThree reacted to bluehash in Stellaris LM3S6950 CortexM3 WebRadio
The ARM WebRadio is an embedded Internet Radio based on an ARM CortexM3 LM3S6950 Microcontroller and VS1053 Audio Codec. The device can be powered through PoE (Power over Ethernet).
Source code and schematics at github.

MThree reacted to bluehash in Win a STM32F0Discovery 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/winstm32f0discovery

MThree reacted to bluehash in Stellaris Evalbot CortexM3 Kit 50% off at Avnet
Avnetexpress has the Stellaris Evalbot at 50% discount. Use coupon code
ARMSTELLARIS50 at checkout.
Enjoy!