记录-cubemx配置STM32F334双ADC+DMA同步规则转换

前言

样例项目使用场景,使用PID做多路电流调节,实现电流稳定输出,所以需要用到多路ADC检测。

本次项目使用的是ST的F334芯片,外部高速时钟8M,使用ADC1、ADC2同步规则转换模式并且用DMA读取ADC采集数据。

基础知识点

1.ADC转换时间 = 采样周期 + 12.5(ADC时钟周期)

2.同步规则模式

 在同步规则模式中需要特别注意3个点,如下图1,2,3所示。

采样转换如下图4所示,每次对属于ADC模块的2个通道进行转换,转换结束后产生DMA请求,DMA按照ADC1,ADC2设置通道

顺序依次将数据取走,然后放到指定的内存空间。

DMA内存数据结构中的ADC采样数据,高16位为ADC2采样值,低16位为ADC1采样值,如下图所示。

 

注意点:

1.若使用定时器触发ADC采集时,定时器的触发时间不能小于ADC最小完成采样时间。比如此芯片ADC最大时钟为72MHz,最小采用周期为1.5Cycles,

则完成采样一个通道最小时间为0.19us,则定时器触发时间不能小于0.19us.

2.在双ADC模式里,当转换配置成由外部事件触发时,用户必须将其设置成仅触发主ADC,从ADC设置成软件触发,这样可以防止意外的触发从转换。

但是,主和从ADC的外部触发必须同时被激活。

3.在双ADC模式里,为了在主数据寄存器上读取从转换数据,必须使能DMA位,即使不使用DMA传输规则通道数据。

 可参考《stm32中文参考手册》

 

硬件接口配置情况:

ADC1:CH1,CH2,CH3,CH4 做电流检测。CH11,CH12 做温度检测。

ADC2:CH1,CH2,CH3,CH4 做电流检测。

cubemx配置:

1.配置ADC1时钟,通道个数,通道采集顺序,通道采样周期,无外部触发,配置DMA。

 2.配置ADC2时钟,通道个数,通道采集顺序,通道采样周期,无外部触发。

 注:

1.ADC2不需要配置DMA。

2.这里ADC2的Rank配置中最后的2个通道都配置为通道1的原因,查看同步规则模式图示。

 

软件设置启动ADC,获取ADC采集值,最后双ADC同步规则模式样例结束,

重点:

1.根据项目实际情况,最好使用外部触发ADC采样。本次样例未使用外部触发ADC采样,所以采样时间不能设置太快,否则会导致主程序不能执行,而一直执行ADC采样完成中断。

2.在双ADC同步模式下,两个ADC不能转换同一个通道,两个ADC的规则转换序列的通道个数应该相同,每个通道的采样周期也应该相同,以使得两个ADC能保持同步。

 

posted @   随笔日记  阅读(1472)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示