|
本帖最后由 Conice 于 2023-5-7 23:58 编辑
采集20kHz和18kHz交错的波形,想用360kHz的采样率去采样。采用TIM7产生360kHz的更新事件触发ADC,并采用DMA(选择normal模式)搬运到含有180个元素的数组中,想每搬运完一次,打印一次数据。现在打印出来的数据中前90个数是正弦波,后90个数全是0,请大神帮忙看一下代码。万分感谢!
int main(void)
{
/* USER CODE BEGIN 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_ADC1_Init();
MX_TIM7_Init();
MX_DAC1_Init();
MX_TIM6_Init();
MX_USART2_UART_Init();
MX_TIM4_Init();
/* USER CODE BEGIN 2 */
/* 对数组进行处理,防止载波信号底部失真 */
for (uint16_t Idx=0; Idx<100; Idx++)
{
sin_12bit[Idx]=sin_12bit[Idx]*8/10+500;
}
/* 开启TIM6,触发DAC */
HAL_TIM_Base_Start(&htim6);
/* 开启TIM7,触发ADC采样 */
HAL_TIM_Base_Start(&htim7);
HAL_DAC_Start_DMA(&hdac1,DAC1_CHANNEL_1,(uint32_t*)sin_12bit,100,DAC_ALIGN_12B_R);
HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED);
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC_ConvertedValue, LENGTH);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(flag==1)
{
for(int i=0; i<LENGTH; i++)
{
printf("%d, %d\r\n", i, ADC_ConvertedValue);
}
HAL_TIM_Base_Start(&htim7); //重新启动定时器7
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC_ConvertedValue, LENGTH); //重新开始下一轮采集
flag=0;
}
}
/* USER CODE END 3 */
}
/* 下面是DMA1_Channel1中断函数的代码*/
void DMA1_Channel1_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
/* USER CODE END DMA1_Channel1_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_adc1);
/* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
/******************************************************************************/
HAL_TIM_Base_Stop(&htim7);//定时器7停止
HAL_ADC_Stop_DMA(&hadc1);//停止ADC的DMA传输
flag=1;//标志位置1,表示本次采样结束
/******************************************************************************/
}
[/mw_shl_code]
|
-
DAC产生波形(被采样的波形)
-
采样后的波形
|