STMCU小助手
发布时间:2022-4-7 15:52
|
实验内容:使用的ADC单通道采集,实现引脚电压的采集并通过串口打印至PC 端串口调试助手。 一、原理图) n' n; e2 V' Q% s% N4 S . ^- X' I- z4 _0 T8 \7 P4 {: ~
二、 CubeMX配置 Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。* D; \) V$ f. |' Z D! \* d
Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。 2 t: \+ w) ^4 o" C9 }
Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这两个引脚用于其他复用功能,如果用于其他复用功能,debug就不起作用了。). ~) r/ u7 x1 c; _: b, T# r
Step4.串口配置(主要为了在串口调试助手显示测试的时间),因为没有用到中断和DMA所以我们就不过多讲解。" B6 m5 ~( J C 1 @- k! B# ^5 t+ z( \
Step5.ADC的配置,因为就使用一个ADC,所以工作模式选择独立模式,如果使用两个ADC时,是双模式,双模式还有很多细分情况。对齐模式,我们一般使用右对齐。ADC扫描使能与否,取决于你是否使用多通道。连续转换使能,因为希望能够不断的转换而不是转换一次。正常转换是使用的规则通道所以需要使能,通道数目就根据你实际使用来填写,多个通道还需要设置优先级,来决定转换顺序。因为是通过转换完成后进入中断以后获取转换值,所以还需要使能中断。(rank中还可以设置采样周期,我是使用默认1.5周期,这里的周期1/ADC_CLK,ADC 输入时钟 ADC_CLK 由 PCLK2 经过分频产生,最大是 14M,我们配置是12M,采样周期1.5周期,转换时间:Tconv = 采样时间 + 12.5 个周期,所以约等于1.17us。) ! @7 A: M; b; f* W5 _
& ?- }9 h0 R( R* q. H8 `0 |8 F $ u! d' f& ^' Q; S! X( Z6 s
到这里关于ADC参数配置基本已经完成,只需要根据之前文章《STM32Cube HAL:GPIO输入/输出(一)》Step4-Step8,设置相关工程参数和生成代码。6 g+ D4 R' v) p( A; F3 ^3 ]$ w 0 V& J5 T9 [+ [3 ?' B. n 三、添加功能代码 " u& f' k) @; Z1 c) H' |# { 1、我们等会会向串口调试助手发送数据,进行实验结果的验证。 发送数据我们采用printf函数,所有需要重定向c库函数printf到串口。注意使用时需要在keil设置中勾选微库(use mircolib),同时需要添加头文件#include <stdio.h>。重定向代码如下(usart.c)7 M, C: t* @; M3 c/ J! [! F7 X
2、定义相关变量,以及使能相关ADC和处理代码(main.c) / }! ^& Q7 S8 A+ N
3、中断回调函数(转换完成中断)(main.c): S' a/ t/ L z# ~( _- v0 W! O9 s6 z 8 \6 ~$ a2 n/ {* W+ j
ADC单通道的转换需要注意几点:5 ]8 Z7 N4 Z) c2 c1 {9 C+ J $ F* o _: {! ]8 J6 p 1、电压的转换,因为我们ADC的精度是12位 ,所以模拟电压经过ADC转换的以后,是一个12位的数值,我们使用串口打印,为了提高可读性,我们会通过公式转换成模拟电压,同时也能验证是否转换正确。我们一般在设计原理图的时候会把 ADC 的输入电压范围设定在:0~3.3v,因为 ADC 是 12 位的, 那么 12 位满量程对应的就是 3.3V,12 位满量程对应的数字值是:2^12。数值 0 对应的就是 0V。 如果转换后的数值为 X ,X 对应的模拟电压为 Y,那么会有这么一个等式成立: 2^12 / 3.3 = X/ Y,=> Y = (3.3 * X ) / 2^12。! M8 Z( J9 x1 L 2、转换周期的设置,主要是通过设置采样周期、ADC时钟,我是使用默认1.5周期,这里的周期1/ADC_CLK,ADC 输入时钟 ADC_CLK 由 PCLK2 经过分频产生,最大是 14M,我们配置是12M,采样周期1.5周期,转换时间:Tconv = 采样时间 + 12.5 个周期,所以约等于1.17us。, C+ N2 f' @4 y; e" e h; J5 l9 b4 U) F0 h/ t + F" k4 G b% u" ?4 c, s- x |
【STM32H5 评测】ADC 电压表
经验分享 | 通过STM32 TIMER的PWM功能模拟输出正弦波
STM32H563 ADC+TIM+DMA应用演示
经验分享 | STM32N6 ADC DMA 传输失败案例分享
实战经验 | MC SDK V6.x软件HSO功能ADC采样设计说明
经验分享 | 为什么重启ADC的DMA传输要先停掉ADC?
经验分享 | 为什么重启ADC的DMA传输要先停掉ADC?
经验分享 | STM32 ADC过采样话题
经验分享 | STM32双定时器+ADC+DMA实战案例
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
微信公众号
手机版