ADC

7 篇文章 1 订阅
订阅专栏

STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。 它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫 描或间断模式执行。ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看 门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。

我们选择的 STM32F103ZET 包含有 3 个 ADC
STM32 的 ADC 最大的转换速率为 1Mhz,也就是转换时间为 1us(在 ADCCLK=14M,采样周期 为 1.5 个 ADC 时钟下得到),不要让 ADC 的时钟超过 14M,否则将导致结果准确度下降。
STM32 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。
规则通道相当于你正 常运行的程序,而注入通道呢,就相当于中断。
在你程序正常执行的时候,中断是可以打断你 的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之 后,规则通道才得以继续转换。
ADC主要特征
● 12位分辨率
● 转换结束、注入转换结束和发生模拟看门狗事件时产生中断
● 单次和连续转换模式
● 从通道0到通道n的自动扫描模式
● 自校准 ● 带内嵌数据一致性的数据对齐
● 采样间隔可以按通道分别编程
● 规则转换和注入转换均有外部触发选项 ● 间断模式
● 双重模式(带2个或以上ADC的器件)
● ADC转换时间:
─ STM32F103xx增强型产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)
─ STM32F101xx基本型产品:时钟为28MHz时为1μs(时钟为36MHz为1.55μs) ─ STM32F102xxUSB型产品:时钟为48MHz时为1.2μs
─ STM32F105xx和STM32F107xx产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)
● ADC供电要求:2.4V到3.6V
● ADC输入范围:VREF- ≤ VIN ≤ VREF+
● 规则通道转换期间有DMA请求产生。
对于每个要转换的通道,采样时间建议尽量长一点,以获得较高的准确度,但是这样会降 低 ADC 的转换速率。ADC 的转换时间可以由以下公式计算: Tcovn=采样时间+12.5 个周期
其中:Tcovn 为总转换时间,采样时间是根据每个通道的 SMP 位的设置来决定的。例如, 当 ADCCLK=14Mhz 的时候,并设置 1.5 个周期的采样时间,则得到:Tcovn=1.5+12.5=14 个周 期=1us。
###ADC设置步骤

  1. 开启IO口和ADC时钟设置GPIO口的工作模式模式

使能 GPIO 和 ADC 时钟用 RCC_APB2PeriphClockCmd 函 数,设置 IO 口的工作方式,使用 GPIO_Init 函数即可。
STM32F103ZET6 ADC通道和GPIO口的对应表
在这里插入图片描述

  1. 复位ADC,同时设置分频因子

ADC 时钟复位的方法是:
ADC_DeInit(ADC1);
这个函数非常容易理解,就是复位指定的 ADC。
分频因子要确保 ADC1 的时钟(ADCCLK) 不要超过 14Mhz。 这个我们设置分频因子位 6,时钟为 72/6=12MHz,库函数的实现方法是: RCC_ADCCLKConfig(RCC_PCLK2_Div6);

  1. 初始化 ADC 参数,设置 ADC 的工作模式以及规则序列的相关信息。

