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

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

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:
7 n5 m# T, U% h$ c) ^: }- z
7 ^3 X! ]) B: W 3-1.jpg
, j/ X, ], {' {9 `$ H$ i/ |" ?
- R0 I8 \+ @, f& m图1) S" K- i) }  d
* I2 [. n- f. m
功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:3 {: `, j: A# g) a( y0 N5 |) \* S

& y4 _- U! |# \2 K" I' |, B 3-3.JPG
( Q! L" z( D2 k5 ?6 d2 Q' [7 \; a6 r3 d' m9 g' {
图2
) t2 N- V7 {3 ?: N3 E0 h
" v4 d- |  D2 s% v! D5 D配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:
* O% K: ^% j. D& s% b2 ]# Y  x1 ~) h( Z% c1 t
```
9 g$ h* _. b: w5 B7 _; e/* Perform ADC calibration */, a2 L; i- \0 B9 }, [
  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)' f$ z/ Y! G8 z( F: I& G
  {: _8 z0 s4 r  q" M* E
    /* Calibration Error */, o& E9 U. @: P! B. b4 Q
    Error_Handler();
) a6 |& z& M' e" i) k  }8 _& O  o' ]$ G6 {# e/ _* u9 D

& D' m) ^' a7 C* W  /* Start ADC group regular conversion */
# z* [% n' y$ A# ?. D  /* Note: First start with DMA transfer initialization, following ones9 w8 M. i: Y7 n$ D# h
           with basic ADC start. */
! K0 w: |3 ~' J7 D" C: v  if (HAL_ADC_Start_DMA(&hadc1,
2 y: J# T7 ~, u  Q+ b& K# z$ Y                        (uint32_t *)uhADCxConvertedData,/ |& R2 G1 @/ }' T' u: m+ w- V
                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE
) o* K' r: D5 E6 E) W) q/ h                       ) != HAL_OK)
# Q  W' c+ M- C3 k; R; {  {
) R0 B% a! O: n. z5 f    /* Error: ADC conversion start could not be performed */4 x! o( [' A5 N$ N" C8 X, @
    Error_Handler();
) Y! H4 g7 V6 @) [' C5 ]/ A2 ~  }
5 \: r" ?7 `" [; J' y3 o& ?; ?1 f```+ i- }1 R1 [2 x4 n# k

4 y5 q5 E; D7 w8 b0 [, E( T& u* Q这部分是while之前需要定义的,while中修改如下:
" I# ^; X' J4 o2 |! O9 M! O5 x, o8 Z& B" {) d9 E4 q, A  u
```1 d+ X$ w, S9 H9 [; _: r+ O
if (HAL_ADC_Start_DMA(&hadc1,& G- s' |" g. x4 p1 X' q
(uint32_t *)uhADCxConvertedData,
% u2 J" J* z3 ~1 c0 y9 {7 t1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE
% j/ X  B" x* d* x1 u) != HAL_OK)
& B8 G: b% E; M{
7 ~) u- q3 W! X! z- s/ e/* Error: ADC conversion start could not be performed */) S* ?: R+ e' J. o- z% @5 m
Error_Handler();# v* `# N: v9 U0 `/ r! H, ]
}$ c7 G( \' v2 V' i
HAL_Delay(1000);
& n+ N. Z" l) @/ z9 ?$ z# ^/* If ADC conversions and DMA transfer are completed, then process data */6 |) V3 m& a9 D( b, i0 V( d% b4 F
if(ubDmaTransferStatus == 1)  \& ]$ {. J5 o! B7 y( L7 F
{* Y' _% A8 Z/ o+ W( a5 P
; m9 i  p) _) ~
uhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);9 {' E+ p5 k+ n+ d" f* }

& P$ C& @% h, PubDmaTransferStatus = 0;8 D, D! ^2 C" t" z; \- I
& N. x& K; t8 z8 P9 {* U# u
HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);- J. [% e% O; y! a, k  r
HAL_Delay(100); /* Delay to highlight toggle sequence */. z) w8 J) p. q+ p7 \3 [
```
7 F3 }  Q4 n, K, V  @3 }, E' z3 _
5 h, R! G( |1 `( |测试结果如图3所示:
5 Z! `; K3 b/ }3 [
2 s$ s7 h' d5 G 3-2.JPG )2 [  \3 [, H) W7 |/ U' M0 s
! a1 [2 e9 R* {9 }
图3
9 C5 A8 Z' B6 c; H& L6 f" b3 a+ p4 D/ D- v* \4 C2 G7 y  [
旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。- A" X: g9 v' \3 y
收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似分享

官网相关资源

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