Cube生成定时器2触发双ADC同步采集并用DMA传输

前言

用cube生成一个用定时器触发ADC1,ADC2同步采集的程序,单片机选择的是STM32L476RGT6,用定时器2进行ADC采集触发,更改定时器2的定时周期便可以更改ADC的采样周期,ADC1和ADC2使用同步规则模式,并用DMA进行数据的传输。

STM32的ADC采样完成总共需要的时间是
ADC完成采样时间=采样周期+12个转换周期
举个例子,假如ADC的时钟是15MHz,采样周期是3个周期,3个采样周期加上12个转换周期,一共是15个周期,因为时钟是15MHz,所以完成一次ADC转换总共需要的时间就是1us。

STM32L476RGT6的ADC时钟是32MHZ,采样周期最短是2.5个周期,最快完成一次采集的时间大约是0.45us,因此,定时器触发的周期一定要大于这个时长

参考 STM32参考手册 里面对于ADC同步规则模式的介绍。
在这里插入图片描述

Cube生成的过程

时钟源配置

首先时钟源选择 晶体/陶瓷谐振器,
在这里插入图片描述

调试方式配置

然后在sys里面选择调试方式为Serial Wire
在这里插入图片描述

定时器配置

定时器1选择PWM输出模式,定时器的时钟是80MHz,进行2分频,计数周期是80,生成一个频率是500KHz,占空比为50%的PWM波,用于验证ADC的采样速率。
在这里插入图片描述
定时器2的时钟源选择内部时钟,2分频,40计数周期,实现1MHz的ADC触发。Trigger Event Selection TRGO 一定要选择 Update Event ,不然不会触发ADC。
在这里插入图片描述

ADC配置

ADC1的通道是12,ADC1和ADC2都有通道打开的情况才会出现双通道的模式选择,如果只有一个独立模式,可以先打开一个ADC2的通道,再来ADC1里面进行模式选择。模式选择双通道同步规则模式,触发源选择定时器2上升沿触发,采样周期是2.5个周期,其余的选项默认设置就行。
在这里插入图片描述
ADC2的通道是15,配置默认,ADC2一定要与ADC1的采样周期相同
在这里插入图片描述

DMA配置

DMA只需要给ADC1添加一个DMA通道,ADC2不用配置。ADC1添加的DMA模式选择循环传输,数据长度都选择Word。
在这里插入图片描述

串口配置

串口选择串口2,配置默认
在这里插入图片描述

中断配置

在这里插入图片描述

配置完成后的引脚图

在这里插入图片描述

时钟树配置

单片机运行的频率是80MHz,ADC采集频率是32MHz。
在这里插入图片描述

生成工程代码

上述都配置完成后便可以生成代码啦,
在这里插入图片描述
在这里插入图片描述

添加程序

main.cl里面需要添加的程序

在初始化完成后,while循环之前添加该段代码,

/* USER CODE BEGIN 2 */
HAL_TIMEx_PWMN_Start(
  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值