由于要采集电压、电流以计算功率、阻抗等信息,STM32的同步规则模式很适合于这种情景。使用时有几点需要注意的:

1、选择正确的模式:ADC_Mode_RegSimult,即DUALMOD[3:0] = 0110,ADC2在双模式中,这些位为保留位

2、开启ADC的DMA,在双ADC模式里,为了在主数据寄存器上读取从转换数据,必须使能DMA位,即使不使用DMA传输规则通道数据。只有ADC1和ADC3能产生DMA请求。所以只需设置ADC1的DMA:ADC_DMACmd(ADC1, ENABLE);

3、ADC2的转换数据存在ADC1_DR的高半字;

4、不要在2个ADC上转换相同的通道((两个ADC在同一个通道上的采样时间不能重叠)。

5、ADC2的CR2寄存器的第20位——EXTTRIG:规则通道的外部触发转换模式必须开启(软件启动的时候也要),这样才能利用到ADC1的触发信号。不然的话,需要手动再软启动一次ADC2,例如ADC_SoftwareStartConvCmd(ADC2, ENABLE);

但是,假如你设置了这个位之后,就不需要手动软启动ADC2了,所以考虑到同步,这样比较好:

//都是软启动ADC_ExternalTrigConv_None/* Enable ADC2 external trigger conversion */ADC_ExternalTrigConvCmd(ADC2, ENABLE);//同步规则模式,可使用ADC1的触发信号
  ADC_SoftwareStartConvCmd(ADC1, ENABLE);/* Start ADC2 Software Conversion */ //ADC_SoftwareStartConvCmd(ADC2, ENABLE);//不需要了

用ADC_SoftwareStartConvCmd(ADC2, ENABLE);为什么可以,一方面它也设置了EXTTRIG位,另一方面也设置了SWSTART。但我觉得先用ADC_ExternalTrigConvCmd(ADC2, ENABLE);的话,一会只要ADC1一启动,两者就同时启动了,这样更正确一点。

转载于:https://www.cnblogs.com/TrueElement/archive/2012/09/13/2683540.html

STM32的同步规则模式使用相关推荐

  1. STM32 ADC 同步规则模式 ADC1与ADC2同用一个DMA

    STM32 ADC 支持同步规则模式 ,其官方解释为: 大致意思就是通道组的 ADC1 的多路开关(由 ADC1_CTLR2寄存器的 ETSRC[2:0]决定), ADC2 被同步触发.在 ADC1 ...

  2. 双极型adc与stm32_关于STM32 双ADC同步规则转换两路数据的问题?

    因系统要求需升级ADC的采样方式(以前方式:扫描方式,TIMER2触发ADC软启动,2通道规则序列,DMA传完中断),为了进一步实现两路信号的同步性能,采样STM32 双ADC同步规则转换.(time ...

  3. STM32三个ADC同步规则采样

    同步采样一般应用于交流信号中,是指多个ADC的采集时刻完全同步.在电力测量领域,经常会遇到需要同步采样的情况,比如同步采样电压电流信号,计算其相位差.阻抗分析时,也需要对输入输出信号进行同步采集,分析 ...

  4. STM32F303RE 四个ADC同步规则采样

    STM32F303RE 芯片有4个ADC, 采样频率据说能达到5Mbsps 已经算是非常高的了. 比较适合做采样 参考文章 STM32三个ADC同步规则采样 参考上面的配置文章. 经过不断的失败和重复 ...

  5. 【STM32笔记】低功耗模式配置及避坑汇总

    [STM32笔记]低功耗模式配置及配置汇总 文章总结:(后续更新以相关文章为准) [STM32笔记]低功耗模式.WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断) [STM32 ...

  6. STM32定时器同步功能2

    STM32定时器同步功能2:用一个定时使能另外一个定时器 测试芯片:STM32L151C8T6 代码库:LL库 本例中,TIM3为主定时器,TIM2为从定时器,通过TIM3 的更新事件使能TIM2,T ...

  7. STM32定时器同步功能1

    STM32定时器同步功能1:将一个定时器用作另一个定时器的预分频器 测试程序说明: 测试芯片为STM32L151C8T6, 程序库使用的是LL库 用TIM3为主定时器,产生更新事件,并产生触发输出(T ...

  8. STM32使用以下规则对过滤器编号:

    STM32使用以下规则对过滤器编号: (1) FIFO_0和 FIFO_1的过滤器分别独立编号,均从0开始按顺序编号. (2) 所有关联同一个 FIFO 的过滤器,不管有没有被激活,均统一进行编号. ...

  9. 周期同步位置模式(CSP),轮廓位置模式(PPM),位置模式(PM)

    什么是运动控制? 运动控制就是通过机械传动装置对运动部件的位置.速度进行实时的控制管理,使运动部件按照预期的轨迹和规定的运动参数(如速度.加速度参数等)完成相应的动作. 运动控制系统的典型构成 1. ...

最新文章

  1. NYOJ 73 比大小
  2. 【VS开发】PCIe体系结构的组成部件
  3. 分布式版本控制系统入门
  4. [转]cookie、sesstion、localstorage、sesstionstorage的使用和区别
  5. python判断线程结束_判断Threading.start新线程是否执行完毕的实例
  6. 设计模式(4)——工厂模式
  7. 【转译】玩黑莓你必须了解的10件事
  8. 2006年中国首届杰出数据库工程师评选面试实录
  9. Spark3.0核心调优参数小总结
  10. LeetCode-618. 学生地理信息报告(困难)行转列
  11. cvc降噪和主动降噪_蓝牙耳机降噪功能CVC好还是DSP?
  12. 中医针灸学综合练习题库【10】
  13. 用matlab做一个有刻度的网格,MATLAB已知坐标如何画网格图
  14. C#实战之CAD二次开发002:绘制直线和绘制圆
  15. 等待输入超时:自动登出
  16. 被称为世上最经典的25句话
  17. POI实现EXCEL单元格合并及边框样式
  18. 神经网络中Batch Size的理解
  19. 几年工作之后“十句职场密语”
  20. Excel VBA - 操作文件

热门文章

  1. BZOJ3570 : DZY Loves Physics I
  2. Ninject使用demo
  3. [记忆碎片的磁盘整理]老妈
  4. 深入理解STM32内存管理
  5. sql 2008找不到服务器,sql server 2005 数据库迁移问题总结——错误 ‘80004005’ 在 sys.servers 中找不到服务器 ‘XXX’...
  6. [Err] ORA-00979: not a GROUP BY expression
  7. Mybatis用#{}从传递过来的参数中取值
  8. Java实现字母的大小写转换
  9. 巨型帧linux检测,linux – KVM来宾和主机之间的巨型帧?
  10. sock 文件方式控制宿主机_sock