STM32 ADC 同步规则模式 ADC1与ADC2同用一个DMA
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相关推荐
- STM32的同步规则模式使用
由于要采集电压.电流以计算功率.阻抗等信息,STM32的同步规则模式很适合于这种情景.使用时有几点需要注意的: 1.选择正确的模式:ADC_Mode_RegSimult,即DUALMOD[3:0] = ...
- 双极型adc与stm32_关于STM32 双ADC同步规则转换两路数据的问题?
因系统要求需升级ADC的采样方式(以前方式:扫描方式,TIMER2触发ADC软启动,2通道规则序列,DMA传完中断),为了进一步实现两路信号的同步性能,采样STM32 双ADC同步规则转换.(time ...
- STM32三个ADC同步规则采样
同步采样一般应用于交流信号中,是指多个ADC的采集时刻完全同步.在电力测量领域,经常会遇到需要同步采样的情况,比如同步采样电压电流信号,计算其相位差.阻抗分析时,也需要对输入输出信号进行同步采集,分析 ...
- STM32F303RE 四个ADC同步规则采样
STM32F303RE 芯片有4个ADC, 采样频率据说能达到5Mbsps 已经算是非常高的了. 比较适合做采样 参考文章 STM32三个ADC同步规则采样 参考上面的配置文章. 经过不断的失败和重复 ...
- STM32 ADC多通道规则采样和注入采样
layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 什么是ADC? STM ...
- STM32 ADC的规则通道和注入通道有什么区别(转)
STM32的每个ADC模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换. STM32特别地加入了多种成组转换的模式,可以由程序设置好之后,对多个模拟通道自动地进行逐个地采样转换. 有2 ...
- STM32 ADC 单次模式、连续模式、扫描模式(转载)
ADC单通道: 要求进行一次ADC转换:配置为单次模式使能,扫描模式失能.这样ADC的这个通道,转换一次后,就停止转换. 要求进行连续ADC转换:配置为连续模式使能,扫描模式失能.这样ADC的这个通道 ...
- STM32 ADC 单次模式、连续模式、扫描模式
ADC单通道: 要求进行一次ADC转换:配置为单次模式使能,扫描模式失能.这样ADC的这个通道,转换一次后,就停止转换. 要求进行连续ADC转换:配置为连续模式使能,扫描模式失能.这样ADC的这个通道 ...
- STM32——ADC采集
目录 ADC简介 ADC主要特征 ADC功能框图 ADC引脚 电压输入范围 通道选择 单次转换模式 连续转换模式 转换顺序 规则序列 注入序列 触发源 转换时间 中断 转换结束中断 模拟看门狗中断 D ...
最新文章
- 计算机的桌面图标类型,给“我的电脑”翻身 另类桌面图标排列
- seaborn系列 (15) | 双变量关系图jointplot()
- 大专计算机单招有哪些,大专单招和统招的区别有哪些
- 【MySQL】可重复读模式下 unique key失效案例
- Part2_2 Bs4常见操作
- 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
- 基于组块设计执行开放世界等距游戏引擎
- 【原创】SQL SERVER 查询Job作业基本信息及执行情况
- 操作痕迹包括那些_高级消防设施操作员专题之:走近气体灭火系统
- 关于C#关闭窗体后,依旧有后台进程在运行的解决方法
- 微机计算机原理及应用ppt,微型计算机原理及应用PPT课件
- 挑战性题目DSCT501:大整数因子分解
- STM32 易阅读的代码风格
- python风格迁移_图像风格迁移实战(附Python实战)
- 华为模拟器eNSP免费下载
- 干货分享:PDF分割合并工具免费哪个好用?
- 《深入理解SPARK:核心思想与源码分析》一书正式出版上市
- 【图像隐藏】基于matlab像素预测和位平面压缩的加密图像可逆数据隐藏【含Matlab源码 2218期】
- UCT(信心上限树算法)解四子棋问题——蒙特卡罗法模拟人机博弈
- 视频教程-微信公众号二维码签到和抽奖软件-微信开发