STM32 ADC转换器、串口输出

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

文章目录

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

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

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.选用ADC1,

2.则时钟

c 复制代码
//1.开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
  1. 选定通道0


    引脚配置模式

通道和引脚对应关系

c 复制代码
	//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);

c 复制代码
	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.开启转换

c 复制代码
ADC_Cmd(ADC1, ENABLE);

5.等待转换完成

五、测试

1.引入库

代码如下(示例):

c 复制代码

2.读入数据

代码如下(示例):

c 复制代码
---

# 总结
相关推荐
zcmodeltech12 分钟前
沙盘模型控制系统STM32和PLC方案对比:选型逻辑与代码实现
stm32·嵌入式硬件·自动化
HQB202636 分钟前
EG11731|屹晶微电子 100V 内置功率管大电流同步降压 DC‑DC
嵌入式硬件·硬件工程
2501_922639581 小时前
率能半导体 SS6209L半桥MOSFET驱动器:28V/4A集成方案,覆盖电子烟、无线充电、半桥应用三大场景
单片机·嵌入式硬件·硬件工程
HQB20261 小时前
EG1192S|屹晶微电子 100V 内置 MOS 异步降压 DC‑DC(零功耗使能)
嵌入式硬件·硬件工程
沐欣工作室_lvyiyi1 小时前
基于单片机的货物物流轨迹监测系统设计(论文+源码)
单片机·嵌入式硬件·腾讯云·云平台·货物物流轨迹监测
zhangduang_KHKW1 小时前
ECC - Hamming Code 汉明码
单片机
Lxx_Zw2 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·stm32·单片机·嵌入式硬件
木子n13 小时前
车载以太网与SOME/IP服务化通信实战-05.UDP 还是 TCP:连接管理与超时账、队头阻塞的 200 ms 罚单与 198 节点重连风暴
单片机·tcp/ip·udp·车载以太网·some/ip
逐光者9334 小时前
四位加法器:从半加器到全加器的数字电路设计详解
嵌入式硬件
老当益壮梁奶奶4 小时前
驱动学习(二):从零开始:驱动工程搭建与字符设备驱动框架详解(基于IMX6ULL)
c语言·arm开发·驱动开发·嵌入式硬件·学习