资源描述:
《AD采样的学习笔记.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、AD采样的学习笔记陈宏敏2013-5-251、STM32AD简介:STM32集成了12位ADC,是一种逐次逼近型模拟数字转换器。它有18个通道,可以测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。2、ADC主要特征:12位分辨率,从通道0到通道n自动扫描模式,自校准,通道之间采样间隔可编程,ADC转换时间STM32F103xx增强型产品:ADC时钟为56MHz时为1us(ADC时钟为72MHz为1.17us),供电电压是2.7V到3.3V。ADC输入范围:VREF-<=VIN<=V
2、REF+。3、下面通过实际例子说明:voidADC1_Configuration(void){ADC_InitTypeDefADC_InitStructure;ADC_DeInit(ADC1);//将外设ADC1的全部寄存器重设为缺省值/*ADC1设置------------------------------------------------------*/ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC1工作在独立模式ADC_InitStructure.ADC_ScanConvMode=ENABLE;//ADC多通
3、道扫描模式ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//ADC模数转换工作在连续模式ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//外部触发模式由软件来触发ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//数据右对齐ADC_InitStructure.ADC_NbrOfChannel=ADCNO;//ADC通道数8个通道ADC_Init(ADC1,&ADC_InitStructure
4、);//设置指定ADC的规则组通道,设置它们的转化顺序和采样时间//ADC1,ADC通道x,规则采样顺序值y,采样时间为55.5周期ADC_RegularChannelConfig(ADC1,ADC_Channel_4,FSY+1,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_5,TGGZ+1,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_6,XHWD+1,ADC_SampleTime_55Cycle
5、s5);ADC_RegularChannelConfig(ADC1,ADC_Channel_7,DJDY+1,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_8,BCXDY+1,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_9,XQWD+1,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_14,DCDY+1,ADC_
6、SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_15,ABXDY+1,ADC_SampleTime_55Cycles5);ADC_DMACmd(ADC1,ENABLE);//使能ADC的DMA请求ADC_Cmd(ADC1,ENABLE);//使能指定的ADC1ADC_ResetCalibration(ADC1);//复位指定的ADC1的校准寄存器while(ADC_GetResetCalibrationStatus(ADC1));//获取ADC1复位校准寄存器的状态,设置状态等待ADC_StartC
7、alibration(ADC1);//开始指定ADC1的校准状态while(ADC_GetCalibrationStatus(ADC1));//获取指定ADC1的校准程序,设置状态等待ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能ADC1的软件转换启动功能}1、AD值计算:voidAnalyse_Data(void){u16vTemp=0,NRT=0,k=0;uirec_counter++;if(uirec_counter==10000){uirec_c