STM32G473CBT6关于ADC采集的总结

STM32G473CBT6单片机在浮点运算,信号采集、数据处理方面有很大的用途。因相关的资料较少,特此做一下笔记,方便后期使用。STM32CubeMX软件比较强大,兼容IAR和keil方便直接生成代码文件,但相关的库不熟悉,好东西用起来较苦恼。

ADC是STM32的一大外设资源,可以方便数据采集。但ADC的调用和ADC采集的方式较多,暂时列出常用的使用方法。

Scan Conversion Mode:ADC的采集通道很多,其支持单通道采集和多通道采集。多通道数据采集时,需要选择此标签为Enable,才能采集扫描其他的数据通道。

Continuous Scan Conversion Mode:ADC采集时如果采集一次就停止,则选择Disable;如果需要周期性的连续的采集数据,则选择Enable。

DMA Continuous Requests:当需要选择DMA进行数据转运时,需要关注此标签,选择Enable,表示DMA通道数据转运完成后,继续请求dma进行数据转运,相当于连续转运。

一、ADC获取数据的方式

ADC完成数据采集后,有两种方式进行获取结果,第一种轮询方式,此原理是ADC采集完成后,MCU查询采集完成状态,之后获取采集结果。此种方式因MCU需要等待采集完成,因此较耗费资源;第二种方式是DMA方式,当ADC采集完成后,DMA处理器将结果转运到内存中,我们直接访问内存即可获取结果,应用较广泛,MCU该干啥干啥,不占用资源。第三种方式是中断,因我不常用就不详述。

二、ADC轮询采样:

       2.1设置时钟,因我的硬件是采用外置8M晶振。因此选择如下:

   2.2 选择串口调试模式

  2.3 设置系统主频为72M 

  2.4 设置ADC输入管脚,本人硬件上是ADCIN4单通道采集,所以选择如下:

        Clock为8分频,因ADC采集最高速率不应超过14M的限制。 

   2.5 Rank的采样时间尽可能长些,这样会准一些。本文设置为92.5cycles。 

 

    2.6 之后即可生成代码。在自己写的代码中调用以下函数可以实现周期性的轮询adc的结果。

三、ADC+DMA采样:

       设置时钟等就不在赘述,在此直接上关键设置。

        3.1 DMA的设置,mode 改为circular,可以周期性的循环搬运数据。

     3.2 adc的设置 continueous conversion mode 需要改为enable,才能adc连续采集;dma                     continuous requests改为enable,dma才能连续搬运数据。 

     3.3 生成代码,程序中增加如下函数即可。 

四、ADC+DMA+定时器采样

        设置时钟等就不在赘述,在此直接上关键设置。

        4.1 设置tim3,定时周期为(14400)*50000/72M=10s

   4.2 adc触发选择tim3,连续转换模式必须关闭,等待定时器触发 

   4.3 生成代码后,主函数中调用如下函数即可 

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值