设计了一个简易数字示波器,AD采样的配置用的是正点原子视频中的配置,即AD配置为 ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; 独立模式
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; /
/两次采样间隔5个时钟
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; / DMA不是能
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;
@正点原子 @
229382777@qq.co
ADC_CommonInit(&ADC_CommonInitStructure);
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Cmd(ADC1, ENABLE);
然后我的采样函数是
for(i=0;i<=400;i++) adcx=Get_Adc_Average(ADC_Channel_5,2);
其中
u16 Get_Adc_Average(u8 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
temp_val+=Get_Adc(ch);
return temp_val/times;
}
然后u16 Get_Adc_Average(u8 ch,u8 times)中的time为2,设的采样周期是3个时间周期,那么总的采样周期T=3+12+5=20个采样周期那么我的采样频率大概是1M,即1KHZ的信号我能采1000个点,但是我只采到大概两三百个点。求原因或者有没有更好的关于制作简易示波器中AD采样的配置,求大神可以指导一下我,谢谢了!
一周热门 更多>