From 86608c6770cf08c138a2bdab5855072f64be09ef Mon Sep 17 00:00:00 2001 From: joshua Date: Sat, 30 Dec 2023 23:54:31 -0500 Subject: initial commit --- Core/Src/main.c | 707 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 707 insertions(+) create mode 100644 Core/Src/main.c (limited to 'Core/Src/main.c') diff --git a/Core/Src/main.c b/Core/Src/main.c new file mode 100644 index 0000000..bc7e67c --- /dev/null +++ b/Core/Src/main.c @@ -0,0 +1,707 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "AD9851.h" +#include "Si5351A-RevB-Registers.h" +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +#define NS 1000 +#define FULL_BUF_SIZE 256 +#define HALF_BUF_SIZE FULL_BUF_SIZE / 2 +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +ADC_HandleTypeDef hadc1; +ADC_HandleTypeDef hadc2; +DMA_HandleTypeDef hdma_adc1; +DMA_HandleTypeDef hdma_adc2; + +DAC_HandleTypeDef hdac1; +DMA_HandleTypeDef hdma_dac1_ch2; + +I2C_HandleTypeDef hi2c1; + +UART_HandleTypeDef huart1; + +/* USER CODE BEGIN PV */ +volatile uint32_t adc_val[FULL_BUF_SIZE]; +volatile uint32_t dac_val[FULL_BUF_SIZE]; + +uint32_t* in_buf_ptr; +uint32_t* out_buf_ptr; +uint32_t out_out_ptr = 0; + +int flag = 0; + +/* FIR filter designed with +http://t-filter.appspot.com + +sampling frequency: 200000 Hz + +* 0 Hz - 16000 Hz + gain = 1 + desired ripple = 5 dB + actual ripple = 0 dB + +*/ + +#define FILTER_TAP_NUM 5 + +static double filter_taps[FILTER_TAP_NUM] = { + -4.4408920985006264e-17, + 4.4408920985006264e-17, + 1, + 4.4408920985006264e-17, + -4.4408920985006264e-17 +}; + +float afilter_taps[FILTER_TAP_NUM]; + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +void PeriphCommonClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_DMA_Init(void); +static void MX_ADC2_Init(void); +static void MX_DAC1_Init(void); +static void MX_I2C1_Init(void); +static void MX_ADC1_Init(void); +static void MX_USART1_UART_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +uint32_t fir(uint32_t in); + +void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc) { + //first half of adc buffer is full + in_buf_ptr = &adc_val[0]; + out_buf_ptr = &dac_val[HALF_BUF_SIZE];// + HALF_BUF_SIZE; + + for (int i=0;i