|
示波器,厚礼协好贵,但是有时候还是很想看波形怎么办?我们可以使用STM32的ADC配合DMA连续采集波形数据之后利用串口示波器来显示波形。# C+ p# [" p' t/ ?5 S ; A1 o4 w" N3 h. s( d% s 本期教大伙如何使用STM32 关于ADC配置以及DMA配置。 H: o. n( l7 Z
, R$ G, H# H9 M" l5 O& T1 o' B 1. 什么是DMA? Direct Memory Access(DMA): 直接内存操作!是一种允许外设之间或外设和内存之间直接进行数据传输的技术,相当于直接把数据搬到存储区,无需CPU的干预。这提高了数据传输的效率,同时释放了CPU用于其他任务。 2. STM32中的DMA特性:" F& h7 N4 J4 Z3 y* C% |2 r 多通道支持: STM32的DMA控制器通常支持多个通道,每个通道可以连接到不同的外设或内存区域。 内存到内存传输: DMA可以在两个内存区域之间传输数据,而不涉及外设。+ Z3 }+ y) E7 z2 j, v 内存到外设传输: DMA可以从内存传输数据到外设,例如将数据发送到USART或SPI外设。 外设到内存传输: DMA可以从外设接收数据并将其存储到内存中,例如从ADC获取数据。 循环模式: DMA支持循环模式,即在传输完成后重新开始,无需重新配置。 传输方向和数据宽度: DMA支持不同的传输方向(内存到外设、外设到内存等)和数据宽度(8位、16位、32位)。7 s7 t$ S. [% b; x ?2 \; C F2 B( J7 M 3. DMA的工作原理:( F' \! P+ r" x8 [. h 配置: 在DMA传输之前,需要配置DMA控制寄存器,包括源地址、目的地址、数据宽度、传输方向等。 触发: 一旦配置完成,DMA可以由硬件或软件触发开始传输。(本期我们选择软件触发)/ W2 c8 y2 j' m9 R 中断: DMA传输完成时,可以触发中断以通知CPU。 循环传输: DMA可以配置为在传输完成后自动重新开始,形成循环传输。 4. 应用场景: DMA在需要大量数据传输的应用中特别有用,例如音频处理、图像处理、通信协议等。 * q4 D. L& y0 q# \4 r* [. \ 1 N) A S* q, I% j/ u+ s 内容实现 时钟配置 4 a/ x$ _, t! t ~# } x5 C/ b ?* ]7 _
% k/ S. ^8 Y7 x2 B 首先在CubeMX中选择我们的芯片,配置好时钟树以及时钟。 引脚配置以及DMA配置, V9 t k9 C- R1 }7 ~/ H . x* S3 F; c, T+ o; N! h
# ?2 u7 Q7 B: g 将PA1(或者其他IO)配置为ADC_IN以及模拟模式。 : m( B2 [6 i% Y5 ?6 N' J5 i
在ADC配置中,开启DMA传输,模式为循环模式!! h, D3 b( E! [) g
开启ADC连续转换以及DMA请求~ 防止ADC只采样一次以及DMA只工作一次。 工程内容 接下来就是创建工程了。2 ?% i+ H. a8 B, g! M
定义一个全局变量来存放DMA读取的内容: E' A; u! D2 w8 | 5 r/ k4 U4 B5 P% G6 U
开启DMA,传入相关参数和存储区。
在While中打印存储区的内容,之后利用我们的串口示波器查看波形。6 @: @4 M$ k6 W. _4 H. W2 k3 f
! q" @. @, P0 F9 s+ j2 X 转载自:电路小白 如有侵权请联系删除$ h2 F- i7 W; ^$ D : k t6 e9 d* c0 p |
经验分享 | 通过STM32 TIMER的PWM功能模拟输出正弦波
【福利三:雨露均沾·逢7狂欢】之四:用一个定时器同步另外两个定时器输出PWM
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
STM32H563 ADC+TIM+DMA应用演示
SPI 32位宽DMA方式收发失败问题
微信公众号
手机版