当前位置:首页 > 单片机 > 单片机
[导读] ADC:1.STM32内部的ADC模块有三个ADC1,ADC2,ADC3,他们彼此独立,所以可以进行同步采样。2ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生,要在RCC_CFGR配置,再ADC自己的寄存器中在没有时钟分频的

 

ADC:

1.STM32内部的ADC模块有三个ADC1,ADC2,ADC3,他们彼此独立,所以可以进行同步采样。

2ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生,要在RCC_CFGR配置,再ADC自己的寄存器中在没有时钟分频的配置位。

3.ADC转换时间: STM32F103xx增强型产,时钟为56MHz时为1μ s( 时钟为72MHz为1.17 μ s)

4.ADC的转换精度默认设置为12位,输入范围:ADC输入范围:V REF-≤ VIN≤ VREF+

5.共有18个通道,其中外部16个通道,内部两个通道,内部温度传感器连接在ADC1_IN16,内部参考电压V REFINT连接在ADC1_IN17
6.转换的启动方式:有外部触发,内部外设触发如TIMx,以及软件触发,一次触发转换一个组,软件使能方式通过设置ADC_CR2 寄存器的ADON。

7.两个组的概念,a.规则组:一般情况下使用的ADC转换序列;b.注入组,它的优先级高于规则组中的转换序列,当规则组正在转换的情况下,入股触发了注入组,他将会打断规则组正在进行的转换,知道注入组转换完成,再次会带规则则组转换。

8总的来说,规则转换的方式有两种,即连独立单次转换方式、间断一次启动转换n个通道,n可配置、连续不断地转换,知道知道设置了停止。连续加是扫描模式下,一次启动通道会在序列中逐个来回的转换,然而规则通道组只有一个数据寄存器ADCx_DR,因此下一次转换完成之前必须将上次转换的数据值读出,否则将会 被覆盖,这是一般会使能DMA请求,让每次数据刺激转换完成后产生EOC的同时,也产生DMA请求,DMA将DR中的数据传至存储器单元。

而单次转换模式下必须要每次完成之后查询EOC或利用中断将数据读出,然后再软件启动下一次转换,在这期间若要改变转换的序列也可以写入下次采集的通道。和以前使用AD的模式一样,但这样耗费时间。

间断模式,是在整个SQR寄存器组中通过设置n,一次制转换其中的几个,知道将这个序列转换完。暂时未用。

8.ADC的采样时间时刻配置的,在采样时间寄存器配置,一次转换所需要的时间TCONV= 采样时间+ 12.5 = 14 周期,12.5是转换周期。

9.有序数据只有12,不足16位,因此要设置第七方式,方便数据的提取,有注入组中能设置转换的品偏移量,即转换结果等于采样值减去偏移量的值,可能是负值,因此右对齐式,高位时符号位的扩展,规则组下高4位全部为0。

10.可以配置ADC转换的阀值,类似看门狗功能,ADC_HTR 和ADC_LTR寄存器分别配置上下限,不在这个范围内饰可以产生中断标志,用户可以选择进入中断。

11.外部触发模式,主要是外设的触发信号,TIM的中断时间来触发ADC的转换开始,达到控制采样时间的的目的,就不用如原来一样单独的写配置定时器中断。

12.双ADC使用,双ADC有很多中模式,最可能用到的就是双ADC规则同步转换方式,可查阅Datasheet来配置。

规则单次转换配置方式:

关闭CONT,关闭SCAN模式,设置n值等于1,ADC独立模式,初始化结构体基本上是这样。

然后向SQR组中的某个位置写入通道号,配置该通道的转换采样时间。

使能ADCx,比较重要的是在最后要进行ADC校准,否则可能不准,校准包括复位校准、AD校准,等待校准完成后才能开始转换。

每次转换完成查询EOC标志位,然后读取DR数据并且使能下一次转换,也可写入新的转换通道。

 

