登录/注册

STM32F3 ADC 注入

更多

STM32F3 系列的 ADC 注入通道(Injected Channels)是一种高级功能,用于在规则通道(Regular Channels)转换过程中插入高优先级的采样任务。以下是关于注入通道的核心要点和配置指南:


注入通道的特点

  1. 优先级高
    注入通道可以打断正在进行的规则通道转换,立即执行紧急采样(如过压/过流保护等关键信号)。

  2. 独立配置
    每个注入通道有独立的采样时间、触发源和存储寄存器(JDR1-JDR4),与规则通道互不干扰。

  3. 触发方式灵活
    支持多种触发源:软件触发、外部引脚触发、定时器触发等。


配置步骤(基于HAL库)

1. 初始化ADC

ADC_HandleTypeDef hadc;
hadc.Instance = ADC1;
hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;  // 时钟分频
hadc.Init.Resolution = ADC_RESOLUTION_12B;            // 12位分辨率
hadc.Init.ScanConvMode = ENABLE;                     // 多通道扫描模式
hadc.Init.ContinuousConvMode = DISABLE;              // 非连续转换
hadc.Init.DiscontinuousConvMode = DISABLE;           
HAL_ADC_Init(&hadc);

2. 配置注入通道参数

ADC_InjectionConfTypeDef sConfigInjected;
sConfigInjected.InjectedChannel = ADC_CHANNEL_1;        // 选择注入通道(如通道1)
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;     // 注入组内的优先级(1为最高)
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;  // 采样时间
sConfigInjected.InjectedTrigger = ADC_EXTERNALTRIGINJEC_T1_TRGO;  // 触发源(如定时器1)
sConfigInjected.AutoInjectedConv = DISABLE;             // 是否自动连续转换
sConfigInjected.InjectedOffset = 0;                      // 数据偏移量
HAL_ADCEx_InjectedConfigChannel(&hadc, &sConfigInjected);

3. 启动注入转换

// 通过软件触发注入转换
HAL_ADCEx_InjectedStart(&hadc);
// 或通过外部触发(如定时器信号)

4. 读取注入通道数据

uint16_t adc_value;
adc_value = HAL_ADCEx_InjectedGetValue(&hadc, ADC_INJECTED_RANK_1);  // 读取Rank1的数据

关键注意事项

  1. 触发源选择
    注入通道的触发源需与规则通道分开配置,避免冲突。例如,使用定时器触发时,规则组可能用ADC_EXTERNALTRIG_T1_TRGO,而注入组用ADC_EXTERNALTRIGINJEC_T1_TRGO

  2. 中断处理
    若需实时响应注入转换完成,可启用ADC中断:

    HAL_ADCEx_InjectedStart_IT(&hadc);  // 启动带中断的注入转换

    在中断回调函数中处理数据:

    void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc) {
       uint16_t value = HAL_ADCEx_InjectedGetValue(hadc, ADC_INJECTED_RANK_1);
       // 处理数据...
    }
  3. 数据对齐
    注入通道数据支持左对齐(ADC_DATAALIGN_LEFT)或右对齐(ADC_DATAALIGN_RIGHT),需与配置的Resolution匹配。


典型应用场景


建议结合STM32F3参考手册(RM0316)和CubeMX工具进行详细配置,确保硬件触发源与ADC设置匹配。

MM32F3270 ADC注入通道

MM32F3270 ADC注入通道

2023-09-27 15:59:56

【产品推荐】STM32F3 系列 带有DSP和FPU指令的STM32F3系列混合信号MCU

STM32F3 系列 MCU芯片简介:STM32F3系列集成了运行于72 MHz的32位Arm® Cortex®-M4内核(带有FPU和DSP指令)以及丰富的模拟外设,从而降低整体应用成本并简化系统

2022-12-01 14:56:06

单片机STM32F3/STM32F4和STM32L4/STM32L4plus的完整编程指南

本编程手册为STM32单片机用户提供关于Cortex®-M4内核的单片机STM32F3, STM32F4 and

2022-12-01 06:00:25

STM32F3产品技术培训-USART模块

电子发烧友网站提供《STM32F3产品技术培训-USART模块.pdf》资料免费下载

资料下载 刘丹 2023-08-01 10:34:06

UM1766_STM32CubeF3入门之STM32F3系列

UM1766_STM32CubeF3入门之STM32F3系列

资料下载 佚名 2022-11-22 08:22:22

AN5310_使用STM32F3系列与STM32G4系列设备的模拟特性指南

AN5310_使用STM32F3系列与STM32G4系列设备的模拟特性指南

资料下载 陈艳 2022-11-21 17:06:46

AN4734_适用于STM32F3系列的STM32Cube固件例程

AN4734_适用于STM32F3系列的STM32Cube固件例程

资料下载 佚名 2022-11-21 08:11:36

STM32F3系列单片机AD封装库下载

STM32F3系列单片机AD封装库下载

资料下载 禹_80b 2022-01-04 10:50:58

RTX移植到STM32F3的方法

使用环境:STM32F303标准外设库;keil4.74;首先需要准备一份STM32F3模板,可以在我上传的资源中下载。以下工程目录是我移植好后实现LED闪烁的代码;第一步:project-->

2021-12-14 06:42:15

请问STM32F3如何使用HRTIM与ADC实现精准BOOST转换?

请问STM32F3如何使用HRTIM与ADC实现精准BOOST转换?

2021-11-03 06:09:32

基于STM32f3的FIR应用测试分析 精选资料分享

工具和简介目的:利用MATLAB仿真软件系统结合窗函数法设计一个数字带通FIR滤波器。通过STM32F3的DSP模块实现移植应用,测试分析其运行效率等,并将其运行结果同MATLAB运行结果比较,分析

2021-08-10 06:51:41

stm32f4 ADC基本介绍

Analog-to-Digital Converter一、stm32f4 ADC基本介绍1. stm32F4

2021-08-02 09:31:59

2012年推出的STM32F3系列的延续

STM32G4基于ArmCortex-M4内核,支持FPU和DSP指令集,主频高达170MHz,相较于STM32F3和STM32F1的72MHz

2021-03-11 09:36:37

ST带有DSP和FPU指令的STM32F3系列混合信号MCU资料!

本帖最后由 o_dream 于 2020-9-2 15:37 编辑 STM32F3系列集成了运行于72MHz的32位Arm® Cortex®-M4内核(带有FPU和DSP指令)以及丰富的模拟

2020-09-02 15:35:31

STM32F3F4系列Cortex M4内核编程手册

STM32F3与F4系列Cortex M4内核编程手册

2020-05-30 11:59:49
7天热门专题 换一换
相关标签