你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 ADC多通道转换的DMA传输示例

[复制链接]
STMCU小助手 发布时间:2021-1-29 10:23
STM32ADC多通道转换的DMA传输示例
* F  G4 k5 M5 r" T+ @4 A' J
这里以STM32F334 Nucleo板作为硬件平台,使用ARM keil MDK集成开发环境。
, @+ J1 ^) ~" b# [( d
对3个ADC通道进行连续、扫描转换,转换结果通过DMA传输到内存,再作为TIM2的3个比较寄存器的值,以控制TIM2三个通道的PWM输出。
另外,使用TIM6的更新事件作为ADC转换的启动触发源。本示例中,TIM6的周期远长于TIM2的周期,通过TIM6周期性地触发AD转换。
" n' l8 R: t' _, H0 m" B/ }. c
使用STM32CubeMx进行配置,基本配置过程如下:

; [( A3 w9 L% O4 b! j
1.     时钟配置【略】。
2.     配置ADC。选择ADC1的通道7、8、9三个通道,单端输入。
4.1.png

; }# E% I9 V, i, n8 I: R  X( @
4.2.png
& P+ F7 Y6 B- D7 {" |
4.3.png

( B  G6 B. b  ^. `- [
配置有关ADC触发DMA传输的内容【EOC触发;Normal模式;从外设到内存;DMA传输中断开启】
3 I0 N0 _; M; p0 o' F
4.4.png
; t( h# V7 L3 p% `8 I- m
3.     TIM2的配置【时基参数/PWM配置】
4.5.png
" w* [: u: G/ L% s/ a
TIM2的三个通道的PWM初始配置一样。
4.6.jpg
* |- s. R% H+ D5 v2 L+ z  G3 q# R
4.     TIM6的配置如下【其中更新事件作为触发输出】
4.7.png
/ m* u$ V- H) S" `4 j: ^
5.     生成初始代码,创建工程。
6.     添加用户代码。
6.1关闭TIM2的3个通道CCR寄存器的预装载功能,修改即时生效。
  1. __HAL_TIM_DISABLE_OCxPRELOAD(&htim2,TIM_CHANNEL_1|TIM_CHANNEL_2|TIM_CHANNEL_3);
复制代码
( Q6 G0 t7 V+ P6 E0 v3 k
【这点不是必须的,根据实际应用来定】
1 E# L( S# }4 f, G% {) D
6.2 开启TIM2三个通道的PWM输出并使能TIM2.
  1. HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);& [7 E. A3 O* Z4 X. e& @: y
  2. HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);2 E5 E  ^* @. k* e, n9 F
  3. HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
复制代码
/ ]# n: m0 I1 b9 K( ?. k) m& |
6.3 做ADC的校准操作。
  1. HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED);
复制代码

2 z) l  I* t( y0 B4 ]4 H$ w
6.4 做好ADC转换及DMA传输的准备工作。Value_Adc为存放ADC结果的内存数组名。
  1. HAL_ADC_Start_DMA(&hadc1,(uint32_t *)Value_Adc, 3)
复制代码

4 R( M$ f8 R. b( B7 N
6.5 开启TIM6的计数并通过它触发AD转换。
  1.    HAL_TIM_Base_Start(&htim6);
复制代码
5 _0 k/ s! K+ \% w; _
6.6 在DMA传输完成中断里添加处理代码。

9 p* H6 \, l3 H* z- F! N- {; P0 d
4.8.png
将3个通道的AD转换结果赋给相应的比较寄存器以达到调整PWM占空比输出的目的。
因为这里DMA是配置为NORMAL模式,需从新开启DMA传输。
! Y& K4 n$ w! f0 F% x3 ^
7.     结果验证。
编译运行查看结果。
【三路PWM输出,占空比与ADC转换值相关。本示例的ADC输入没有实际信号,只是悬空而已,结果仅做演示。】
( W$ K2 [" R5 g) o4 `" W+ l3 m
4.9.jpg
, q. \/ f1 H' x7 M' f5 a, s- H
文章出处: 茶话MCU

7 b* j! ~- O' @% Z
赞 收藏 1 评论0 发布时间:2021-1-29 10:23

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版