|
示波器,厚礼协好贵,但是有时候还是很想看波形怎么办?我们可以使用STM32的ADC配合DMA连续采集波形数据之后利用串口示波器来显示波形。& U* q; h: K, v2 H# V 4 C8 Z7 d! N0 ^+ ]: k. \9 ~" {$ n 本期教大伙如何使用STM32 关于ADC配置以及DMA配置。
5 f( w" V; X) v$ h+ }* o8 ? 1. 什么是DMA?2 i4 B$ F7 p# [+ A) z+ s- e Direct Memory Access(DMA): 直接内存操作!是一种允许外设之间或外设和内存之间直接进行数据传输的技术,相当于直接把数据搬到存储区,无需CPU的干预。这提高了数据传输的效率,同时释放了CPU用于其他任务。 ; W* s$ h- P3 N 2. STM32中的DMA特性:6 ^6 I" I" R7 h- f1 f/ x 多通道支持: STM32的DMA控制器通常支持多个通道,每个通道可以连接到不同的外设或内存区域。 内存到内存传输: DMA可以在两个内存区域之间传输数据,而不涉及外设。 内存到外设传输: DMA可以从内存传输数据到外设,例如将数据发送到USART或SPI外设。( }: V, O0 Q- D c \ 外设到内存传输: DMA可以从外设接收数据并将其存储到内存中,例如从ADC获取数据。 循环模式: DMA支持循环模式,即在传输完成后重新开始,无需重新配置。9 T! N3 N) X5 a2 w4 V# T 传输方向和数据宽度: DMA支持不同的传输方向(内存到外设、外设到内存等)和数据宽度(8位、16位、32位)。5 _* z) A7 r( z# J9 S9 W . }: w9 j' |( ]2 C% G 3. DMA的工作原理: 配置: 在DMA传输之前,需要配置DMA控制寄存器,包括源地址、目的地址、数据宽度、传输方向等。- g* P' V2 ]" E 触发: 一旦配置完成,DMA可以由硬件或软件触发开始传输。(本期我们选择软件触发) ?5 w2 Z7 o- k( @; o4 a' |) | 中断: DMA传输完成时,可以触发中断以通知CPU。 循环传输: DMA可以配置为在传输完成后自动重新开始,形成循环传输。3 n; _' D( H5 s$ _' n! b& D- }* ` 4. 应用场景:2 G/ @' G3 n! i( W: s' ~6 Z DMA在需要大量数据传输的应用中特别有用,例如音频处理、图像处理、通信协议等。 0 n" p; n8 {7 t. a* c 内容实现4 H) @& B; X! f 时钟配置 + G7 F0 k/ q) C9 v; U
* G( M& T0 [' X
) U1 g- W1 X: j! r; v3 N) p 首先在CubeMX中选择我们的芯片,配置好时钟树以及时钟。 引脚配置以及DMA配置
9 ^0 ]5 S0 C" G; e- v& W 将PA1(或者其他IO)配置为ADC_IN以及模拟模式。1 J$ x2 P$ n# j2 S, ? * Y: d& Q& Z+ y2 ` U
& ~4 L& |" Q1 {* j2 Q+ \ 在ADC配置中,开启DMA传输,模式为循环模式!) o7 U |$ w4 I' ^2 C( l 9 g5 u. O# F# B. j; h& H5 i# \
5 M6 v o0 Z/ S 开启ADC连续转换以及DMA请求~ 防止ADC只采样一次以及DMA只工作一次。) o, ~: J9 L( z8 F- [" R* i) \ 1 V; s/ g0 L. P8 {& Z3 D+ B 工程内容 接下来就是创建工程了。; L) a) K b0 G7 x I6 o7 c! e- {/ f5 ^ . A0 D: q1 x9 y
定义一个全局变量来存放DMA读取的内容* }1 a3 B9 x. t. T& u6 {
开启DMA,传入相关参数和存储区。
在While中打印存储区的内容,之后利用我们的串口示波器查看波形。* x( G/ ?* f1 z# t / t% v2 V' r. M8 H m
转载自:电路小白3 i7 W% ?% U. F: v 如有侵权请联系删除 9 z/ j' h5 J; R$ z: X- Q. ?% M- i 2 T9 L/ Q' l* t% x |
经验分享 | 通过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方式收发失败问题
微信公众号
手机版