STM32 | ADC+RS485(第十天)

news/2024/9/23 19:48:10/

点击上方"蓝字"关注我们

01、ADC概述

ADC, Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号.例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。模/数转换器可以实现这个功能,在各种不同的产品中都可以找到它的身影。

模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,或在一段连续的时间间隔内,其代表信息的特征量可以在任意瞬间呈现为任意数值的信号。

数字信号指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示。

ADC转换步骤

1、采样:在时间轴上对信号数字化。也就是,按照固定的时间间隔抽取模拟信号的值,这样,采样后就可以使一个时间连续的信息波变为在时间上取值数目有限的离散信号。

2、量化:在幅度轴上对信号数字化。也就是,用有限个幅度值近似还原原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。

3、编码:用二进制数表示每个采样的量化值(十进制数)。

02、ADC

STM32F407ZET6有3个ADC,每个ADC有12位、10位、8位和6位可选,每个ADC有16个外部通道。另外还有两个内部ADC源和VBAT通道挂在ADC1上。ADC具有独立模式、双重模式和三重模式,对于不同AD转换要求几乎都有合适的模式可选。ADC功能非常强大,具体的我们在功能框图中分析每个部分的功能。

ADC框架

规则通道

规则通道:顾名思意,规则通道就是很规矩的意思,我们平时一般使用的就是这个通道,或者应该说我们用到的都是这个通道,没有什么特别要注意的可讲。

注入通道

注入,可以理解为插入,插队的意思,是一种不安分的通道。它是一种在规则通道转换的时候强行插入要转换的一种。如果在规则通道转换过程中,有注入通道插队,那么就要先转换完注入通道,等注入通道转换完成后,再回到规则通道的转换流程。这点跟中断程序很像,都是不安分的主。所以,注入通道只有在规则通道存在时才会出现。

规则序列

规则序列寄存器有3个,分别为SQR3、SQR2、SQR1。SQR3控制着规则序列中的第一个到第六个转换,对应的位为:SQ1[4:0]~SQ6[4:0],第一次转换的是位4:0 SQ1[4:0],如果通道16想第一次转换,那么在SQ1[4:0]写16即可。SQR2控制着规则序列中的第7到第12个转换,对应的位为:SQ7[4:0]~SQ12[4:0],如果通道1想第8个转换,则SQ8[4:0]写1即可。SQR1控制着规则序列中的第13到第16个转换,对应位为:SQ13[4:0]~SQ16[4:0],如果通道6想第10个转换,则SQ10[4:0]写6即可。具体使用多少个通道,由SQR1的位L[3:0]决定,最多16个通道。

03、ADC采集步骤过程

ADC采集需要添加的库函数文件:stm32f4xx_adc.c

(1)理解电路原理图

可调电阻连接在PA5

ADC12_IN5

(2)、开启PA口时钟和ADC1时钟,设置PA5为模拟输入。

RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);  GPIO_Init();  

3)、初始化ADC_CCR寄存器。

ADC_CommonInit();

(4)、初始化ADC1参数,设置ADC1的工作模式以及规则序列的相关信息。

void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);

(5)、使能ADC。

ADC_Cmd(ADC1, ENABLE);

(6)、配置规则通道参数:

ADC_RegularChannelConfig();

(7)、开启软件转换:ADC_SoftwareStartConv(ADC1);

(8)、等待转换完成,读取ADC值。

ADC_GetConversionValue(ADC1);

04、RS485

1、RS485概述


http://www.ppmy.cn/news/1507412.html

相关文章

【网络安全】https协议的加密方案避免中间人攻击(MITM攻击)导致的数据泄露风险

目录 引言 概念准备 中间人 加密 数据摘要 && 数据指纹 数字签名 密钥加密 中间人攻击 CA证书 https加密的解决方案 个人主页:东洛的克莱斯韦克-CSDN博客 引言 http在应用层协议中是明文传输协议,它是通信双方传输数据时的一种约定。【…

Python学习笔记(六)

""" 演示对序列进行切片操作 """ # 切片;从一个序列中,取出一个子序列 # 语法[起始下标:结束下标:步长] # 这三个都不写也行,视为从头到尾步长为1 # 起始下标不写,视作从头开…

缓冲区溢出攻击示例

一、缓冲区溢出攻击原理 缓冲区溢出攻击是利用 缓冲区溢出漏洞 所进行的攻击行动。 缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛 存在 。 利用缓冲区溢出攻击,可以导致程序 运行 失败、系统关机、重新启动等后果。 缓冲区…

Python 常用内置函数

目录 1、enumerate函数 1.1、for循环中使用 1.2、enumerate指定索引的起始值 1.3、enumerate在线程中的作用 2、Map 函数 2.1、map()函数可以传多个迭代器对象 3、lambda表达式(匿名函数) 示例 4、sort函数和sorted函数 4.1、sort()函数 4.2、…

《机器学习by周志华》学习笔记-决策树-03

1、连续值处理 到目前为止,我们在决策树01、02中仅讨论了基于离散属性来生成决策树,而现实任务中常会遇到连续属性,所以在本章的学习中,我们将会讨论如何在决策树学习中使用连续属性。 1.1、概念 取值范围是连续的实数值或者整数值的属性就是「连续属性」,与离散属性相对…

kafka+zookeeper教程

1. 环境准备 环境准备 10.0.0.101&#xff0c;10.0.0.102&#xff0c;10.0.0.103&#xff0c; 101上做到102&#xff0c;103的免密登录 #为了方便执行命令和传输文件&#xff0c;这里先在101创建2个脚本 ]# cat > /usr/bin/data-rsync.sh <<EOF #!/bin/bash [ $# -ne…

cad文字转arcgis注记

cad中文字转为arcgis注记&#xff0c;步骤如下&#xff1a; 1、将dwg文件下annotation文件加到图层中 2、文件点击右键&#xff0c;转换地理数据库注记 3、 导入默认地理数据库中&#xff0c;或自己新建地理数据库&#xff0c;起个文件名、点确定&#xff08;注意&#xff1a…

【HarmonyOS NEXT星河版开发学习】小型测试案例15-博客列表

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面&#xff08;暂未发布&#xff09; 前言 该案例主要是ForEach渲染的练习&#xff0c;ForEach可以基于数组的个数&#xff0c;渲染组件个数&#xff08;简化代码&#xff09; 在…