STM32——ADC基本原理

这篇具有很好参考价值的文章主要介绍了STM32——ADC基本原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ADC:Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器,是指将连续变量的模拟信号转换位离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

STM32F4x ADC特点:

1、可配置12位、10位、8位或6位分辨率。

2、在转换结束、注入转换结束以及发生模拟看门狗或溢出时间时产生中断。

3、单次和连续转换模式。

4、用于自动将通道0转换为通道“n”的扫描模式。

5、数据对齐以保持内置数据一致性。

6、可独立设置各通道采样时间。

7、外部触发器选项,可为规则转换和注入转换配置极性。

8、不连续采样模式。

9、双重/三重模式(具有2个或则更多ADC的器件提供)。

10、双重/三重ADC模式下可配置的DMA数据存储。

11、双重/三重交替模式下可配置的转换间延迟。

12、ADC转换类型。

13、ADC电源要求:全速运行时为2.4V到3.6V,慢速运行时为1.8V。

14、ADC输入范围:Vref-<=Vin<=Vref+

15、规则通道转换期间可产生DMA请求。

STM32F40x大容量芯片带3个ADC控制器:

STM32——ADC基本原理

其中144脚芯片因为带PF脚,所以多8个通道,为24个外部通道,小于144脚芯片只有16个外部通道。

STM32F4 系列ADC外部通道和引脚对应关系:

STM32——ADC基本原理

ADC引脚:

STM32——ADC基本原理

ADC框图:

 STM32——ADC基本原理

 STM32——ADC基本原理

STM32通道组:

1、规则通道组:相当正常运行的程序。最多16个通道。规则通道和它的转换顺序在ADC_SQRx寄存器中选择,规则组转换的总数应写入ADC_SQR1寄存器的L[3:0]中。

2、注入通道组:相当于中断。最多4个通道。注入组和它的转换顺序在ADC_JSQR寄存器中选择。注入组里转化的总数应写入ADC_JSQR寄存器的L[1:0]中。

STM32——ADC基本原理

注入通道就相当于中断,在规则通道执行过程中加入注入通道。

STM32F4的ADC的各个通道可以单次、连续、扫描或者间断执行。

单次转化VS连续转换

单次转换模式:

在单次转换模式下,ADC执行一次转换。CONT位为0时,可通过以下方式启动此模式:

1)将ADC_CR2寄存器中的SWATART位置1(仅适用于规则通道)

2)将JSWATART位置1(仅适用于注入通道)

3)外部触发(适用于规则通道或外部通道)

完成所选通道的转换之后:

1)如果转换了规则通道

——转换数据存储在16位ADC_DR寄存器中

——EOC(转换结束)标志置1

——EOCIE位置1时将产生中断

2)如果转换了注入通道

——转换数据存储在16位ADC_JDR1寄存器中

——JEOC(注入转换结束)标志置1

——JEOCIE位置1时将产生中断

然后ADC停止。

连续转换模式:

在连续转换模式下,ADC结束一个转换后立即启动一个新的转换。CONT位为1时,可通过外部触发或将ADC_CR2寄存器中的SWSTRT位置1来启动此模式(仅适用规则通道)

每次转换之后:

1)如果转换了规则通道组:

——上次转换的数据存储在16位ADC_DR寄存器中

——EOC(转换结束)标志置1

——EOCIE位置1时将产生中断

无法连续转换注入通道。连续模式下唯一的例外情况是,注入通道配置为在规则通道之后自己动转换(使用JAUTO位)。

扫描模式:

此模式用于扫描一组模拟通道。

通过将ADC_CR1寄存器中的SCAN位置1来选择扫描模式。将此位置1后,ADC会扫描在ADC_SQRx寄存器(对于规则通道)或者ASC_JSQR寄存器(对于注入通道)中选择的所有通道。对组中的每一个通道都执行一次转换。每次转换结束之后,会自动转换该组中的下一个通道。如果将CONT位置1,规则通道转换不会在组中最后一个所选通道处停止,而是再次从第一个所选通道继续转换。

如果将DMA位置1,则在每次规则通道转换之后,均使用直接存储器访问(DMA)控制器将转换自规则通道组的数据(存储在ADC_DR寄存器中)传输到SRAM。

在以下情况下,ADC_SR寄存器中的EOC位置1:

——如果EOCS位置清零,在每一个规则组序列转换结束时

