STMCU小助手
发布时间:2021-12-30 13:13
|
stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。 0 \" v1 j3 N% ~0 d$ R J 需求: 2 Z, Z* }1 W& V: Y 使用stm32H743的ADC采集5路数据,当然还要配合DMA,现在把5路数据分在两个ADC上,ADC1和ADC3,那么也要用两个DMA还传送数据。 CubeMX配置如下:( M* u* q F. K( d% \8 y& m 配置时钟:( V- |% g. o: t( m, l+ o 先配置主时钟,我的是8M的,再配置系统频率480M,然后配置ADC时钟36M,分频后ADC的频率为18M,其它参数系统会自动配置,这个还是比较方便的,配置如下图:
% A' Z0 j+ h8 N6 r) t! a4 _
* x+ X" C) q) L v. y 下面配置芯片管脚: ; Y. G; e/ q0 ]8 W+ m% n ADC1下面采3个通道:
DMA配置:0 n, U1 e8 E# e9 U6 ] . t8 t8 b4 B- P i- `. c
c5 z+ w% G. a2 O. w3 U" J' m/ ~ GPIO配置:4 K# M' y# o* ~% P* A1 ~/ W R / w9 D7 o/ @+ t+ f5 v7 _1 W- y
; g7 y. z( E' Y4 F- }% W5 x ADC3下面挂2个通道:" P" j: @5 {- W' N+ |1 x8 { 主要是DMA,避免冲突,用了另一个DMA,其它配置都一样。 0 b# v$ g% I6 k1 m' n- G
. j& g1 X* L4 {$ b; y2 Y 中断配置: 5 c" B& Q, F5 w& M8 A' Y6 b' Z 因为在使用HAL库时,函数调用太繁杂,也没有那么多时间细细研究,所以,把调用HAL句柄的选项点掉了: ' H$ J1 d6 v8 C: R6 v
! c( }% @8 n9 O8 i/ O 然后就可以生成代码了。& E) b- V. Z- V, L3 t4 w 在生成后的代码中,要启用采样时调用函数:
在文件stm32h7xx_it.cvoid 中的中断函数:6 _5 j$ q8 a) r+ N void DMA2_Stream0_IRQHandler(void) & {. d/ Y x, n2 X void DMA1_Stream0_IRQHandler(void) 中,要清中断标志位和停止采集:
7 T5 R- P$ N% B8 Z/ p% n9 \ ! m: J' A- q5 Q, q& { |
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
微信公众号
手机版