STM32 ADC 支持同步规则模式 ,其官方解释为:

大致意思就是通道组的 ADC1 的多路开关(由 ADC1_CTLR2寄存器的 ETSRC[2:0]决定), ADC2 被同步触发。在 ADC1 或 ADC2 的转换事件结束时,即 ADC1 或 ADC2 的规则通道转换完毕,会产生一个 EOC 中断。32 位 ADC1_RDTR 寄存器包含上半字(由 ADC2 转换的数据构成)和下半字(由 ADC1 转换的数据构成), 32 位的 DMA 被用来将 ADC_RDTR 中的数据传送到 SRAM。

注意: 1, 不要在两路 ADC 上转换相同的通道(两路 ADC 在同一通道转换时采样时间不可重叠)。

2.在同步模式下, ADC1 和 ADC2 同步采样的两个通道的需要设置为准确的相同采样时间

来个应用例子吧:

// ADC1 做电流检实时检测
ADC_DeInit(ADC1,&ADC_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_MODE_REGSIMULT;
    ADC_InitStructure.ADC_Mode_Scan = ENABLE;                                 // 开启多通道扫描模式
    ADC_InitStructure.ADC_Mode_Continuous = ENABLE;                             // 连续模式
    ADC_InitStructure.ADC_Trig_External = ADC_EXTERNAL_TRIGGER_MODE_NONE;  
    ADC_InitStructure.ADC_Data_Align = ADC_DATAALIGN_RIGHT;
    ADC_InitStructure.ADC_Channel_Number = 4;  
    ADC_Init(ADC1,&ADC_InitStructure); 
ADC_RegularChannel_Config (ADC1,ADC_CHANNEL_2, 1, ADC_SAMPLETIME_7POINT5 );  // I
ADC_RegularChannel_Config (ADC1,ADC_CHANNEL_2, 2, ADC_SAMPLETIME_7POINT5 );  // I
ADC_RegularChannel_Config (ADC1,ADC_CHANNEL_2, 3, ADC_SAMPLETIME_7POINT5 );  // I
ADC_RegularChannel_Config (ADC1,ADC_CHANNEL_2, 4, ADC_SAMPLETIME_7POINT5 );  // I

// ADC2 做电流峰值,位置,温度,电压等检测
    ADC_DeInit(ADC2,&ADC_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_MODE_REGSIMULT;
    ADC_InitStructure.ADC_Mode_Scan = ENABLE;                                 // 开启多通道扫描模式
    ADC_InitStructure.ADC_Mode_Continuous = ENABLE;                             // 连续模式
    ADC_InitStructure.ADC_Trig_External = ADC_EXTERNAL_TRIGGER_MODE_NONE;  
    ADC_InitStructure.ADC_Data_Align = ADC_DATAALIGN_RIGHT;
    ADC_InitStructure.ADC_Channel_Number = 4;  
    ADC_Init(ADC2,&ADC_InitStructure);  
ADC_RegularChannel_Config (ADC2,ADC_CHANNEL_1, 1, ADC_SAMPLETIME_7POINT5 );  // I-PEAK
ADC_RegularChannel_Config (ADC2,ADC_CHANNEL_3, 2, ADC_SAMPLETIME_7POINT5 );  // POS 
ADC_RegularChannel_Config (ADC2,ADC_CHANNEL_4, 3, ADC_SAMPLETIME_7POINT5 );  // NTC

ADC_RegularChannel_Config (ADC2,ADC_CHANNEL_5, 4, ADC_SAMPLETIME_7POINT5 );  // VDC

DMA_DeInit(DMA1_CHANNEL1); 
  DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_RDTR_ADDRESS; 
    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)(Adc12Result); 
    DMA_InitStructure.DMA_DIR = DMA_DIR_PERIPHERALSRC;  
    DMA_InitStructure.DMA_BufferSize = BuffSize;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PERIPHERALINC_DISABLE;
    DMA_InitStructure.DMA_MemoryInc = DMA_MEMORYINC_ENABLE;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PERIPHERALDATASIZE_WORD; 
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MEMORYDATASIZE_WORD; 
    DMA_InitStructure.DMA_Mode = DMA_MODE_CIRCULAR; 
    DMA_InitStructure.DMA_Priority = DMA_PRIORITY_MEDIUM;
    DMA_InitStructure.DMA_MTOM = DMA_MEMTOMEM_DISABLE;
    DMA_Init(DMA1_CHANNEL1, &DMA_InitStructure);

。。。。

ADC_SoftwareStartConv_Enable(ADC1,ENABLE); 
ADC_SoftwareStartConv_Enable(ADC2,ENABLE);

这样DMA就直接读取到两个ADC同步转换的结果了。

STM32 ADC 同步规则模式 ADC1与ADC2同用一个DMA相关推荐

  1. STM32的同步规则模式使用

    由于要采集电压.电流以计算功率.阻抗等信息,STM32的同步规则模式很适合于这种情景.使用时有几点需要注意的: 1.选择正确的模式:ADC_Mode_RegSimult,即DUALMOD[3:0] = ...

  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 ADC多通道规则采样和注入采样

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 什么是ADC? STM ...

  6. STM32 ADC的规则通道和注入通道有什么区别(转)

    STM32的每个ADC模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换.  STM32特别地加入了多种成组转换的模式,可以由程序设置好之后,对多个模拟通道自动地进行逐个地采样转换. 有2 ...

  7. STM32 ADC 单次模式、连续模式、扫描模式(转载)

    ADC单通道: 要求进行一次ADC转换:配置为单次模式使能,扫描模式失能.这样ADC的这个通道,转换一次后,就停止转换. 要求进行连续ADC转换:配置为连续模式使能,扫描模式失能.这样ADC的这个通道 ...

  8. STM32 ADC 单次模式、连续模式、扫描模式

    ADC单通道: 要求进行一次ADC转换:配置为单次模式使能,扫描模式失能.这样ADC的这个通道,转换一次后,就停止转换. 要求进行连续ADC转换:配置为连续模式使能,扫描模式失能.这样ADC的这个通道 ...

  9. STM32——ADC采集

    目录 ADC简介 ADC主要特征 ADC功能框图 ADC引脚 电压输入范围 通道选择 单次转换模式 连续转换模式 转换顺序 规则序列 注入序列 触发源 转换时间 中断 转换结束中断 模拟看门狗中断 D ...

最新文章

  1. 计算机的桌面图标类型,给“我的电脑”翻身 另类桌面图标排列
  2. seaborn系列 (15) | 双变量关系图jointplot()
  3. 大专计算机单招有哪些,大专单招和统招的区别有哪些
  4. 【MySQL】可重复读模式下 unique key失效案例
  5. Part2_2 Bs4常见操作
  6. 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
  7. 基于组块设计执行开放世界等距游戏引擎
  8. 【原创】SQL SERVER 查询Job作业基本信息及执行情况
  9. 操作痕迹包括那些_高级消防设施操作员专题之:走近气体灭火系统
  10. 关于C#关闭窗体后,依旧有后台进程在运行的解决方法
  11. 微机计算机原理及应用ppt,微型计算机原理及应用PPT课件
  12. 挑战性题目DSCT501:大整数因子分解
  13. STM32 易阅读的代码风格
  14. python风格迁移_图像风格迁移实战(附Python实战)
  15. 华为模拟器eNSP免费下载
  16. 干货分享:PDF分割合并工具免费哪个好用?
  17. 《深入理解SPARK:核心思想与源码分析》一书正式出版上市
  18. 【图像隐藏】基于matlab像素预测和位平面压缩的加密图像可逆数据隐藏【含Matlab源码 2218期】
  19. UCT(信心上限树算法)解四子棋问题——蒙特卡罗法模拟人机博弈
  20. 视频教程-微信公众号二维码签到和抽奖软件-微信开发

热门文章

  1. 技术管理:带人和团队管理
  2. 假期《JAVA技术》预备作业01
  3. 使用sql语句,查询 mysql 的安装地址
  4. Android 界面滑动实现---Scroller类 从源码和开发文档中学习(让你的布局动起来)...
  5. rman datafile恢复(归档模式)
  6. 超图 iServer服务体系学习
  7. powerdesigner使用vba脚本创建物理模型的表和列
  8. 使用PowerDesigner设计物理模型并运行脚本检查模型图解
  9. Java Servlet 开发常用代码、模板、问题
  10. 前端模块化CommonJSES6