——如果EOCS位置1,在每个规则通道转换结束时

从注入通道转换的数据始终存储在ADC_JDRx寄存器中

ADC_CR1控制寄存器1

STM32——ADC基本原理

ADC中断:

当模拟看门狗状态位和溢出状态位分别置1时,规则组和注入组在转换结束时可能会产生中断。可以使用单独的中断使能位以实现灵活性。

ADC_SR寄存器中存在另外两个标志,但这两个标志不存在中断相关性:

——JSTRT(开始转换注入组的通道)

——STRT(开始转换规则组的通道)

STM32——ADC基本原理

ADC_CCR通用控制寄存器

STM32——ADC基本原理

STM32——ADC基本原理 

不要让ADC时钟超过36MHz,否则可能不准。

ADC_CR1寄存器

STM32——ADC基本原理

在扫描模式下,由ADC_SQRx或ADC_JSQRx寄存器选中的通达被转换,如果设置了EOCIE或则JEOCIE为0。在最后一个通道转换完毕后才会产生EOC或者JEOC中断。

ADC_CR2寄存器

STM32——ADC基本原理

数据对齐方式:

ADC_CR2寄存器中的ALIGN位选择转换后数据存储的对齐方式,数据可以左对齐或右对齐,如图29和图30所示。

注入组通道转换的数值已经减去了在ADC_JOFRx寄存器中定义的偏移亮,因此结果可以是一个负值。SEXT位是扩展的符号值。

对于规则组通道,不需减去偏移值,因此只有12个位有效。

STM32——ADC基本原理

ADC_SMPR1寄存器

STM32——ADC基本原理

ADC_SMPR2寄存器

STM32——ADC基本原理

ADC的采样时间

STM32——ADC基本原理

ADC_SQR1/SQR2/SQR3规则序列寄存器

STM32——ADC基本原理

ADC_DR规则通道数据寄存器

STM32——ADC基本原理

ADC_SR状态寄存器

STM32——ADC基本原理

常用库函数

STM32——ADC基本原理

ADC通用初始化函数ADC_Commonlnit

void ADC_Commonlnit(ADC_CommoninitTypeDef* ADC_CommoninitStruct);

typedef struct

{

  uint32_t ADC_Mode;//多重ADC模式选择

  uint32_t ADC_Prescaler;//ADC预分频

  uint32_t ADC_DMAAccessMode;//DMA访问模式

  uint32_t ADC_TwoSamplingDelay;//2个采样阶段之间的延迟

}ADC_CommonlnitTypeDef;

ADC初始化函数ADC_Init

void ADC_Init(ADC_TypeDef* ADCx_InitTypeDef* ADC_InitStruct);

typedef struct

{

  uint32_t ADC_Resoulation;//ADC分辨率

  FunctionalState ADC_SacnConvMode;//是否使用扫描模式。ADC_CR1位8:SCAN位

  FunctionalState ADC_ContinuousConvMode;

//单次转换or连续转换:ADC_CR2的位:CONT

  uint32_t ADC_ExternalTrigConvEdge;

//外部触发使能方式:ADC_CR2的位29:28,EXTEN

  uint32_t ADC_ExternalTrigConv;//触发方式:ADC_CR2的位[19:17]:EXTSEL[2:0]

  uint32_t ADC_DataAlign;//对齐方式:左对齐还是右对齐:ADC_CR2的位11:ALIGN

  uint8_t ADC_NbrOfChannel;//规则通道序列长度:ADC_SQR1的位[23:20]:L[3:0]

}ADC_InitTypeDef;

 ADC使能函数ADC_Cmd();

void ADC_Cmd(ADC_TypeDef* ADCx,FunctionalState NewState);

ADC_Cmd(ADC1,ENABLE);//使能指定的ADC1

ADC使能软件转换函数ADC_SoftwareStartConvCmd();

void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx,FunctionalState NewState);

ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能ADC1的软件转换启动

ADC规则通道配置函数ADC_RegualrChannelConfig();

void ADC_RegularChannelConfig(ADC_TypeDef* ADCx,uint8_tADC_Channel,uint8_t ADC_SampleTime);

ADC_RegularChannelConfig(ADC1,ADC_Channel_5,1,ADC_SampleTime_480Cycles);

ADC获取转换结果函数ADC_GetConversionValue();

uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);

