173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32f4adc注入

keros@mark 2023-03-18 资讯中心

STM32 ADC 规则通道 和 注入通道的区别

规则的就是有顺序的,注入通道类似于中断一样,在规则执行的时候,注入一条通道。

STM32F10x_ADC三通道DMA连续转换(3通道、软件单次触发):

STM32F4 ADC模块使用不同DMA模式的区别和对比

这些细节在STM32F4的原厂参考手册中没有说明,只是很简短的列了一下。

我是查看ST前几天刚发布的接口库才最后弄明白的,不敢独享!

1、STM32F4有3个独立的ADC单元,性能强劲,可以独立使用,也可以联合使用它们。

联合使用在参考手册中叫Interleave模式,最大的目的是加倍提升采样速度。

2、采样速度大幅提高以后,就需要使用DMA来配合提取采样结果,从而发挥STM32F4

ADC模块的最大效能。

3、ADC模块使用DMA有4种模式可选,默认模式和模式1没有什么特别之处。

最有意思的是模式2和模式3:

模式2可以选择多达3个ADC模块工作于Interleave模式,ADC速度从单一模块的

2.4Msps暴涨为7.2Msps,而且还是12-bit的分辨率!唯一的要求是每完成2次转换,

允许DMA一次性取走2个采样值。

模式3跟模式2类同,但要求ADC模块的采样率为8-bit或6-bit,由于转换时间要比

12-bit时短,所以速度更快,适用于速度要求更快,但精度要求较低的场合。

比如用2个ADC模块很容易就可以做到6Msps的速率,而且2次的结果可以存为halfword,

经由DMA取走,耗用内存也比模式2来的少。

剩下的那一个ADC模块也不用闲着,可以工作于其他设定(比如:高精度)的模式。

ADC的注入组与规则组有何区别,什么是模拟狗

STM32F的ADC有16个通道,有两种模式可以选择,规则组和注入组。

规则组有16个,注入组有4个。注入组的优先级更高,你要正常使用就只设置规则组就行了。

寄存器你自己去翻手册就明白了,ADC_SQR1这个是写入你要用几个规则组的。而ADC_JSQR是写入你要用几个注入组的。

STM32F4 ADC采样速率远大于输入信号频率怎么办

STM32中部分有2个独立核心的ADC。可以用来同时采集2个采集量,或者间隔采集不同\\/相同的采集量来体现时域差别\\/增加采样速度。\r\n\r\n至于你说的多通道不知道是不是和普通一样,即可以分时分别采集多个不同的采样量.

什么是stm32的adc注入模式

STM32学习日志(9)----ADC 规则组-注入组转换

编译环境: EWARM V5.30

硬件环境: 南京万利 EK-STM32F

主芯片 : STM32F103VBT6

STM32 FW: V3.0.0

作者 : szlihongtao

时间 : 2010-07-01

说明 : 1. 在 SysTick 定时中断程序中刷新LCD的显示

2. DMA1保存数据

*******************************************************************************/

/**

******************************************************************************

* @file Project/Template/main.c

* @author MCD Application Team

* @version V3.0.0

* @date 04/06/2009

* @brief Main program body

******************************************************************************

* @copy

*

* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS

* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE

* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY

* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING

* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE

* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

*

* h2center© COPYRIGHT 2009 STMicroelectronics/center/h2

*/

/* Includes ------------------------------------------------------------------*/

#include "stm32f10x.h"

#include "stm32_m.h"

#include "lcd.h"

//******************************************************************************

#define ADC1_DR_Address ((u32)0x4001244C) // ADC1-DR

#define SIZE_AVE (64)

//******************************************************************************

bit f_tb; // 基本定时标志

static INT16U tmr_1sec,cnt_test;

__IO INT16U ADC_ConvertedValue[SIZE_AVE];

//******************************************************************************

extern bit f_adc;

extern INT16U code_adc;

//******************************************************************************

static void delayms(INT16U cnt)

{

INT16U i;

while(cnt--)

for (i=0; i7333; i++);

}

//******************************************************************************

// 延时50ms

//******************************************************************************

static void delay(void)

{

INT32U i;

static INT32U jjj=5240*50;

for (i=0; ijjj; i++);

}

//******************************************************************************

// 时钟设置初始化

//******************************************************************************

static void RCC_Configuration(void)

{

ErrorStatus HSEStartUpStatus;

/*

RCC_AdjustHSICalibrationValue 调整内部高速晶振(HSI)校准值

RCC_ITConfig 使能或者失能指定的RCC中断

RCC_ClearFlag 清除RCC的复位标志位

RCC_GetITStatus 检查指定的RCC中断发生与否

RCC_ClearITPendingBit 清除RCC的中断待处理位

*/

/* RCC system reset(for debug purpose) */

// 时钟系统复位

RCC_DeInit();

// 使能外部的8M晶振

// 设置外部高速晶振(HSE)

/* Enable HSE */

RCC_HSEConfig(RCC_HSE_ON);

// 使能或者失能内部高速晶振(HSI)

RCC_HSICmd(DISABLE);

// 等待HSE起振

// 该函数将等待直到HSE就绪,或者在超时的情况下退出

/* Wait till HSE is ready */

HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus == SUCCESS)

{

/* HCLK = SYSCLK */

// 设置AHB时钟(HCLK)

RCC_HCLKConfig(RCC_SYSCLK_Div1); // 72 MHz

/* PCLK1 = HCLK/2 */

// 设置低速AHB时钟(PCLK1)

RCC_PCLK1Config(RCC_HCLK_Div2); // 36 MHz

/* PCLK2 = HCLK */

// 设置高速AHB时钟(PCLK2)

RCC_PCLK2Config(RCC_HCLK_Div1); // 72 MHz

RCC_ADCCLKConfig(RCC_PCLK2_Div8);

/* ADCCLK = PCLK2/8 */

// 设置ADC时钟(ADCCLK)

RCC_ADCCLKConfig(RCC_PCLK2_Div8);

// 设置USB时钟(USBCLK)

// USB时钟 = PLL时钟除以1.5

RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);

// 设置外部低速晶振(LSE)

RCC_LSEConfig(RCC_LSE_OFF);

// 使能或者失能内部低速晶振(LSI)

// LSE晶振OFF

RCC_LSICmd(DISABLE);

// 设置RTC时钟(RTCCLK)

// 选择HSE时钟频率除以128作为RTC时钟

RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);

// 使能或者失能RTC时钟

// RTC时钟的新状态

RCC_RTCCLKCmd(DISABLE);

/* Flash 2 wait state */

FLASH_SetLatency(FLASH_Latency_2);

/* Enable Prefetch Buffer */

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

/* PLLCLK = 8MHz * 9 = 72 MHz */

// 设置PLL时钟源及倍频系数

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

/* Enable PLL */

// 使能或者失能PLL

RCC_PLLCmd(ENABLE);

/* Wait till PLL is ready */

// 检查指定的RCC标志位设置与否

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

{

}

/* Select PLL as system clock source */

// 设置系统时钟(SYSCLK)

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

/* Wait till PLL is used as system clock source */

// 返回用作系统时钟的时钟源

while(RCC_GetSYSCLKSource() != 0x08)

{

}

}

本文标签:stm32f4adc注入

产品列表
产品封装
友情链接