记录-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能保持同步。

浙公网安备 33010602011771号