From: drowe67 Date: Fri, 28 Aug 2015 04:14:43 +0000 (+0000) Subject: getting sensible plots from SFDR tests X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=dd73e1af41f236e4191f51f88a2450994b89f694;p=freetel-svn-tracking.git getting sensible plots from SFDR tests git-svn-id: https://svn.code.sf.net/p/freetel/code@2290 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/octave/adc_sfdr_ut.m b/codec2-dev/octave/adc_sfdr_ut.m new file mode 100644 index 00000000..c2363ed9 --- /dev/null +++ b/codec2-dev/octave/adc_sfdr_ut.m @@ -0,0 +1,28 @@ +% adc_sfdr_ut.m +% David Rowe Aug 2015 +% +% Processes data collected from STM32F4 or SFDR testing of ADC + +s = load_raw("~/stlink/adc.raw"); +Fs = 2E6; +N = 1024; +num_frames = length(s)/N; +h = hanning(N); +XdB = zeros(N/2,1); + +for i=1:num_frames + x = s((i-1)*N+1:i*N); + X = fft(x .* h); + XdB += 20*log10(abs(X(1:N/2))); +end + +XdB /= num_frames; +XdB -= max(XdB); + +figure(1) +plot((0:N/2-1)*Fs/(1000*N), XdB) +grid +ylabel('Amplitude dB') +xlabel('Frequency (kHz)'); +axis([0 Fs/(2*1000) -80 0]) + diff --git a/codec2-dev/stm32/Makefile b/codec2-dev/stm32/Makefile index 185cf412..ba9ceeb1 100644 --- a/codec2-dev/stm32/Makefile +++ b/codec2-dev/stm32/Makefile @@ -396,6 +396,7 @@ ADC_SFDR_UT_SRCS=\ src/adc_sfdr_ut.c \ gdb_stdio.c \ ../src/fifo.c \ +src/iir_tuner.c \ src/sm1000_leds_switches.c \ src/debugblinky.c \ src/system_stm32f4xx.c \ @@ -408,7 +409,7 @@ src/init.c \ src/stm32f4_adc_tuner.o: src/stm32f4_adc_tuner.c $(CC) $(CFLAGS) $^ -c -o $@ -adc_sfdr_ut.elf: $(TUNER_UT_SRCS) src/stm32f4_adc_tuner.o +adc_sfdr_ut.elf: $(ADC_SFDR_UT_SRCS) src/stm32f4_adc_tuner.o $(CC) $(CFLAGS) -O3 $^ -o $@ $(LIBPATHS) $(LIBS) $(OBJCOPY) -O binary adc_sfdr_ut.elf adc_sfdr_ut.bin diff --git a/codec2-dev/stm32/src/adc_sfdr_ut.c b/codec2-dev/stm32/src/adc_sfdr_ut.c index c8c8cdf3..2b3a1165 100644 --- a/codec2-dev/stm32/src/adc_sfdr_ut.c +++ b/codec2-dev/stm32/src/adc_sfdr_ut.c @@ -41,33 +41,41 @@ #include "../src/codec2_fm.h" #include "stm32f4xx.h" -#define REC_TIME_SECS 1 +#define BUFS 10 #define FS 2E6 -#define N (ADC_TUNER_BUF_SZ/2) +#define N 1024 extern int adc_overflow1; int main(void) { - short buf[N]; - int bufs, i; - FILE *fadc; - - ftuner = fopen("adc.raw", "wb"); - if (ftuner == NULL) { + unsigned short unsigned_buf[N]; + short buf[N]; + int sam; + int i, j, fifo_sz; + FILE *fadc; + + fadc = fopen("adc.raw", "wb"); + if (fadc == NULL) { printf("Error opening output file: adc.raw\n\nTerminating....\n"); exit(1); } - bufs = FS*REC_TIME_SECS/N; - fifo_sz = ADC_TUNER_N; - printf("Starting! bufs: %d %d\n", bufs, fifo_sz); + fifo_sz = ADC_TUNER_BUF_SZ; + printf("Starting! bufs: %d %d\n", BUFS, fifo_sz); adc_open(fifo_sz); adc_set_tuner_en(0); /* dump raw samples, no tuner */ sm1000_leds_switches_init(); - for (i=0; i