
示波器,厚礼协好贵,但是有时候还是很想看波形怎么办?我们可以使用STM32的ADC配合DMA连续采集波形数据之后利用串口示波器来显示波形。/ W5 ^* v1 l1 G6 ^4 X9 b% S 本期教大伙如何使用STM32 关于ADC配置以及DMA配置。 ![]() 2 [8 K1 ^. |* ~- M: B! d! {. {5 | 1. 什么是DMA?9 C+ W1 r# X9 I: o7 j' c9 o Direct Memory Access(DMA): 直接内存操作!是一种允许外设之间或外设和内存之间直接进行数据传输的技术,相当于直接把数据搬到存储区,无需CPU的干预。这提高了数据传输的效率,同时释放了CPU用于其他任务。5 S* I* L! k8 e9 H# [ 2. STM32中的DMA特性: 多通道支持: STM32的DMA控制器通常支持多个通道,每个通道可以连接到不同的外设或内存区域。( C+ s: L9 ]8 x! t: h" S' d* b, \ 内存到内存传输: DMA可以在两个内存区域之间传输数据,而不涉及外设。 内存到外设传输: DMA可以从内存传输数据到外设,例如将数据发送到USART或SPI外设。 外设到内存传输: DMA可以从外设接收数据并将其存储到内存中,例如从ADC获取数据。 循环模式: DMA支持循环模式,即在传输完成后重新开始,无需重新配置。 传输方向和数据宽度: DMA支持不同的传输方向(内存到外设、外设到内存等)和数据宽度(8位、16位、32位)。2 h6 D6 j1 P6 R+ m, a4 [ 3. DMA的工作原理:6 D5 L$ A3 L. A# \, X 配置: 在DMA传输之前,需要配置DMA控制寄存器,包括源地址、目的地址、数据宽度、传输方向等。; K" ?( G4 b1 Z: y# G; p; i 触发: 一旦配置完成,DMA可以由硬件或软件触发开始传输。(本期我们选择软件触发) ^% f( O7 Y5 v 中断: DMA传输完成时,可以触发中断以通知CPU。 循环传输: DMA可以配置为在传输完成后自动重新开始,形成循环传输。5 L# q& ? J5 \4 L! R: O 4. 应用场景:2 t. v( \6 k* ?) I: I DMA在需要大量数据传输的应用中特别有用,例如音频处理、图像处理、通信协议等。6 q! k* J8 X. b7 m9 m ( A; S1 w N5 Q: Z7 {3 Z 内容实现+ E8 R; v0 Y4 o8 a. z! ` 时钟配置 ![]() 7 A _) R( b0 j- P9 Z4 C( H ![]() ' o0 u6 b( a% s2 r( ^: V- N! b 首先在CubeMX中选择我们的芯片,配置好时钟树以及时钟。 引脚配置以及DMA配置 " z- Y+ _7 f* w2 _) H ![]() 将PA1(或者其他IO)配置为ADC_IN以及模拟模式。 ![]() 在ADC配置中,开启DMA传输,模式为循环模式! ![]() ( @& o1 [5 n2 G/ K: ?) m 开启ADC连续转换以及DMA请求~; {) p2 [, E9 e6 K; C8 \3 [ 防止ADC只采样一次以及DMA只工作一次。7 h, ]) }: |2 `: l; ? 工程内容 接下来就是创建工程了。% Q) j5 S# \8 |$ c ( ~% l$ b3 l# f2 L3 a, ?4 k ![]() " i, I6 d4 m+ R+ E2 Y 定义一个全局变量来存放DMA读取的内容% z7 a1 c" k! T: Q, R1 ~2 q$ p
开启DMA,传入相关参数和存储区。1 L: @# J3 O9 [$ F1 T% ~4 p. H
在While中打印存储区的内容,之后利用我们的串口示波器查看波形。 4 j) i7 S" ^- k9 f; T* D. v ![]() 3 A9 `* G1 H* w5 p A 转载自:电路小白3 H' x( @/ ?( ^. m5 z- p + P8 g) |8 [ y: d6 } 如有侵权请联系删除 4 N) {- d: e* d/ T ' v# h9 t1 g! U 8 G8 e# }) U& H |
Nucleo-F429ZI开发板体验LWIP功能
TouchGFX应用移植自定义屏幕
STM32固件库分享,超全系列整理
【经验分享】新建基于STM32F40x 固件库的MDK5 工程
年终中奖---F429板卡网络应用
【NUCLEO STM32F429ZI开发板】之点灯大师
OpenBLT移植到STM32F405开发板
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
串口通信波特率异常的解决办法