【微处理器系统原理和应用设计第十五讲】模拟/数字转换器

一、基础概念

1、概念

ADC将真实世界的例如温度、压力、声音或者图像等的模拟信号转换为更容易储存、处理和发射的数字形式。

2、分类

间接ADC:先将输入模拟电压转化为时间/频率等数字信号,例如双积分型ADC

直接ADC:直接转化为数字量,例如并联比较型,逐次逼近型ADC

3、ADC的处理

采样、保持、量化、编码

4、ADC的主要特点

ADC主要特点为采样率和位分辨率,采样率是ADC信号从模拟转换为数字的速度;位分辨率是ADC将信号从模拟转换为数字的精度。

5、DAC 模数转换器

一般使用DAC驱动电压,目前DAC主要用于波形生成领域

6、ADC的开关

通过在ADC_CR2寄存器上设置ADON位来上电,当第一次设置ADON时,它将ADC从power-down模式唤醒。

当设置SWSTART或者JSWSTART位开始转换

可以通过清除ADON位来停止转换并将ADC置于下电模式,这种模式下ADC几乎不消耗功率

7、温度传感器与VBAT内部共享连接在ADC1-IN18通道,一次只能选择一个转换器

8、ADC的常规应用的操作步骤

(1)使能ADC相关时钟

(2)指定ADC通道

(3)配置工作模式

(4)使能ADC

(5)进行模/数转换

二、功能需求

微处理器系统构成的测控设备通过USART串口与用户设备(上位机)相连。测控设备通过ADC1读取内置温度传感器,每隔1s获取一次芯片的内部温度,ADC1完成A/D转换,并将转换后的数字信号回传到上位机。

三、设计思路

管脚PA2和PA3分别为USART的TX和RX信号。ADC1选择内助温度通道,每隔1s软件触发一次单次转换,获取内部温度的数字信号后通过USART上传上位机。

四、代码实现

(1)ADC通道配置

配置ADC参数:ADC1转换通道采用内部温度传感器通道ADC_IN18,时钟源采用HCLK,利用软件触发,采用单次转换模式,转换精度为8bit,数据对齐方式为右对齐方式,

void AdcInit(void)
{
	RCC->APB2ENR|=1<<8; // 使能ADC1的时钟
	ADC->CCR|=(1<<23); // 使能内部温度传感器的参考电源
	ADC1->SMPR1|=0x7<<18; // 设置转换时间
	ADC1->SQR1&=~(0xF<<20); // 设置常规通道序列长度为1
	ADC1->SQR3=(ADC1->SQR3&~(0x1F))|18; // 设置常规通道0为ADC_IN18
	ADC1->CR1=(2<<24)|(1<<11); //设置常规转换为非连续模式,转换精度为8bit,通道数为1
	ADC1->CR2=1; //设置常规转换为单次模式,右对齐,非外部触发,使能ADC
}

(2)ADC启动函数

void AdcRun()
{
	ADC1->SR&=~2;
	ADC1->CR2|=1<<30; //开始A/D转换
	return;
}

(3)ADC数据获取函数

int AdcGet(unsigned char*pdat)
{
	if(!(ADC1->SR&2))
		return 0; // 未完成转换,返回失败
	*pdat=(unsigned char)ADC1->DR; // 转换完成,读取转换值
	return 1; //返回成功
	
}

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值