#define ADC_BUF_SZ 320
-void adc_open(int fifo_sz);
+/* divisors for various sample rates */
+
+#define ADC_FS_16KHZ 5250
+#define ADC_FS_96KHZ 875
+
+void adc_open(int fs_divisor, int fifo_sz);
int adc1_read(short buf[], int n); /* ADC1 Pin PA1 */
int adc2_read(short buf[], int n); /* ADC2 Pin PA2 */
bufs = FS*REC_TIME_SECS/N;
printf("Starting!\n");
- adc_open(4*N);
+ adc_open(ADC_FS_16KHZ, 4*N);
for(i=0; i<bufs; i++) {
while(adc2_read(buf, N) == -1);
#include <stdlib.h>
#include <math.h>
#include "stm32f4_adc.h"
-#include "gdb_stdio.h"
-#include "stm32f4xx_gpio.h"
+#include "stm32f4_usb_vcp.h"
+#include "sm1000_leds_switches.h"
#define N (ADC_BUF_SZ*6)
int main(void){
short buf[N];
+ #ifdef TEST_TONE
float phase = 0.0;
float sam;
int i;
+ #endif
usb_vcp_init();
- adc_open(4*N);
+ adc_open(ADC_FS_96KHZ, 4*N);
sm1000_leds_switches_init();
/* set up test buffer, lets us test USB comms indep of ADC, record to a file
short buf[N];
float sd1, sd2;
- adc_open(2*N);
+ adc_open(ADC_FS_16KHZ, 2*N);
printf("Starting!\n");
while(1) {
int i;
dac_open(4*DAC_BUF_SZ);
- adc_open(4*ADC_BUF_SZ);
+ adc_open(ADC_FS_16KHZ, 4*ADC_BUF_SZ);
sm1000_leds_switches_init();
while (1) {
/* Set up ADCs/DACs */
dac_open(4*DAC_BUF_SZ);
- adc_open(4*ADC_BUF_SZ);
+ adc_open(ADC_FS_96KHZ, 4*ADC_BUF_SZ);
/* Set up FreeDV modem */
f = freedv_open(FREEDV_MODE_1600);
void adc_configure();
-static void tim2_config(void);
+static void tim2_config(int fs_divisor);
-void adc_open(int fifo_sz) {
+void adc_open(int fs_divisor, int fifo_sz) {
adc1_fifo = fifo_create(fifo_sz);
assert(adc1_fifo != NULL);
adc2_fifo = fifo_create(fifo_sz);
assert(adc2_fifo != NULL);
- tim2_config();
+ tim2_config(fs_divisor);
adc_configure();
init_debug_blinky();
}
}
-static void tim2_config(void)
+static void tim2_config(int fs_divisor)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* Time base configuration */
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
- TIM_TimeBaseStructure.TIM_Period = 5250;
+ TIM_TimeBaseStructure.TIM_Period = fs_divisor;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;