你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32C031评测】3.可调电阻的ADC+DMA

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:
0 G2 w. S: ?  Q) V9 b
$ |3 s; U7 C1 ^ 3-1.jpg
* s) J/ o' X+ J4 K9 X9 H& O4 ~1 |7 y1 z. [# i
图1
9 V8 x* ?6 B: e& [! j5 B. p7 O( O( Q7 R; L5 @8 i
功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:% |' j/ a; _: X/ r* ~
2 K/ H0 y! a9 Z: F, P2 t! X
3-3.JPG
: Z* h# ?! q6 b4 i+ O0 Z& {: {( e9 S" b
图2
: Q8 h$ _/ p  L8 `: D8 T7 ~; ]+ c& ]. x
配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:
6 ]# v( T# a/ {4 \
% S* @) N5 x3 f/ R" U' C& K```
& l' f& q7 z7 q, W" C. x' a/* Perform ADC calibration */+ W# y$ L' \* P
  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
6 J( T9 V" h) s5 |  {0 l, V/ _3 @8 I7 b7 M
    /* Calibration Error */9 E8 X5 E" p& j+ J2 i# V
    Error_Handler();
9 v. \( \' P4 Y  }$ v+ ]$ R0 u& }0 w% }
6 y" J" p6 U/ ^1 c, D; V
  /* Start ADC group regular conversion */7 G! p3 i7 _( ?% ?1 @2 R
  /* Note: First start with DMA transfer initialization, following ones
9 X- h4 S; C" H3 l5 r! @           with basic ADC start. */. ~5 p% h' l" J4 [2 m4 X* r/ `' w
  if (HAL_ADC_Start_DMA(&hadc1,) T: u- Z) r4 f3 N% M
                        (uint32_t *)uhADCxConvertedData,
6 A# E( i+ C0 d9 z                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE
1 @1 t+ x' w; z                       ) != HAL_OK)+ ~5 B/ g* d0 K" y) ~! J
  {
8 J3 N& U0 @/ o4 ~( r& v8 s    /* Error: ADC conversion start could not be performed */# ]1 j3 C; I* ~1 I
    Error_Handler();+ _+ g9 o- B* f! [- A
  }
$ e4 X8 f8 ~; ]```
  w+ j% N+ }/ _- W+ s+ B3 Z( _3 B2 G
这部分是while之前需要定义的,while中修改如下:+ m( d$ {; y$ m5 f2 [7 i

# y5 A; [4 h4 s# d, r) z8 Q```9 S' ^& ^7 l# @' g8 j  a
if (HAL_ADC_Start_DMA(&hadc1,
- G4 v! J. d. q" Q$ b7 s% U(uint32_t *)uhADCxConvertedData,% S* P; [6 X/ V
1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE
! R. A" i& {; S4 h8 y2 x' n) != HAL_OK)
. M2 [9 W0 D) H3 K{
5 U2 ^5 j$ k3 U: N& L1 W7 d/* Error: ADC conversion start could not be performed */
" t( V; W% R8 k; N; G; t7 D4 K- KError_Handler();3 O* ]6 {1 g+ H$ ]' T
}
$ N- ~* P7 q, l6 E$ QHAL_Delay(1000);" @8 C* W+ p# b" K2 r3 g2 e8 y
/* If ADC conversions and DMA transfer are completed, then process data */
; W$ A& m& L9 r. q. I. Rif(ubDmaTransferStatus == 1)
) E- @/ W1 X: @{
; o; q" e5 W4 e4 \3 q# b6 O, A' K* ?; t
uhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);
3 y6 O* D* J# V0 e  ^7 c
8 i9 d$ L4 [6 a# j( uubDmaTransferStatus = 0;
  T. O! C4 ?/ v% y" |' y+ E  Z/ S9 z/ H" s& r
HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);
( O1 ]0 e8 E2 L; P; T0 p% hHAL_Delay(100); /* Delay to highlight toggle sequence */
5 E2 M% b/ Y* l7 Q9 m# P* V% H```
4 O4 r1 B* F9 ?
; I6 L1 s5 `: @8 Q测试结果如图3所示:
8 u2 R7 K6 x$ [" H
% |5 z3 C8 V% J1 n2 i% f 3-2.JPG )% U+ W) A: g, i* z7 |
2 z6 _, ?+ D5 ]9 Q% `
图3) Y/ s3 ~- V4 m# ^% P: k. T

8 S' {. g: k: b2 Y( s  u8 o旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。7 B1 a$ p; O, p7 L
收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版