设置分频因子之后,我们就可以开始 ADC的模式配置了,设置单次转换模式、触发 方式选择、数据对齐方式等都在这一步实现。同时,我们还要设置 ADC 规则序列的相关信息,
这些在库函数 中是通过函数 ADC_Init 实现的,下面我们看看其定义: void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
从函数定义可以看出,第一个参数是指定 ADC 号。这里我们来看看第二个参数,跟其他外设 初始化一样,同样是通过设置结构体成员变量的值来设定参数。
typedef struct
{
uint32_t ADC_Mode; //工作模式
FunctionalState ADC_ScanConvMode; //是否开启扫描
FunctionalState ADC_ContinuousConvMode; //转换模式
uint32_t ADC_ExternalTrigConv; //触发方式
uint32_t ADC_DataAlign; //数据对齐方式
uint8_t ADC_NbrOfChannel; //顺序进行规则转换的ADC通道的数目
}ADC_InitTypeDef;
参数 ADC_Mode 故名是以是用来设置 ADC 的模式。前面讲解过,ADC 的模式非常多,包括独 立模式,注入同步模式等等,
参数 ADC_ScanConvMode 用来设置是否开启扫描模式,因为是单次转换,这里我们选择不开 启值 DISABLE 即可。
参数 ADC_ContinuousConvMode 用来设置是否开启连续转换模式,因为是单次转换模式,所以 我们选择不开启连续转换模式,DISABLE 即可
参数 ADC_ExternalTrigConv 是用来设置启动规则转换组转换的外部事件,这里我们选择软件触 发,选择值为 ADC_ExternalTrigConv_None 即可
参数 DataAlign 用来设置 ADC 数据对齐方式是左对齐还是右对齐,这里我们选择右对齐方式 ADC_DataAlign_Right
参数 ADC_NbrOfChannel 用来设置规则序列的长度,这里我们是单次转换,所以值为 1即可。 初始化范例
触发方式:
如果想周期性的采集信号,那就用定时器触发;如果想不定时任意时刻的采集信号,那就用软件触发;如果想让外部信号在特定情况下被采集,那就用外部触发。

  1. 使能 ADC 并校准。
    就使能 AD 转换器,执行复位校准和 AD 校准,注意这两步 是必须的!不校准将导致结果很不准确
    使能指定的 ADC 的方法是:
    ADC_Cmd(ADC1, ENABLE); //使能指定的 ADC1
    执行复位校准的方法是: ADC_ResetCalibration(ADC1);
    执行 ADC 校准的方法是:
    ADC_StartCalibration(ADC1); //开始指定 ADC1 的校准状态
    记住,每次进行校准之后要等待校准结束。这里是通过获取校准状态来判断是否校准是否结束。
    下面我们一一列出复位校准和 AD 校准的等待结束方法: while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束 while(ADC_GetCalibrationStatus(ADC1)); //等待校 AD 准结束

  2. 配置规则通道参数:
    void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
    我们这里是规则序列中的第 1 个转换,同时采样周期为 239.5,所以设置为: ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );

  3. 开启软件转换
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的 ADC1 的软件转换启动功能

  4. 等待转换完成,读取ADC的值
    开启转换之后,就可以获取转换 ADC 转换结果数据,方法是: ADC_GetConversionValue(ADC1);

同时在 AD 转换中,我们还要根据状态寄存器的标志位来获取 AD 转换的各个状态信息。库函 数获取 AD 转换的状态信息的函数是:
FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG)
比如我们要判断 ADC1d 的转换是否结束,方法是: while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

这里还需要说明一下 ADC 的参考电压,精英 STM32 开发板使用的是 STM32F103ZET6, 该芯片有外部参考电压:Vref-和 Vref+,其中 Vref-必须和 VSSA 连接在一起,而 Vref+的输入 范围为:2.4~VDDA。精英 STM23 开发板通过 P7 端口,设置 Vref-和 Vref+设置参考电压,默 认的我们是通过跳线帽将 Vref-接到 GND,Vref+接到 VDDA,参考电压就是 3.3V。如果大家想 自己设置其他参考电压,将你的参考电压接在 Vref-和 Vref+上就 OK 了。本章我们的参考电压 设置的是 3.3V。 通过以上几个步骤的设置,我们就能正常的使用 STM32 的 ADC1 来执行 AD 转换操作了。

在这里插入图片描述痛啊很难过对ADC模块进行初始化的时候void ADC_INIT(void);
zhi
只需要前4步
1.开启GPIO时钟和ADC时钟,并配置IO口的工作模式。
2.复位ADC,设置ADC的分频因子。
3.初始化adc参数,配置ADC的工作模式和规则序列等
4.使能ADC并进行校准

后面三步多用来获取ADC的值
get adcvail ()
{
5.配置规则通道参数
6.使能软件转换功能
7.等待软件转换完成,读取ADC的值
}

