搭建stm32电机控制代码框架(三)——Stm32CubeMx配置ADC采样

这篇具有很好参考价值的文章主要介绍了搭建stm32电机控制代码框架(三)——Stm32CubeMx配置ADC采样。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

电机控制另一个关键的模块就是ADC采样,这个模块配置的好坏决定了采样电流和电压的精准度,因此有必要对其进行深入学习。

简介:

STM32 在片上集成的ADC 外设非常强大。STM32F103xC、STM32F103xD 和STM32F103xE增强型产品内嵌3个12位的ADC,每个ADC 共用多达 21 个外部通道,可以实现单次或多次扫描转换。如 STM32F103VET6,属于增强型的CPU,它有18个通道可测量 16 个外部和2个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行ADC 的结果可以左对齐或右对齐方式存储在 16 位数据存器中,模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低闹值。

STM32的ADC模块的几个特点:

  • 12位分辨率,指AD转换器对输入信号最小变化的灵敏度,表示数字输出最低位对应的模拟信号。计算公式:信号量程/((2^n)-1)。STM32微控制器为12位分辨率。
  • 转换时间可编程。采样一次至少要用 14 个ADC 时钟周期,而ADC 的时钟频率最高为14 MHz,它的采样时间最短为 1us。
  • 输入电压范围为 0~VREF+,其中VREF+一般为3.3V
  • 收到触发信号才开始转换。
  • 读取可通过两种方式:CPU和DMA读取。将其读到内存中存储。
  • 数据格式分为左对齐和右对齐。STM32的ADC为12位ADC,转换后的结果为12位的数据,而数据寄存器为16位,所以转换后的数据在数据寄存器中右两种对其方式,左对齐和右对齐,进行数据转换的时候需要注意。

在了解了一些基础的STM32的ADC知识后,熟悉一下CubeMx中ADC的配置界面,如下图所示,第一步:选择通道。选择PC1作为采样接口,选择ADC采样模块1,并且选择通道11。

adc电机采样,stm32,单片机,嵌入式硬件

第二步:配置ADC参数,时钟分频、工作模式、数据对齐方式、触发源、输出模式等

如下链接时ADC参数的中文注释:中文注解:STM32CubeMX ADC参数配置页-物联沃-IOTWORD物联网

 (1)选择工作模式,由于本实验是同一个引脚是只有一个ADC在采样信号,因此选择独立模式,当一个引脚有多个ADC采样信号的时候,再配置其他模式。

adc电机采样,stm32,单片机,嵌入式硬件

(2)选择时钟分频,选择时钟分频为PCLK2的2分频,一般默认选择2分频,看自己采样率的需求,这里可以选择他的4/8分频。

adc电机采样,stm32,单片机,嵌入式硬件

(3)数据对齐方式为右对齐

(4)扫描转换模式,就一个通道不需要打开,当有多个通道需要采集信号时必须开启扫描模式,此时ADC将会按设定的顺序轮流采集各通道信号

(5)连续转换模式,本次小实验通过TIM2的定时器触发采样,因此转换完一次之后等待下一次触发之后再次开始转换,选择模式为不使能。

adc电机采样,stm32,单片机,嵌入式硬件

(6)选择通道数目,此时选择为1。

adc电机采样,stm32,单片机,嵌入式硬件

(7)选择触发源,配置为定时器TIM2的比较事件,触发电平为上升沿。

adc电机采样,stm32,单片机,嵌入式硬件

 第三步:配置TIM2定时器,为ADC提供触发源。

在完成ADC自身模块的配置后,需要对触发源进行合理配置,否则无法正常采样。TIM2的配置如下图所示,选择4通道作为输出通道,此时TIM2的时钟源为72M,根据前面定时器模块知识需要要想实现72分频,PSC值设置为71,设置比较值为499时对应采样间隔时间为 (499+1)/1000000 =0.0005s,采样频率为2kHz。 

adc电机采样,stm32,单片机,嵌入式硬件

第四步:打开DMA搬运功能并在主函数中打开以上外设,选择上图中的DMA setting选项卡,打开其功能,并且在主函数的用户代码中打开DMA功能,如下代码所示:

 HAL_TIM_OC_Start(&htim2,TIM_CHANNEL_4);
 HAL_ADC_Start(&hadc2);
 HAL_ADC_Start(&hadc1);
 HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t *)&g_adc_value,1);
 LL_DMA_DisableIT_HT(DMA2,LL_DMA_STREAM_0);

 第五步:上面DMA将ADC转换的数据存到了g_adc_value变量中,我们设置的是右对齐方式并且有效数据位为12位,因此需要乘以系数 3.3/4096。

adc电机采样,stm32,单片机,嵌入式硬件根据右对齐方式定义,需要将ADC采样值生成代码后进行测试得到如下结果:

adc电机采样,stm32,单片机,嵌入式硬件

 文章来源地址https://www.toymoban.com/news/detail-542149.html

