STM32F407 ADC 寄存器配置:3 通道采集的硬件触发使能

STM32F407 ADC 3通道硬件触发配置指南

1. 时钟使能与GPIO配置
  • 使能ADC和GPIO时钟:
    RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;   // 使能ADC1时钟
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;  // 使能GPIOA时钟
    

  • 配置GPIO为模拟输入模式(以通道0/1/2为例):
    // PA0(Ch0), PA1(Ch1), PA2(Ch2) 设为模拟模式
    GPIOA->MODER |= (3 << (0*2)) | (3 << (1*2)) | (3 << (2*2));
    

2. ADC基础配置
  • 设置独立模式与扫描模式:
    ADC1->CR1 &= ~ADC_CR1_DUALMOD;        // 独立模式
    ADC1->CR1 |= ADC_CR1_SCAN;            // 扫描模式
    

  • 配置数据对齐(右对齐):
    ADC1->CR2 &= ~ADC_CR2_ALIGN;          // 右对齐数据
    

3. 硬件触发配置
  • 选择触发源(以定时器2触发为例):
    ADC1->CR2 |= ADC_CR2_EXTEN_0;         // 上升沿触发 (EXTEN[1:0]=01)
    ADC1->CR2 |= ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_3;  // EXTSEL[3:0]=1100 (TIM2_TRGO)
    

  • 使能外部触发:
    ADC1->CR2 |= ADC_CR2_EXTTRIG;         // 硬件触发使能
    

4. 通道与序列配置
  • 设置规则序列长度(3通道):
    ADC1->SQR1 &= ~ADC_SQR1_L;            // 清除长度位
    ADC1->SQR1 |= (2 << 20);              // L[3:0]=0010 (3通道转换)
    

  • 配置转换序列(例:通道0→1→2):
    ADC1->SQR3 = (0 << 0) | (1 << 5) | (2 << 10);  // SQ1=Ch0, SQ2=Ch1, SQ3=Ch2
    

5. 采样时间配置
  • 设置各通道采样周期(例:480周期):
    ADC1->SMPR2 |= (7 << 0) | (7 << 3) | (7 << 6);  // SMP0=SMP1=SMP2=111(480周期)
    

6. 启动ADC
  • 使能ADC并启动转换:
    ADC1->CR2 |= ADC_CR2_ADON;            // 开启ADC
    HAL_Delay(1);                         // 等待稳定
    ADC1->CR2 |= ADC_CR2_SWSTART;         // 首次启动转换
    

7. 关键寄存器说明
寄存器功能配置值
CR2触发控制EXTTRIG=1 EXTEN[1:0]=01 EXTSEL[3:0]=1100
SQR1规则序列长度L[3:0]=0010
SQR3通道序列SQ1=0 SQ2=1 SQ3=2
SMPR2通道0/1/2采样时间SMPx=111

注意

  1. 硬件触发源需同步配置定时器(例:TIM2->CR2 |= TIM_CR2_MMS_1 输出TRGO)
  2. 转换结果通过DMA或中断读取,需单独配置
  3. 使用前需执行ADC校准(参考手册12.4节)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值