static void DAC_Ch1_EscalatorConfig(void) { /*##-1- Initialize the DAC peripheral ######################################*/ if(HAL_DAC_Init(&DacHandle) != HAL_OK) { /* Initialization Error */ Error_Handler(); } /*##-1- DAC channel1 Configuration #########################################*/ sConfig.DAC_Trigger = DAC_TRIGGER_T6_TRGO; sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE; if(HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DACx_CHANNEL1) != HAL_OK) { /* Channel configuration Error */ Error_Handler(); } /*##-2- Enable DAC Channel1 and associated DMA #############################*/ if(HAL_DAC_Start_DMA(&DacHandle, DACx_CHANNEL1, (uint32_t*)aEscalator8bit, 6, DAC_ALIGN_8B_R) != HAL_OK) { /* Start DMA Error */ Error_Handler(); } }
/** * @brief DAC Channel 1 configuration * @param None * @retval None */ static void DAC_Ch1_Config(void) { static DAC_ChannelConfTypeDef sConfig; /*##-1- Initialize the DAC peripheral ######################################*/ if(HAL_DAC_Init(&DacHandle) != HAL_OK) { /* Error */ ErrorHandler(); } /*##-1- DAC channel1 Configuration #########################################*/ sConfig.DAC_Trigger = DAC_TRIGGER_T6_TRGO; sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE; if(HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DACx_CHANNEL1) != HAL_OK) { /* Channel configuration Error */ ErrorHandler(); } /*##-2- Enable DAC Channel1 and associeted DMA #############################*/ if(HAL_DAC_Start_DMA(&DacHandle, DACx_CHANNEL1, (uint32_t*)aSine12bit_Buffer, BUFFER_SIZE, DAC_ALIGN_12B_R) != HAL_OK) { /* Start DMA Error */ ErrorHandler(); } }
static void acquisition_start(void) { HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t*)&wave_buff, WAVE_BUFF_LEN, DAC_ALIGN_12B_R); HAL_ADC_Start_IT(&hadc2); HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&mic_buff, WAVE_BUFF_LEN); HAL_TIM_Base_Start(&htim2); HAL_TIM_Base_Start_IT(&htim3); }
mp_obj_t pyb_dac_write_timed(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kw_args) { pyb_dac_obj_t *self = args[0]; // parse args mp_arg_val_t vals[PYB_DAC_WRITE_TIMED_NUM_ARGS]; mp_arg_parse_all(n_args - 1, args + 1, kw_args, PYB_DAC_WRITE_TIMED_NUM_ARGS, pyb_dac_write_timed_args, vals); // get the data to write mp_buffer_info_t bufinfo; mp_get_buffer_raise(vals[0].u_obj, &bufinfo, MP_BUFFER_READ); // set TIM6 to trigger the DAC at the given frequency TIM6_Config(vals[1].u_int); __DMA1_CLK_ENABLE(); /* DMA_Cmd(self->dma_stream, DISABLE); while (DMA_GetCmdStatus(self->dma_stream) != DISABLE) { } DAC_Cmd(self->dac_channel, DISABLE); */ /* // DAC channel configuration DAC_InitTypeDef DAC_InitStructure; DAC_InitStructure.DAC_Trigger = DAC_Trigger_T7_TRGO; DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_TriangleAmplitude_1; // unused, but need to set it to a valid value DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; DAC_Init(self->dac_channel, &DAC_InitStructure); */ // DMA1_Stream[67] channel7 configuration DMA_HandleTypeDef DMA_Handle; DMA_Handle.Instance = self->dma_stream; // Need to deinit DMA first DMA_Handle.State = HAL_DMA_STATE_READY; HAL_DMA_DeInit(&DMA_Handle); DMA_Handle.Init.Channel = DMA_CHANNEL_7; DMA_Handle.Init.Direction = DMA_MEMORY_TO_PERIPH; DMA_Handle.Init.PeriphInc = DMA_PINC_DISABLE; DMA_Handle.Init.MemInc = DMA_MINC_ENABLE; DMA_Handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; DMA_Handle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; DMA_Handle.Init.Mode = vals[2].u_int; DMA_Handle.Init.Priority = DMA_PRIORITY_HIGH; DMA_Handle.Init.FIFOMode = DMA_FIFOMODE_DISABLE; DMA_Handle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_HALFFULL; DMA_Handle.Init.MemBurst = DMA_MBURST_SINGLE; DMA_Handle.Init.PeriphBurst = DMA_PBURST_SINGLE; HAL_DMA_Init(&DMA_Handle); if (self->dac_channel == DAC_CHANNEL_1) { __HAL_LINKDMA(&DAC_Handle, DMA_Handle1, DMA_Handle); } else { __HAL_LINKDMA(&DAC_Handle, DMA_Handle2, DMA_Handle); } DAC_Handle.Instance = DAC; DAC_Handle.State = HAL_DAC_STATE_RESET; HAL_DAC_Init(&DAC_Handle); if (self->state != 3) { DAC_ChannelConfTypeDef config; config.DAC_Trigger = DAC_TRIGGER_T6_TRGO; config.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE; HAL_DAC_ConfigChannel(&DAC_Handle, &config, self->dac_channel); self->state = 3; } HAL_DAC_Start_DMA(&DAC_Handle, self->dac_channel, (uint32_t*)bufinfo.buf, bufinfo.len, DAC_ALIGN_8B_R); /* // enable DMA stream DMA_Cmd(self->dma_stream, ENABLE); while (DMA_GetCmdStatus(self->dma_stream) == DISABLE) { } // enable DAC channel DAC_Cmd(self->dac_channel, ENABLE); // enable DMA for DAC channel DAC_DMACmd(self->dac_channel, ENABLE); */ //printf("DMA: %p %lu\n", bufinfo.buf, bufinfo.len); return mp_const_none; }