ADC_GetConversionValue(ADC1);//获取ADC1转换结果文章来源地址https://www.toymoban.com/news/detail-479772.html

到了这里,关于STM32——ADC基本原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 SPI通信协议1——协议基本原理及管脚定义

            SPI全称为 Serial Peripheral interface ,译为 串行外围设备接口 。SPI主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号编码器之间。         SPI是一种高速,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,

    2024年01月25日
    浏览(40)
  • 【明解STM32】中断系统理论基础知识篇之中断基本原理及NVIC

    目录 一、前言 二、基本原理概述 1、中断的作用 2、中断和异常 3、NVIC中断控制器 4、中断的分类 三、中断管理机制 1、中断向量 2、中断优先级 3、中断嵌套 四、中断处理流程 五、总结         中断是什么?举个例子来说,当我们正在工作时,突然电话响了,这时你会把

    2024年02月05日
    浏览(46)
  • STM32-IAP基本原理及应用 | ICP、IAP程序下载流程 | 程序执行流程 | 配置IAP到STM32F4xxx

    ①在线编程(ICP,In-Circuit Programming) :通过JTAG/SWD协议或者系统加载程序(Bootloader, 串口 )下载用户应用程序到微控制器中。 ②在程序中编程(IAP,In Application Programming) :通过任何一种通信接口(如IO端口,USB,CAN,UART,I2C,SPI等)下载程序或者应用数据到存储器中( 需要在此前通过在线编

    2024年02月07日
    浏览(43)
  • stm32f407探索者开发板(二十二)——通用定时器基本原理讲解

    STM32F40x系列总共最多有14个定时器 三种(4)STM32定时器区别 STM3 F4 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括: 16 /32 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系

    2024年02月12日
    浏览(41)
  • STM32 | STM32CubeMX基础之ADC

    一、ADC框图 ADC输入电源 2. 输入通道 这16个通道对应着不同的IO口,此外 ADC1 的通道 16 连接到了芯片内部的温度传感器,通道 17连接到了VRefInt(内部参照电压)。 3. 规则通道与注入通道 a)规则通道组: i)相当正常运行的程序。最多16个通道。规则通道和它的转换顺序在AD

    2024年02月06日
    浏览(41)
  • STM32 HAL库 STM32CubeMX -- ADC

    ADC(Analog-to-Digital Converter)指模/数转换器或者模拟/数字转换器。 是指将连续变量的模拟信号转换为离散的数字信号的器件。 也就是将 模拟信号 转化为 数字信号 。 STM32f103 系列有3 个ADC,精度为12 位,每个ADC 最多有16 个外部通道和2个内部信号源。其中ADC1 和ADC2 都有16 个外部

    2024年02月15日
    浏览(41)
  • STM32 MCU ADC详解(1)--初识ADC

    ADC中文全称 模拟数字转换器 ,其主要功能是将模拟信号(通常是连续变化的电压/电流信号)转换成数字信号,提供给程序进行处理。这个转换有什么作用呢?举个例子,当我们在淋浴的时候,感觉到水温过高了,会伸手对开关进行一个调节,这是因为我们大脑对皮肤神经末

    2024年01月23日
    浏览(37)
  • STM32之ADC

    ADC全称: Analog-to-Digital Converter,指模拟/数字转换器,是指将连续变化的模拟信号转换为 离散的数字信号。 量程: 能测量的电压范围。 分辨率: ADC能辨别的最小模拟量,通常以输出二进制数的位数表示,比如:8、10、12、16位等。位数越多,分辨率越高,一般来说分辨率越高,

    2024年02月05日
    浏览(65)
  • STM32——ADC

            ADC——Analog to Digital Converter,即模数转换器,是将连续的模拟信号转换为离散的数字信号的器件。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大

    2024年02月03日
    浏览(24)
  • STM32—ADC详解

    1.ADC简介 STM32F103 系列最少都拥有 2 个 ADC ,我们选择的 STM32F103RCT 包含有 3 个 ADC,STM32的最大转换速率为1Mhz,也就是转换时间为1us,除此之外,还要注意ADC时钟不可以超过14M。 2.电压范围 ADC所能测量的电压范围就是 VREF- ≤ VIN ≤ VREF+ ,把 VSSA 和 VREF-接地,把 VREF+和 VDDA 接 3V3,

    2023年04月08日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包