到了这里,关于搭建stm32电机控制代码框架(三)——Stm32CubeMx配置ADC采样的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建stm32电机控制代码框架(四)——单路PWM生成

    STM32中单路PWM的生成一般是基于某一个通用定时器,本次小实验选取TIM2通用定时器,选择PA5作为PWM端口输出。配置步骤如下: 第一步:配置外部晶振与基本的时钟,如下图所示。 (1)选择外部晶振  (2)配置时钟树,如下图所示,TIM2的时钟总线挂在ABP1上,此时时钟源为

    2024年02月07日
    浏览(51)
  • 电机FOC控制(三)STM32 CUBEMX 配置ADC采样

    本文在电机FOC控制(二)STM32 CUBEMX 配置三相PWM互补输出基础上,继续讲述如何STM32 CUBEMX 配置ADC寄存器,使TIMER1 PWM互补输出CC4触发ADC注入采样的过程。 打开Clock Configuration界面,将ADC设置为42.5MHz。 设定ADC1通道7和通道8为单端输入: 设定ADC2通道6和通道7为单端输入: ADCs_Comm

    2024年04月23日
    浏览(43)
  • 【STM32】cubeMX配置HAL库驱动L298N控制直流有刷电机

    目录 1.电机为什么需要驱动板呢?为什么不能用控制器直接控制电机呢? 2.H桥电路介绍 3.L298N原理介绍 4.实物接线图 5.CUBEMX配置 6.代码 7. 演示视频 L298N是常用来驱动小型直流有刷电机(两个)和步进电机(一个)的电机驱动板,其电路原理就是两个H桥电路,控制原理是使用

    2024年02月16日
    浏览(51)
  • stm32cubemx hal学习记录:电机控制

    1、配置RCC、SYS,SYS的Timebase Source选择TIM6 2、配置USART1、时钟84MHz 3、激活FreeRTOS,选择CMSIS_V1,Config parameters种USE_TIMERS选择ENABLE 1、选用TIM3的编码器模式  2、驱动使用L298N,将PB6、PB7设置为输出模式  3、使用TIM2的CH1输出1kHz的PWM 1、设置两个软件定时器,一个用于总控制,一个

    2024年02月17日
    浏览(41)
  • 【STM32+CUBEMX】TMC5160电机驱动简要配置

    TMC5160简介                 1.1、引脚图          1.2、关键引脚                1.2.1 模式选择引脚                  1.2.2 时钟和SPI引脚                   1.2.3 驱动使能引脚  2.SPI发送数据结构         发送到 TMC5160 的每个数据报由一个地

    2024年02月06日
    浏览(48)
  • 野火STM32电机系列(三)Cubemx配置CAN通信

    CAN接口: PI9 PB9 1.配置CAN 通信参数 由于F4的 CAN外设挂载在APB1上,时钟配置后APB1的时钟速率为42MHz,目标通信速率为1000KHz,由公式: BaudRate = 1/NominalBitTime NominalBitTime = 1tq + tBS1 +tBS2 设置参数如下: CAN时钟分频参数为7,BS1为4,BS2为1,CAN模式为Nomal模式。 生成工程 在can.c中添加

    2024年02月11日
    浏览(48)
  • STM32CubeMX 直流电机串级PID位置速度控制、HAL库、cubemx、PID、串级PID、位置控制、速度控制、双环控制

    提示:本文章的串级PID位置速度控制,是在前两篇文章速度控制,位置控制的基础上实现的,这一章节中不需要额外的cubemx的配置,只需要写简单的代码即可,复杂的地方在于串级pid的调试过程。 pid是我们在学习单片机中首先要学会的控制算法,而串级pid又是在单pid的基础上

    2024年02月14日
    浏览(52)
  • 野火STM32电机系列(六)Cubemx配置ADC规则和注入通道

    前文已经配置了GPIO、编码器 本节讲解CubeMXADC规则和注入通道 本文adc注入通道采用定时器触发,因此在上文定时器配置的基础上进行 常规信号(温度等)使用带DMA的常规通道连续采样 注入采样由定时器触发,采集电机三相电流,并进入adc中断执行10khz的控制程序 ADC硬件接口

    2024年02月08日
    浏览(47)
  • 野火STM32电机系列(五)Cubemx配置高级定时器TIM1

    鸽了一段时间,放心不会断的哈,目前仅仅是显示屏坏了,不影响后面项目 前文已经配置了GPIO、编码器 本节讲解CubeMX高级定时器TIM1配置带死区的6路互补的PWM 同时配置信号触发后续ADC采集 板子引角的原理图如下 对应的: Motor1--U+--PA8--TIM1_CH1 Motor1--U---PB13--TIM1_CH1N Motor1--V+--

    2024年02月15日
    浏览(70)
  • STM32控制矩阵按键,HAL库,cubeMX配置

    我使用的是STM32F103RCT6这款单片机,HAL库,使用cubeMX配置。 使用矩阵按键实现功能的方法为轮询法 1.首先矩阵键盘原理图如下: 2.实物图 按照矩阵键盘接法,16个按键需要8个io口,我选择了PC口的0~7号引脚,前四个依次接矩阵键盘的行,后四个依次接矩阵键盘的列;矩阵键盘的

    2023年04月17日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包