基于STM32F10Xrbd的ADC详解.doc

上传人:飞****9 文档编号:130669947 上传时间:2020-04-30 格式:DOC 页数:18 大小:4.34MB
返回 下载 相关 举报
基于STM32F10Xrbd的ADC详解.doc_第1页
第1页 / 共18页
基于STM32F10Xrbd的ADC详解.doc_第2页
第2页 / 共18页
基于STM32F10Xrbd的ADC详解.doc_第3页
第3页 / 共18页
基于STM32F10Xrbd的ADC详解.doc_第4页
第4页 / 共18页
基于STM32F10Xrbd的ADC详解.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于STM32F10Xrbd的ADC详解.doc》由会员分享,可在线阅读,更多相关《基于STM32F10Xrbd的ADC详解.doc(18页珍藏版)》请在金锄头文库上搜索。

1、小杨之工信部之ADC模块首先我们对STM32F103RBT6有一个大致的片上功能了解,如下图:从此图可以看出该MCU有2个12位16通道的A/D转换器。我们了解STM32F103RBT6的ADC引脚特征,如下图:第一列为引脚号、第七列是主功能、最后一列是默认复用功能;ADC库函数分析:下面列出了ADC在内存中的映射地址值:下面是ST的官方库函数分析:一 单通道软件触发ADC,单模式,右对齐ADC配置:注意在使用ADC模块前,要注意AFIO的时钟域的使能。void ADC1_Init(void)GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef

2、 ADC_InitStructure;/*使能GPIOB时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);/*引脚配置 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);/*使能ADC1时钟*/RCC_APB2Periph

3、ClockCmd(RCC_APB2Periph_ADC2 , ENABLE);/*ADC1配置*/ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; /单模式/不启动外部触发ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;/数据右对齐ADC_InitStructure.A

4、DC_DataAlign = ADC_DataAlign_Right;/单通道,ADC12_IN8ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC2, &ADC_InitStructure);/*配置为ADC1 通道8为模拟量输入端*/ ADC_RegularChannelConfig(ADC2, ADC_Channel_8, 1, ADC_SampleTime_13Cycles5);/* Enable ADC1 */ADC_Cmd(ADC2, ENABLE);/* Enable ADC1 reset calibaration regist

5、er */ ADC_ResetCalibration(ADC2);/* Check the end of ADC1 reset calibration register */while(ADC_GetResetCalibrationStatus(ADC2);/* Start ADC1 calibaration */ADC_StartCalibration(ADC2);/* Check the end of ADC1 calibration */while(ADC_GetCalibrationStatus(ADC2);注意:单模式下,每执行一次软件触发,ADC进行采样一次。软件触发ADC转换,并

6、取出ADC寄存器当中的值:float ADC_Convert(void)u32 i = 0; u16 AD_value = 0; /* Start ADC1 Software Conversion */ ADC_SoftwareStartConvCmd(ADC2, ENABLE);/*等待ADC采样完成*/for (i=0;i0xffff;+i);/*从ADC数据寄存器当中取值*/ AD_value = ADC_GetConversionValue(ADC2);/*根据基准电压换算成电压值*/ return AD_value* V_REF /(0xfff);/注意:在进行电压值转换时,如果数据是右对齐,要执行AD_value* V_REF /(0xfff)二 单通道软件触发ADC,循环模式,左对齐ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; /循环模式注意:只要进行了一次软件触发,ADC模块会不断进行AD转换,我们要做的只要从规则数据寄存器当中取出值就行。注意在将取出值进行基准电压转换时:AD_value* V_REF /(0xfff0);三

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号