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

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

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:
# A6 w; U% y8 T. {/ \" A' e4 D5 P$ b/ v! \7 B3 z% J- |
3-1.jpg / m& b" X- @0 v( k) D2 W$ b9 U
  f+ a1 A0 P. \4 n# E
图1
% e: C) `$ n- A) V5 X, k+ V/ Y9 V0 [0 k5 M6 A% e8 s
功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:
; q8 j% q; I  T) U% ?2 A1 M% Y& N( R' _: V3 ?* V* l) S' e. J
3-3.JPG + D5 E3 v5 O1 d: o, {

0 W- j' I( I) y8 S; ~' B6 C0 L图2
0 k) o5 k1 v: s+ \
7 S, g. i! W- G* h- e8 J配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:5 o& D3 d6 T* d2 ]: [

; s' s6 o" H# l2 W```1 `+ H6 w- R6 J* c9 n/ C! |* {+ k! e
/* Perform ADC calibration */" n$ N" q; a4 ~( r  c9 M
  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)0 ?; q3 q6 s6 [# j. E
  {! C; a# n$ ~; `3 _( C7 Q. a0 l5 T, I0 W% b
    /* Calibration Error */
3 M" P# |0 M% E    Error_Handler();8 b( J6 y/ C  ^( g
  }
! T# r  f% @" Z& |# K4 J7 D) q% [0 W& j* U, M
  /* Start ADC group regular conversion */
& P8 }# L8 H9 C  /* Note: First start with DMA transfer initialization, following ones* s) ?6 g1 F2 |: b: G
           with basic ADC start. */
; X5 I5 d+ K: Y7 i$ k& `  if (HAL_ADC_Start_DMA(&hadc1,, H6 H' \* n2 ]
                        (uint32_t *)uhADCxConvertedData,/ E3 h6 G$ b' D0 R. \8 B" J
                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE+ `" Y- f1 }8 o0 k
                       ) != HAL_OK)
8 t. D, i: _: E# _4 d  {
# n6 z8 y' f8 P2 h    /* Error: ADC conversion start could not be performed */
! L# ?" S  @5 ]) K! D* C2 ^# ?: i    Error_Handler();& h; |/ B8 Z% m- ]  d! z2 i
  }0 s# s' M/ b% X
```
! C  [, ]; e" f% N+ ~/ b' m) E1 n& s: z
这部分是while之前需要定义的,while中修改如下:
7 p# w8 U; E7 X5 H7 r, H+ K# o
0 Z( f% l6 E, [; g# t  B```& b# y2 N) X/ F( y4 M( D
if (HAL_ADC_Start_DMA(&hadc1," c) u1 s" V! a: ?' _
(uint32_t *)uhADCxConvertedData,
+ Q" j2 R, q7 |, Z' N# U( F9 H( U1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE6 O6 d/ |0 K1 A4 r/ F* e+ A) `
) != HAL_OK); O: G3 r6 q" k: d) P; ]
{  r4 U. t5 b: _0 b6 {! T# |
/* Error: ADC conversion start could not be performed */2 O. m' _+ N* o# N- @3 O
Error_Handler();
* B: x7 P. I/ F7 ~( a}
) W  ^5 d+ I6 qHAL_Delay(1000);
6 x( {: N' I0 b: m/* If ADC conversions and DMA transfer are completed, then process data */
& F# [* R  p& P. Nif(ubDmaTransferStatus == 1)
( n; l2 y0 p; Q3 o% ?" z5 Q{
* U5 [2 C" c2 |% W4 Z7 b
% u9 M% @; W. v/ u* X+ y6 vuhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);  E2 g2 j4 _! m$ l
9 K$ Q1 b' \% e6 c
ubDmaTransferStatus = 0;0 m% n* Y" s2 \* T

* u9 V, Q2 |8 x' w( LHAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);- H& x2 V) u  A  K- \
HAL_Delay(100); /* Delay to highlight toggle sequence */9 ~3 k  K* C4 ]
```
+ P% ~4 r( C( i+ F/ T& `* N$ m; d
测试结果如图3所示:; v( K+ ]3 H) S0 X( n

' n" H4 [$ k& x3 L" ^ 3-2.JPG )
; K: x  }2 U9 Z. S
( ], {7 w7 M0 @! ~' B- _" K图3
: b2 o7 D- X  ^" L9 X( H* O' K) b( g) q9 h; B0 G7 D
旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。' [& _2 Q7 S. G
收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版