电子产业一站式赋能平台

PCB联盟网

搜索
查看: 41|回复: 0
收起左侧

STM32CubeMX之ADC采集

[复制链接]

454

主题

454

帖子

2396

积分

三级会员

Rank: 3Rank: 3

积分
2396
发表于 2020-3-31 22:06:00 | 显示全部楼层 |阅读模式
ADC采集是平时非常常用的一个功能,以STM32407为例,其内部有三个12位ADC,每个ADC最高采样率可达2.4MSPS,支持多个通道采集。ADC的工作模式有很多种,包括独立模式、交替采样、多通道扫描等,可通过软件触发或定时器触发采样。本篇文章介绍一种比较常规的使用方式。
前期准备
  • STM32硬件电路板及仿真器(以STM32F407单片机为例)
  • Keil v5以上版本(MDK-ARM)
  • 串口调试助手
    实现功能
    STM32的ADC通过DMA采样一个直流电压,并将电压值并通过串口发送到上位机。STM32CubeMX配置首先,时钟等的配置参考之前文章的介绍(STM32CubeMX之GPIO的使用)。串口配置参考STM32CubeMX之串口通信。ADC配置如下:

    yugqnzbrcrs64048944423.png

    yugqnzbrcrs64048944423.png

    选择开启ADC1的通道0(IN0),配置该通道的参数:
  • Mode为独立模式,因为只用了一个ADC,所以只能是独立模式。
  • ADC时钟分频系数为2,该时钟的设置与采样率有关,12位分辨率时,15个ADC时钟周期完成一次采样。
    本例中PCLK2时钟频率的42MHz,2分频后为21MHz,采样率Fs = 21MHz/15=1.4MHz。
  • 分辨率设置为12位,也可以选择10位、8位或6位。
  • 数据对齐方式为右对齐,即12为AD数据占用16为数据的低12位。
  • 扫描模式为Disable,因为只有1个通道,不需要扫描。
  • 连续转换为Enable,即ADC完成一次转换后自动开始下一次转换。
  • 开始DMA传输。
  • 通道数为1,
  • 触发模式为软件触发,因为已经设置连续转换,因此只需要触发一次即可。
    触发模式可以选择定时器触发,这样可以根据定时器设定采样的周期。
  • 其它参数没有用到,暂不作介绍。
    设置ADC的DMA传输:
    [/ol]

    wojz0n5zqsy64048944523.png

    wojz0n5zqsy64048944523.png

    外设地址不自增,内存地址自增。外设地址即为ADC地址,不会变,内存地址一般为一个数值,DMA向内存传输一个数据后,内存地址自动加1,下次传输到下一个地址。传输模式为循环传输,即内存地址自增到结尾后,从第一个地址重新开始传输。数据宽度为Half Word,即2字节。
    编写程序设置完成后点击生成代码,初始化部分已经自动生成,用户只要添加ADC采样和串口发送代码就行。启动ADC采样:
  • HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC_Buf,ADC_LENGHT);//启动ADC采样 DMA传输到ADC_Buf数组转换为电压并通过串口发送出去。因为已经启动DMA传输,AD转换的值已经自动循环存储到ADC_Buf中。对于实时性要求不高的直流信号,直接从ADC_Buf中读取数据,求平均值作为最终的转换结果即可。程序如下:
  • void Get_Volt_Send(){  uint32_t ADCValue = 0;  uint16_t volt;  char str[10];    for(uint16_t i=0;i  {    ADCValue += ADC_Buf;  }  ADCValue = ADCValue/ADC_LENGHT;//求平均值  volt = ADCValue * 3300 / 4096;//转换为电压 单位mV,参考电压3300mV,12位AD对应4096  sprintf(str,"%4dmV\r
    ",volt);  HAL_UART_Transmit_DMA(&huart1,(uint8_t*)str,8);//串口发送}上位机打开串口助手查看结果:

    sp3ac244aga64048944623.png

    sp3ac244aga64048944623.png


    至此,一个简单的AD应用已经完成。如果需要采样高速的交流信号,可通过外部定时器触发,设置固定的采样率进行采样,采用双缓冲乒乓操作的方式进行采样和数据处理,这里不做详细介绍。
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表