tia运放adc设计参考
06-10
tia运放adc设计参考
RK3399六核64位高性能开发板的ADC使用指南
07-07
vs-RK3399 开发板上的AD接有两种,分别为:温度传感器(Temperature Sensor)、逐次逼近ADC(Successive Approximation Register)。其中:TS-ADC(Temperature Sensor):支持两通道,时钟频率必须低于800KHZSAR-...
解决Stm32出现main.c(136): error: #20: identifier "ADC_Channel_1" is undefined异常问题
魔君的博客
04-15 1万+
只需要把stm32f10x_conf.h中间的关于stm32f10x_adc.h的注释删掉就可以。
ADC库函数
“我吃了你的作业”
08-11 1万+
1.void ADC_DeInit(ADC_TypeDef* ADCx) 功能:初始化ADCx外围寄存器为默认 注释:调用了RCC_APB2PeriphResetCmd函数进行寄存器复位 例如:ADC_DeInit(ADC1);   2.void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct) 功能:根据ADC_...
STM32 ADC库函数
最新发布
Echo_cy_的博客
03-19 1907
单片机学习!
关于ADC_NbrOfChannel与ADC_RegularChannelConfig
qq_54215896的博客
10-17 3398
关于ADC_NbrOfChannel与ADC_RegularChannelConfig
STM32入门笔记08_ADC模数转换器+案例: ADC单通道&ADC多通道
nanxl1的博客
03-25 3655
​ Tconv = 1.5 + 12.5 = 14个ADC周期 = 1us。例如: 当ADCCLK = 14MHz, 采样时间为1.5个ADC周期。​ Tconv = 采样时间 + 12.5个ADC周期。AD转换的步骤: 采样, 保持, 量化, 编码。
stm32的ADC配置
m0_53573725的博客
07-30 2746
接下来就是打开GPIOADC的时钟,用的是GPIOA中的PA4引脚,PA4在GPIOA中,也在ADC1中。第一个参数为ADC1还是ADC2,指的是此时配置ADC的引脚是属于ADC1还是ADC2(以下为stm32f103的引脚属于哪个组)。今天,在学习MQ2烟雾传感器的时候,涉及到了stm32的ADC转化。对输入引脚的配置可谓是十分熟悉,但要值得注意的是,这里引脚的模式要设置为模拟输入。第三个参数指的是该引脚的ADC的转换顺序,如果为1说明是第一个转换。第二个参数该引脚是哪个通道的,相关的定义如下所示。
ADC_adc_
10-03
ADC设计相关资料,包含模拟调制和数字滤波等相关原理、算法和设计实现
DWI转ADC计算流程
01-04
DWI文件转换成ADC图像,需要按照计算公式进行计算得到,如何利用现有的DWI文件通过软件计算得到ADC,是一个比较繁杂的过程,中间存在很多技术性的问题,本文主要是介绍ADC计算的流程,以及所涉及到到的软件和公式,...
ADC基本原理.ppt
01-31
详细讲述了ADC基本原理,实用资料,听课记录 Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。
ADC_RegularChannelConfig 的参数 Rank的含义
热门推荐
gtkknd的专栏
10-19 3万+
void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel, u8 Rank, u8 ADC_SampleTime) 该函数的参数ADC_Channel,Rank是代表什么? 这个在你多通道采集和DMA应用时会有很大的作用,比如你需要多通道采集,你设置每个通道的采集顺序其实就是用这个变量来做的,假设你定义channle1  的
STM32学习:通过DMA读取ADC规则通道多通道转换数据
weixin_48426161的博客
04-27 1万+
1、STM32的DMA简介 直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。 两个DMA控制器有12个通道 (DMA1有7个通道,DMA2有5个通道) ,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。 2、DMA的主要特性 1、12个独立的可配置的通道(请求):DMA1有7个通道,DMA2有5个通道 2、每个通道都直接连接专用的硬
掌上实验室V8系列教程(八)ADC模数转换
lg28870983的博客
12-15 7173
AT32 通过热敏电阻测量温度
ADC简介及代码示例
qq_63306931的博客
04-20 2240
模数转换
STM32学习-ADC数值采样
m0_52850679的博客
04-28 1万+
文章目录前言ADC配置库函数解读读取ADC数值 前言 ADC模块中文名为模拟/数字转换器,是12位逐次逼近型的模拟数字转换器,一般用于数值的采样,比如我最近在做一个示波器,那么就需要对信号进行采样,这就需要用到ADC模块。 一般步骤为将ADC模块与某引脚相连,再用该引脚去接入所要测试的地方,ADC模块便可以经过换算得到所要测试部位的电位。 ADC配置库函数解读 复位函数ADC_DeInit void ADC_DeInit(ADC_TypeDef* ADCx); 调用示例如下: ADC_DeInit(AD
STM32学习笔记—ADC
qq_45268949的博客
12-15 1970
STM32学习笔记
STM32F103学习笔记(十四)——ADC实验
qq_29174429的博客
01-19 921
实验十四 ADC实验 初始化结构体范例: 初始化参考代码: #include "adc.h" #include "delay.h" void Adc_Init(void){ ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); /
STM32 ADC 多通道 转换顺序 DMA模式
yuyan7045的博客
07-07 4762
1.多通道时,ADC的转换顺序程序设计,规则通道模式,这里使用的是STM32F407,其他型号可能差异,注意。 void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime); 这个函数决定了通道转换顺序,其中参数Rank是要控制的参数,Rank=1~16; 转换顺序是从小到大,依次转换; 那么Rank数值可不可以重复?答案是肯定的,所有通道都可以设
matlab adc
07-27
您想了解有关MATLAB中ADC(模数转换器)的内容。MATLAB提供了多种方法来模拟和分析ADC的性能。下面是一些与ADC相关的MATLAB功能和工具: 1. Simulink中的ADC模块:Simulink是MATLAB的图形化建模和仿真环境,其中包含了ADC模块,可以用于模拟ADC的性能。您可以配置ADC的参数,如分辨率、采样率、非线性误差等,并将其与其他系统组件进行连接和仿真。 2. Signal Processing Toolbox:这个工具箱提供了一些函数和工具,可用于模拟和分析模拟信号到数字信号的转换过程。您可以使用该工具箱中的函数来生成模拟信号、添加噪声、模拟ADC的非线性特性,并进行信号重构和后处理。 3. 数据采集工具箱(Data Acquisition Toolbox):该工具箱提供了与外部硬件设备进行数据采集和控制的功能。如果您需要将MATLAB与实际硬件连接并进行ADC数据采集,则可以使用该工具箱来配置和控制ADC设备,并进行数据采集和分析。 4. 信号处理工具箱(Signal Processing Toolbox)和通信系统工具箱(Communications System Toolbox):这些工具箱提供了一些用于数字信号处理和通信系统设计的函数和工具。您可以使用这些工具箱来处理和分析从ADC获取的数字信号,进行滤波、频谱分析、信号再构建等操作。 这些是MATLAB中与ADC相关的一些功能和工具。您可以根据具体的需求选择适合您的方法和工具来模拟和分析ADC的性能。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • ubuntu进行apt-get时候出现Package xxx is not available, but is referred to by another package 错误 13137
  • GPIO通用和复用 9060
  • C语言(1) 数据类型以及存储类型 3083
  • 音频相关的基本概念 2017
  • USART 1686