void Init_ADC()

{

ADC_InitTypeDef ADC_InitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

 

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

RCC_ADCCLKConfig(RCC_PCLK2_Div6);

GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

GPIO_Init(GPIOA, &GPIO_InitStructure);

 

GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

 

ADC_DeInit(ADC1);

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode = ENABLE; //这是使用连续扫描模式时

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = 2;

// ADC_InitStructure.ADC_ScanConvMode = DSIABLE;

// ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;

// ADC_InitStructure.ADC_NbrOfChannel = 1;

ADC_Init(ADC1, &ADC_InitStructure);

 

ADC_RegularChannelConfig(ADC1,ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 ); //

ADC_RegularChannelConfig(ADC1,ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 ); //

 

/* Enable ADC1 DMA */

ADC_DMACmd(ADC1, ENABLE);

 

 

/* Enable ADC1 */

ADC_Cmd(ADC1, ENABLE);

 

/* Enable ADC1 reset calibration register */

ADC_ResetCalibration(ADC1);

while(ADC_GetResetCalibrationStatus(ADC1))

{

;

}

 

/* Start ADC1 calibration */

ADC_StartCalibration(ADC1);

while(ADC_GetCalibrationStatus(ADC1))

{

;

}

}

读取函数:

 

void GetADValue()

{

// ADC_RegularChannelConfig(ADC1

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

系统设计师通常侧重于为应用选择最合适的数据转换器,在向数据转换器提供输入的时钟发生器件的选择上往往少有考虑。然而,如果不慎重考虑时钟发生器、相位噪声和抖动性能,数据转换器、动态范围和线性度性能可能受到严重的影响。

关键字: 时钟发生器 adc

专注于引入新品并提供海量库存的电子元器件分销商贸泽电子 (Mouser Electronics) 即日起开始备货TI TLV915x运算放大器和ADS7128 12位模数转换器 (ADC)。

关键字: 贸泽 adc 模数转换器

自然界产生的信号,都是模拟信号,比如我们说话的声音,看到的景色,感受到的温度、湿度、压力、流速、光、电、风及个人的呼吸、血压、体温、心跳、体重、血糖,体脂等等。这些模拟信号都得最终放在电脑,手机等数字领域进行处理,存储或...

关键字: adc 模拟信号

为增进大家对ADC的认识和了解,本文将基于两方面对ADC予以介绍:1.什么是并行ADC,并行ADC的基本原理是什么?2.流水线ADC与其它ADC有何区别。

关键字: adc 指数 流水线adc

ADC是电子电路中常用器件,大家对于ADC也较为熟悉。为增进大家对ADC的了解,本文将对高速ADC以及流水线ADC结构予以介绍。

关键字: adc 指数 流水线adc

ADC也即数模转换器,在现实中,ADC具备重要作用。对于ADC,电子相关专业的朋友想必相当熟悉。为增进大家对ADC的认识,本文将对管道ADC以及其原理予以介绍。

关键字: adc 指数 管道adc

设计人员有各种模数转换器(ADC)可以选择,数字数据输出类型是选择过程中需要考虑的一项重要参数。

关键字: 高速转换器 数字数据 adc

ADC包括三个基本功能:抽样、量化和编码。如何实现这三个功能,就决定了ADC的形式和性能。

关键字: 模数转换 adc

自然界产生的信号,都是模拟信号,比如我们说话的声音,看到的景色,感受到的温度、湿度、压力、流速、光、电、风及个人的呼吸、血压、体温、心跳、体重、血糖,体脂等。这些模拟信号都得最终放在电脑,手机等数字领域进行处理,存储或者...

关键字: adc 电源设计

在设计ADC电路时,一个常见的问题是“如何在过压条件下保护ADC输入”。那么,在过压情形中,可能出现哪些问题?发生的频率又是怎样的?有木有潜在的补救措施?

关键字: adc 电源设计
关闭
关闭