STM32之ADC-模数转换

1、 ADC简介
STM32F103系列有3个ADC,精度为12位,ADC是一个逐次逼近型模拟数字转换器,且每个ADC有18个通道,可以测量16个外部和2个内部信号源,每个通道的A/D转换可以进行单次、连续、扫描或间断模式执行,ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中,ADC的输入时钟不得超过14MHZ,否则可能不准。也就是说,如果按照默认设置PCLK2为72MHz,此时应为6分频或者8分频,见图1.1。
在这里插入图片描述
图1.1
2、 ADC主要特征
(1)12位分辨率(精度)
(2)转换结束、注入转换结束和发生模拟看门狗事件时产生中断
(3)单次和连续转换模式
(4)从通道0到通道n的自动扫描模式
(5)自校准
(6)带内嵌数据一致性的数据对齐
(7)采样间隔可以按通道分别编程
(8)规则转换和注入转换均有外部触发选项
(9)间断模式
(10)双重模式
(11)ADC供电要求:2.4V到3.6V
(12)ADC输入范围:VREF-<=VIN<=VREF+
(13)规则通道转换期间有DMA请求产生
3、 通道选择
有16个多路通道。可以把转换组织成两组:规则组和注入组。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。
(1)规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规 则组中转换的总数应写入ADC_SQR1寄存器的L[3:0]位中。
(2)注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目应写入ADC_JSQR寄存器的L[1:0]位中。
4、ADC寄存器配置举例

void Adc_config(void)
{
	RCC->APB2ENR |=(0x01<<2);//开启PA端口时钟
	RCC->APB2ENR |=(0x01<<9);//开启ADC1时钟
	RCC->CFGR |=(0x01<<15);//ADC预分频为6分频
	GPIOA->CRL &=~(0x0f<<4);//PA1设置为模拟输入模式
	GPIOA->CRL &=~(0x0f<<8);//PA2设置为模拟输入模式
	GPIOA->CRL &=~(0x0f<<12);//PA3设置为模拟输入模式
	ADC1->SMPR2 |=(0x03<<3);//通道1(PA1的通道)的采样时间为011(28.5周期)
	ADC1->SMPR2 |=(0x03<<6);//通道2(PA2的通道)的采样时间为011(28.5周期)
	ADC1->SMPR2 |=(0x03<<9);//通道3(PA3的通道)采样时间配置为28.5个周期
	ADC1->CR1 |=(0x01<<8);//使用扫描模式
	ADC1->CR2 |=(0x01<<20);//使用外部事件启动转换
	ADC1->CR2 |=(0x07<<17);
	ADC1->CR2 &=~(0x01<<11);//数据对齐模式为:右对齐
	ADC1->CR2 |=(0x01<<1);//设置为连续模式
	ADC1->SQR1 |=(0x02<<20);//三个转换
	ADC1->SQR3 |=(0x03<<0);//第一个转换为3通道
	ADC1->SQR3 |=(0x02<<5);//第二个转换为2通道
	ADC1->SQR3 |=(0x01<<10);//第三个转换为1通道
	ADC1->CR2 |=(0x01<<0);//开启ADC并启动转换
	ADC1->CR2 |=(0x01<<3);//初始化校准
	while(ADC1->CR2 & (0x01<<3));//等待初始化校准完成
	ADC1->CR2 |=(0x01<<2);//开启校准
	while(ADC1->CR2 & (0x01<<2));//等待校准完成
	ADC1->CR2 |=(0x01<<22);//开始转换规则通道
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值