2023-01-04 10:30 AM
Hi everyone i'm new here with STM32 , I'm not really a programmer so I need some help.
my objective is generate sine wave with DMA DAC , I did that and I got my sine wave using FCLK with tim2 ( Iam using STM32F303K8 ) and now I want just to apply a delay for that sine wave for example 1ms on and 1ms off which mean 50% duty cycle , I read that I can apply another timer to create a delay with it , or directly call function HAL_Delay , thank you for your help
this is my code
#include "main.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#define NS 40
uint32_t Wave_LUT[NS] = {
1024,1184,1340,1489,1626,1748,1852,1936,1998,2035,2048,2035,1998,1936,1852,1748,
1626,1489,1340,1184,1024,864,708,559,422,300,196,112,50,13,0,13,
50,112,196,300,422,559,708,864,1024
};
DAC_HandleTypeDef hdac1;
DMA_HandleTypeDef hdma_dac_ch1;
TIM_HandleTypeDef htim2;
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
DAC_HandleTypeDef hdac1;
DMA_HandleTypeDef hdma_dac1_ch1;
TIM_HandleTypeDef htim1;
TIM_HandleTypeDef htim2;
DMA_HandleTypeDef hdma_tim1_ch4_trig_com;
DMA_HandleTypeDef hdma_tim2_up;
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_DAC1_Init(void);
static void MX_TIM2_Init(void);
static void MX_TIM1_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_DAC1_Init();
MX_TIM2_Init();
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1, (uint32_t*)Wave_LUT, NS, DAC_ALIGN_12B_R);
HAL_TIM_Base_Start(&htim2);
while (1)
{
}
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_DAC1_Init();
MX_TIM2_Init();
MX_TIM1_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
2023-01-05 07:40 AM
Hello @zraci.1 and welcome to the Community
You can find Here a complete tutorial of custom signal generation.
Thank you!
Sarra.
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
2023-01-05 07:46 AM
Not really explained very well.
Perhaps diagram the signals, input vs output.
The sample rate can be drive by TIM.
Could you achevie the delay by controlling the phase of the data that is output to the DAC.
2023-01-05 08:12 AM
Actually, I want to modulate my 100 kHz sinewave to 320 bits per second, and the modulated message has to be repeated 10 times. Basically, I want to reproduce that data signal .