stm32 ADC学习(补充一:注入组)
stm32 ADC学习(补充一:注入组)
·
目录
stm32 ADC学习(补充一:注入组)
一、ADC模数转换器
1)ADC进阶知识(注入组)
- 注入通道组的优先级高于规则通道组,注入通道组会中断规则通道组中的当前通道
- 应用场景:电机控制应用中,晶体管切换时会对ADC测量产生噪声影响,转换数据容易出错。结合定时器和注入组,可以在晶体管切换后延时一段时间再进行ADC切换
- 注入分为自动注入和触发注入,前者会等待当前规则组采样完,后者不等
- 注入组和规则组都有单独的寄存器
- 规则组可以在读值之后自动清除标志位,注入组必须手动清除
二、实验
1)开发板实现电机运放偏置电压的采样
- 采用单次规则采样 ADC1 的 channel0、 channel1,连续触发 256 次,将 channel0、channel1 的 256 次的采样数值取平均值,得到偏置电压。 在得到偏置电压后,将 channel0、channel1 改为注入采样,自动注入采样功能选取任意一个定时器实现;增加 channel2、channel3、channel4的规则采样,采样结果由 DMA 传输。
- 关键代码:
ADC_InjectedSequencerLengthConfig(ADC1, 2); //配置注入组长度
ADC_InjectedChannelConfig(ADC1, ADC_Channel_0, 1,ADC_SampleTime_55Cycles5); //配置注入通道
ADC_InjectedChannelConfig(ADC1, ADC_Channel_1, 2,ADC_SampleTime_55Cycles5);
ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_T2_TRGO); //配置注入由TIM2计时器触发
ADC_ExternalTrigInjectedConvCmd(ADC1, ENABLE); //使能硬件触发注入
ADC_AutoInjectedConvCmd(ADC1, DISABLE); //在规则组运行后自动开启注入组,这个一般不要开
TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); //计时器配置硬件触发模式
ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1); //获取注入组值
ADC_ClearFlag(ADC1, ADC_FLAG_JEOC); //清除注入组标志位,要手动清除

- 实现代码见资源绑定
附学习参考网址
欢迎大家有问题评论交流 (* ^ ω ^)
更多推荐



所有评论(0)