芯片复制模拟信号的采样使用了ADC1的第10通道,两次采样时间间隔为14个时钟周期,转换精度为12bit,ADC的触发时钟配置为TIM2输出,采样率为250HZ,通过DMA方式进行外设到内存数据传输,采用DMA乒乓结构进行数据存储和处理,也就是两路DMA轮流接收AD采样获得的数据当其中一路的数据缓冲区存满后切换到另一路继续存储,而期间进行对前一路缓冲区数据测滤波处理工作,芯片复制这样交替进行采样滤波可以很大的提高系统的工作速率。具体的采样过程如图4-3所示。
定时器配置PWM输出关键代码:
- TIM_TimeBaseStructure.TIM_Period = 400;
- TIM_TimeBaseStructure.TIM_Prescaler = 720 - 1;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- TIM_OCInitStructure.TIM_Pulse = 200;
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_Pulse = 200;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
- TIM_CtrlPWMOutputs(TIM2, ENABLE);
- (2)配置DMA外设到内存传输
- DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
- DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue;
- (3)用定时器配置ADC采样率
- ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2 ;
- //Timer触发
- ADC_ExternalTrigConvCmd(ADC1, ENABLE); //使用外部中断触发