STM32G4多通道连续高速采样


1. 基本思路

对于stm32的ADC多通道采样,由于不是每个通道都具备转换结果寄存器,因此在多通道采样时通常需要采用DMA,但是考虑到敏感场合DMA错误或导致ADC Overrun,从而导致待控制的Power Stage故障。鉴于此,考虑采用Auto Injection模式配和一个连续采样的Regular通道实现多通道连续采样,此时连续采样的规则通道和注入通道交替进行,从而实现所设定的通道依次连续采样。经测算,采用此方法采样25通道,所需时间在2us以内。

此时可用的通道数为5个,转换结果分别存放与RDATA和JDATA1-4,如下图所示。

2. 实现方法

以下采用STM32CubeIDE说明实现方法。

(1) 电源和时钟配置

基于手册给出的限制进行设置。

对于多ADC单端情况,设置电源Range1。

由PLLP引出ADC的时钟,fADC<52Mhz。

ADC配置页,取时钟分频如下。

(2) 通道和采样模式设置

通道选择见上图,6、7、15通道被选中,取单端模式。设置一个规则采样通道,并使之为连续模式,新值overwrite,软件触发转换。

image

使能注入转换,设置所需Rank数和响应的通道,选择Auto Injected Mode。

对于采样时间的选择,不妨选择与手册中测试条件相同的设置,快速通道取2.5 Cycles,慢速通道取6.5 Cycles。

3. 使用方法

  • 在ADC初始化后,采用函数HAL_ADC_Start(&hadc) HAL_ADCEx_InjectedStart(&hadc1)启动ADC的多通道连续采样;
  • 直接读取ADC的相应RDATA寄存器和JDATA寄存器即可获取转换值,如:
    A1_6 = hadc1.Instance->DR;
    A1_7 = hadc1.Instance->JDR1;
    A1_15 = hadc1.Instance->JDR2;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM