From: drowe67 Date: Sat, 23 Aug 2014 09:41:39 +0000 (+0000) Subject: dual channel ADC driver working X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=b72cedfeb3aae4c00203c1522bb5b259a17f89e8;p=freetel-svn-tracking.git dual channel ADC driver working git-svn-id: https://svn.code.sf.net/p/freetel/code@1817 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/stm32/Makefile b/codec2-dev/stm32/Makefile index 707c177b..21cf46ba 100644 --- a/codec2-dev/stm32/Makefile +++ b/codec2-dev/stm32/Makefile @@ -109,7 +109,7 @@ OBJS = $(SRCS:.c=.o) ################################################### -all: libstm32f4.a codec2_profile.elf fft_test.elf dac_ut.elf dac_play.elf adc_rec.elf pwm_ut.elf fdmdv_profile.elf sm1000_leds_switches_ut.elf sm1000.elf adcdac_ut.elf freedv_tx_profile.elf freedv_rx_profile.elf +all: libstm32f4.a codec2_profile.elf fft_test.elf dac_ut.elf dac_play.elf adc_rec.elf pwm_ut.elf fdmdv_profile.elf sm1000_leds_switches_ut.elf sm1000.elf adcdac_ut.elf freedv_tx_profile.elf freedv_rx_profile.elf adc_sd.elf dl/$(PERIPHLIBZIP): mkdir -p dl @@ -193,6 +193,20 @@ src/init.c adc_rec.elf: $(ADC_REC_SRCS) $(CC) $(CFLAGS) $^ -o $@ $(LIBPATHS) $(LIBS) +ADC_SD_SRCS=\ +src/adc_sd.c \ +../src/fifo.c \ +gdb_stdio.c \ +src/stm32f4_adc.c \ +src/stm32f4_dac.c \ +src/debugblinky.c \ +src/system_stm32f4xx.c \ +src/startup_stm32f4xx.s \ +src/init.c + +adc_sd.elf: $(ADC_SD_SRCS) + $(CC) $(CFLAGS) $^ -o $@ $(LIBPATHS) $(LIBS) + PWM_UT_SRCS=\ gdb_stdio.c \ src/stm32f4_pwm.c \ diff --git a/codec2-dev/stm32/src/adc_rec.c b/codec2-dev/stm32/src/adc_rec.c index f1a17cbf..dd59b11b 100644 --- a/codec2-dev/stm32/src/adc_rec.c +++ b/codec2-dev/stm32/src/adc_rec.c @@ -4,7 +4,18 @@ AUTHOR......: David Rowe DATE CREATED: 30 May 2014 - Records a 16 kHz sample rate raw file from the STM32F4 ADC Pin PA1. + Records a 16 kHz sample rate raw file from one of the ADC channels. + Note the semi-hosting system isn't fast enough to transfer 2 16 kHz + streams at once. + + ~/stlink$ sudo ./st-util -f ~/codec2-dev/stm32/adc_rec.elf + ~/codec2-dev/stm32$ ~/gcc-arm-none-eabi-4_7-2013q1/bin/arm-none-eabi-gdb adc_rec.elf + + (when finished) + $ play -r 16000 -s -2 ~/stlink/adc.raw + + adc1 -> "from radio" + adc2 -> "mic amp" \*---------------------------------------------------------------------------*/ @@ -28,31 +39,36 @@ #include #include "stm32f4_adc.h" #include "gdb_stdio.h" +#include "stm32f4xx_gpio.h" #define REC_TIME_SECS 10 #define N (ADC_BUF_SZ*6) #define FS 16000 +extern int adc_overflow1; +extern int adc_overflow2; + int main(void){ short buf[N]; - FILE *frec; + FILE *fadc; int i, bufs; - adc_open(2*N); - - frec = fopen("stm_out.raw", "wb"); - if (frec == NULL) { - printf("Error opening input file: stm_out.raw\n\nTerminating....\n"); + fadc = fopen("adc.raw", "wb"); + if (fadc == NULL) { + printf("Error opening input file: adc.raw\n\nTerminating....\n"); exit(1); } bufs = FS*REC_TIME_SECS/N; printf("Starting!\n"); + adc_open(4*N); + for(i=0; iODR = (1 << 0); @@ -207,15 +218,19 @@ void DMA2_Stream0_IRQHandler(void) { /* convert to signed */ - for(i=0; i