STM32 ADC转换器、串口输出

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、ADC是什么?
  • 二、STM32的ADC
    • 2.1 认识STM32 ADC
    • 2.2转换方式
    • 2.3 为什么要校准?
    • 2.4 采样时间计算
    • 2.5 触发方式
    • 2.6 多通道采集解决方案
    • 2.7 提高ADC采样时间的方法
  • 三、如何使用STM32的ADC
    • 3.1. 使用哪个ADC
    • 3.2. 电压基准
    • 3. 3使用什么通道
    • 3.4. 用什么规则
    • 3.5. 时钟来源,配置最大吗?14Mhz
    • 3.6. 如何触发,软件还是硬件
    • 3.7.是否中断 ,读取数据
  • 四、编程步骤
    • 4.1大概步骤
      • 4.1.1 开时钟
      • 4.1.2 配置gpio
      • 4.1.3 初始化ADC_init()
      • 4.1.4 开启转换
      • 4.1.5 等待转换完成
      • 4.1.6 读取转换数据
      • 4.1.7 串口输出显示电压,模拟电压和数字电压
    • 4.2 具体举例:
  • 五、测试
    • 1.引入库
    • 2.读入数据


前言

提示:这里可以添加本文要记录的大概内容:
在工程应用中,除了对数字信号进行处理,常常还要处理模拟信号,这个时候就要用到模拟转换器,也就是模拟信号转换成数字信号的器件。
比如,设置一个比较器,电压低于1v,就输出3.3v,电压高于1v,就输出0v。这个就是我们常见到的一位模数转换器

什么是比较器

快速上手双电压比较器LM393,并制作巡线小车和传感器模块无需单片机【IC原来如此】

https://www.bilibili.com/video/BV1q54y1Z7uU/?spm_id_from=333.337.search-card.all.click


提示:以下是本篇文章正文内容,下面案例可供参考

一、ADC是什么?

ADC 是 Analog-to-Digital Converter 的缩写,意思是模/数转换器或者模数转换器。它是将连续变化的模拟信号转换为离散的数位讯号的器件。这种转换器可以将真实世界的模拟信号,如温度、压力、声音或者图像等,转换成更容易储存、处理和发射的数字形式。

将引用B站大神的作品进行介绍

ADC——模数转换器的基础知识和几个常见类型

https://www.bilibili.com/video/BV1rL411U77J/?spm_id_from=333.337.search-card.all.click

模数转换框图
STM32 ADC转换器、串口输出_第1张图片
STM32 ADC转换器、串口输出_第2张图片

STM32 ADC转换器、串口输出_第3张图片
STM32 ADC转换器、串口输出_第4张图片

STM32 ADC转换器、串口输出_第5张图片
STM32 ADC转换器、串口输出_第6张图片

STM32 ADC转换器、串口输出_第7张图片

STM32 ADC转换器、串口输出_第8张图片
STM32 ADC转换器、串口输出_第9张图片

二、STM32的ADC

STM32中的ADC是12位逐次逼近型ADC,最快转换速度大约1us。

2.1 认识STM32 ADC

STM32 ADC转换器、串口输出_第10张图片
STM32 ADC转换器、串口输出_第11张图片
STM32 ADC转换器、串口输出_第12张图片

STM32 ADC转换器、串口输出_第13张图片
STM32 ADC转换器、串口输出_第14张图片

STM32 ADC转换器、串口输出_第15张图片
STM32 ADC转换器、串口输出_第16张图片

2.2转换方式

STM32 ADC转换器、串口输出_第17张图片

STM32 ADC转换器、串口输出_第18张图片
STM32 ADC转换器、串口输出_第19张图片

2.3 为什么要校准?

STM32 ADC转换器、串口输出_第20张图片

2.4 采样时间计算

STM32 ADC转换器、串口输出_第21张图片

2.5 触发方式

STM32 ADC转换器、串口输出_第22张图片

2.6 多通道采集解决方案

STM32 ADC转换器、串口输出_第23张图片

2.7 提高ADC采样时间的方法

STM32 ADC转换器、串口输出_第24张图片

三、如何使用STM32的ADC

3.1. 使用哪个ADC

3.2. 电压基准

3. 3使用什么通道

3.4. 用什么规则

3.5. 时钟来源,配置最大吗?14Mhz

3.6. 如何触发,软件还是硬件

3.7.是否中断 ,读取数据

四、编程步骤

4.1大概步骤

4.1.1 开时钟

4.1.2 配置gpio

4.1.3 初始化ADC_init()

4.1.4 开启转换

4.1.5 等待转换完成

4.1.6 读取转换数据

4.1.7 串口输出显示电压,模拟电压和数字电压

4.2 具体举例:

1.选用ADC1,
2.则时钟
STM32 ADC转换器、串口输出_第25张图片

//1.开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
  1. 选定通道0
    STM32 ADC转换器、串口输出_第26张图片
    STM32 ADC转换器、串口输出_第27张图片
    引脚配置模式
    在这里插入图片描述

通道和引脚对应关系
STM32 ADC转换器、串口输出_第28张图片

	//1.开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA,ENABLE);
	//2.配置引脚   PA0为模拟输入
	
	GPIO_InitStruct.GPIO_Pin=  GPIO_Pin_0;          //TX
	GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
	
	GPIO_Init(GPIOA, &GPIO_InitStruct);   //&x

3.初始化adc

ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);

STM32 ADC转换器、串口输出_第29张图片

STM32 ADC转换器、串口输出_第30张图片

	ADC_InitStruct.ADC_ContinuousConvMode= DISABLE;
	ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
	ADC_InitStruct.ADC_ExternalTrigConv=  ADC_ExternalTrigConv_None;
	ADC_InitStruct.ADC_Mode= ADC_Mode_Independent;
	ADC_InitStruct.ADC_NbrOfChannel= 1;
	ADC_InitStruct.ADC_ScanConvMode= DISABLE;
	ADC_Init(ADC1,  &ADC_InitStruct);

4.开启转换

ADC_Cmd(ADC1, ENABLE);

5.等待转换完成

五、测试

1.引入库

代码如下(示例):


2.读入数据

代码如下(示例):



---

# 总结

你可能感兴趣的:(STM32,学习教程,stm32,嵌入式硬件,单片机)