STM32f103的数电采集电路的ADC多通道采集程序

2017-09-12 15:35:42来源: eefocus 关键字:STM32f103  数电采集  ADC  多通道采集

STM32拥有1~3个ADC(STM32F101/102 系列只有1个ADC),这些ADC可以独立使用,也可以使用双重模式(提高采样率)。STM32 的ADC是12位逐次逼近型的模拟数字转换器。它有18个通道,可测量16个外部和2个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

ADC模数转换设置的一般步骤可以总结为如下几个步骤:

1.ADC时钟使能,GPIO 时钟使能

2.ADC复位

3.ADC端口模式设置

4.ADC参数初始化

5.开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)

6.使能ADC

7.编写中断处理函数

前端采集模块采用的单个ADC的多通道连续采样的工作模式。主要用于ECG心电信号的电压大小获取,并将获取值经行存储处理。经过考虑片上资源的分配优化和IO口设计,采用多通道同时采样可以视为滑动平均滤波器,可以平滑信号,达到去除噪声的效果,另一方面要保证IO口的数量和工作间隔时间,最终设计为4通道连续采样。前端采集模块采用了ADC1的通道4、5、6、7,并占用PA4、5、6、7的I/O口作为AD输入端,并采用DMA传输方式进行(详情请转至3.1.4)。这样的设计保证了ADC转换的时间不受主线程的干扰,同时保证了数据间隔时间是不变的,从而可以保证了从下至上的时序是不变的,最大的好处是保证了ADC的转换时间大大减少。

ADC多通道+DMA配置函数


  1. //初始化ADC1  

  2. //这里采用多通道连续采样,并用DMA1的通道传送  

  3. //我们默认将开启通道10~13  

  4. //相应管脚PC0~3  

  5. void Adc_Multi_Init(void)  

  6. {     

  7.     ADC_InitTypeDef ADC_InitStructure;   

  8.     GPIO_InitTypeDef GPIO_InitStructure;  

  9.   

  10.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1    , ENABLE );   //使能ADC1通道时钟  

  11.    

  12.   

  13.     RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M  

  14.   

  15.     //PA1 作为模拟通道输入引脚  

  16.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;  

  17.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;       //模拟输入引脚  

  18.     GPIO_Init(GPIOA, &GPIO_InitStructure);    

  19.   

  20.     ADC_DeInit(ADC1);  //复位ADC1,将外设 ADC1 的全部寄存器重设为缺省值  

  21.   

  22.     ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;  //ADC工作模式:ADC1和ADC2工作在独立模式  

  23.     ADC_InitStructure.ADC_ScanConvMode =ENABLE; //模数转换工作在扫描模式  

  24.     ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //模数转换工作在连续转换模式  

  25.     ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动  

  26.     ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  //ADC数据右对齐  

  27.     ADC_InitStructure.ADC_NbrOfChannel = 4; //顺序进行规则转换的ADC通道的数目  

  28.     ADC_Init(ADC1, &ADC_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器     

  29.   

  30.     ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_239Cycles5 );  

  31.     ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 2, ADC_SampleTime_239Cycles5 );  

  32.     ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 3, ADC_SampleTime_239Cycles5 );  

  33.     ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 4, ADC_SampleTime_239Cycles5 );  

  34.   

  35.     // 开启ADC的DMA支持(要实现DMA功能,还需独立配置DMA通道等参数)  

  36.     ADC_DMACmd(ADC1, ENABLE);  

  37.   

  38.     ADC_Cmd(ADC1, ENABLE);  //使能指定的ADC1  

  39.       

  40.     ADC_ResetCalibration(ADC1); //使能复位校准    

  41.        

  42.     while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束  

  43.       

  44.     ADC_StartCalibration(ADC1);  //开启AD校准  

  45.    

  46.     while(ADC_GetCalibrationStatus(ADC1));   //等待校准结束  

  47.    

  48.     ADC_SoftwareStartConvCmd(ADC1, ENABLE);     //使能指定的ADC1的软件转换启动功能  

  49.   

  50. }         

  51.   

  52.             

  53. //单次获得ADC值  

  54. //ch:通道值 0~3  

  55. u16 Get_Adc(u8 ch)     

  56. {  

  57.     u16 tempADC = 0;   

  58.       

  59.     while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束  

  60.     tempADC = ADC_GetConversionValue(ADC1);  

  61.       

  62.     //设置指定ADC的规则组通道,一个序列,采样时间  

  63.     ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );  //ADC1,ADC通道,采样时间为239.5周期                      

  64.     ADC_SoftwareStartConvCmd(ADC1, ENABLE);     //使能指定的ADC1的软件转换启动功能      

  65.   

  66.     return tempADC; //返回最近一次ADC1规则组的转换结果  

  67. }  


关键字:STM32f103  数电采集  ADC  多通道采集

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2017091234391.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32f103的数电采集电路的DMA设计和使用优化程序
下一篇:STM32与HC-SR04超声波测距

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
STM32f103
数电采集
ADC
多通道采集

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved