STM32F407笔记——ADC

学到ADC这一章节,是其业务应用的又一个新篇章
下面总结一下ADC的笔记
1.ADC也就是所谓的模数转换器,在STM32F407中有三个ADC,每个 ADC 有 12 位、 10 位、 8 位和 6 位可选,每个ADC 有 16 个外部通道。
2.ADC 具有独立模式、双重模式和三重模式,在使用时,这三种模式均可实现。
3.ADC的输入电压范围为0-3.3V,其IO分配表如下:
STM32F407笔记——ADC_第1张图片
4.ADC的通道分为规则通道和注入通道,我们平常所用就是规则通道。
5.触发源基本可以分为两种:外部触发EXTI或内部时钟触发
6.(1)ADC时钟:ADC 输入时钟 ADC_CLK 由 PCLK2 经过分频产生,最大值是 36MHz,典型值为30MHz,在F407中,ADC连接在APB2总线上,其时钟为84MHz,因此可以选择4分频,达到21MHz的ADC_CLK 时钟。
(2)采样时间:ADC 需要若干个 ADC_CLK 周期完成对输入的电压进行采样,其中采样周期最小是 3 个。
(3)ADC 的总转换时间:Tconv = 采样时间 + 12 个周期,一般我们设置 PCLK2=84MHz,经过 ADC 预分频器能分频到最大的时钟只能是 21M,采样周期设置为 3 个周期,算出最短的转换时间为 0.7142us。
7.数据寄存器
当采样完成后,将数据存放在哪里呢?规则组的数据寄存器 ADC_DR,这只适用于独立模式,低16位有效的32位寄存器。如何及时取走寄存器的数据防止被覆盖呢?主要有两种办法:(1)外部中断EOC(2)DMA传输,而使用最多的也就是DMA传输方法。
当选择双重、三重模式,可以选择用通用规则数据寄存器 ADC_CDR。

下面介绍ADC的的主要函数:
1.配置ADC(独立模式+单通道+中断)

//配置GPIO(独立模式+单通道)
static void Rheostat_ADC_GPIO_Config(void)//Rheostat ÒâΪ»¬¶¯±ä×èÆ÷
{
   
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_AHB1PeriphClockCmd(RHEOSTAT_ADC_GPIO_CLK, ENABLE);
	GPIO_InitStructure.GPIO_Pin = RHEOSTAT_ADC_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;	    
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; //²»ÉÏÀ­²»ÏÂÀ­
	GPIO_Init(RHEOSTAT_ADC_GPIO_PORT, &GPIO_InitStructure);		
}

//(中断方式)
static void Rheostat_ADC_Mode_Config(void)
{
   
	ADC_InitTypeDef ADC_InitStructure;
    ADC_CommonInitTypeDef ADC_CommonInitStructure;
	RCC_APB2PeriphClockCmd(RHEOSTAT_ADC_CLK , ENABLE);
	ADC_TempSensorVrefintCmd(ENABLE);
	//配置独立模式
 	ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
	//4分频
  	ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;
	//中断模式,DMA不使能 
  	ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
 	//随便配置(交替时才需要)
  	ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles;  
 	ADC_CommonInit(&ADC_CommonInitStructure);
 	/*------------------------------------------------------------------*/
	ADC_StructInit

你可能感兴趣的:(stm32,嵌入式)