分类专栏

  • 音频相关 1篇
  • C语言 19篇
  • 宏观经济学
  • 财务报表分析与·股票估值
  • 笔记
  • 7篇
  • Linux学习 15篇

最新评论

  • ubuntu进行apt-get时候出现Package xxx is not available, but is referred to by another package 错误

    滥觞LanShang: sudo apt-get grade 是什么鬼?这条命令也不是更新软件源,而是升级所有软件的吧?

  • ADC

    ctotalk: 不错。

大家在看

  • Redis缓存(笔记三:Redis6新数据类型)
  • HarmonyOS入门第二章——彻底搞懂ArkUI(3)
  • 博客网页制作基础大二dw作业 web课程设计网页制作 个人网页设计与实现 我的个人博客网页开发 187
  • 2024华为OD机试真题-学生重新排队-(C++/Python)-C卷D卷-200分 2
  • 【保奖详细思路】2024年数学建模国赛A题保奖详细思路(点个关注,后续会更新)

最新文章

  • 音频相关的基本概念
  • ubuntu进行apt-get时候出现Package xxx is not available, but is referred to by another package 错误
  • 算法 -- 排序
2022年16篇
2020年24篇
2019年2篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

两个鬼故事为姓贾的女孩起名字男孩起名 李李艺真放射科规章制度工会制度通讯店起什么名字好浙江电信宽带excel密码破解散文诗起名字叫子鱼好吗世外桃源的意思鼓励孩子加油的暖心话用海字起名的免费企业起名网站大全家有喜事粤语生辰八字五行起名免费下载咖啡店起名成语哪些寓意好联通网速测试中信证券软件水电公司起名大全起名数理瑜字起名女孩上阳赋电视剧免费观看全集完整版丁姓男孩起名太阳井宝宝起名字那个网站比较好穿书后我嫁给了残疾暴君popmundo小火锅加盟少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化