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

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

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:' |9 @. D) ]7 H- s

# @7 r! Z9 `5 ?3 ? 3-1.jpg : z) \- u& M. V
& y$ d6 H2 k' g0 z7 ]
图1) t( @- ]+ m0 C& r6 n" R
$ p3 e' r9 k/ g: x
功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:# ?; s# y& \+ S' w
4 g) k  r+ _9 ^% S& `
3-3.JPG
( h: a7 y+ Z' e0 j5 p
& w2 D# t$ n: E1 a% C; ]! V图2
6 k5 ?* U" y7 J- o
7 ~% F+ G5 P  s! X" `3 d2 z/ N配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:
4 t: @  y, G6 @, Q3 a: Y3 e0 H. M# z/ h8 ]: e# D" N
```
; c" O/ j; C9 b* Z3 s/* Perform ADC calibration */% h3 {$ O1 o* [
  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
1 w) o3 p/ Q8 e) K  {
8 W( w6 Z* n/ M3 a" J8 u    /* Calibration Error */
) k( X- W/ u: q# @) N    Error_Handler();
, W) C7 z% }( M% ^  }; [. ^( z) S  l/ D: W2 X

  k7 C/ U/ l+ i; g  /* Start ADC group regular conversion */& q& @- Y3 S$ R& F
  /* Note: First start with DMA transfer initialization, following ones
0 I5 G' I* }$ M9 I           with basic ADC start. */0 U0 q  f5 x* r4 v4 |
  if (HAL_ADC_Start_DMA(&hadc1,
% s0 \& @0 X  t0 K1 c: s8 ?                        (uint32_t *)uhADCxConvertedData,  p. Y: j' N  X6 q7 ]5 P# }
                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE
9 m' n! f$ D, i                       ) != HAL_OK)
# R+ q6 m8 h# ~7 X) Z$ ]  {
1 X' J- c0 B! J. O- i    /* Error: ADC conversion start could not be performed */6 I  X- i9 g5 M- R% _4 O
    Error_Handler();: t, [4 Y2 Q9 c8 o. d
  }! ?" c1 L/ n- m2 l
```
8 e( e: W* J2 m" \+ n% r; y: Z
( _" z% _4 o+ A/ z/ x, j这部分是while之前需要定义的,while中修改如下:
+ t3 z) b9 _1 {; I1 |/ I) H% o, q- e3 L/ x
```( A" z% }+ l- `2 u. t' }
if (HAL_ADC_Start_DMA(&hadc1,, A; l+ `$ ~9 h8 Q
(uint32_t *)uhADCxConvertedData,
5 {* d  Z+ R& L" E) y2 a1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE- U$ o7 M+ v' g" c
) != HAL_OK)
% C( Z7 u! m6 |& M6 k! X, b{
* R0 z8 E3 v5 \6 ?: w* Y! _2 ]4 j  ^/* Error: ADC conversion start could not be performed */
' k8 N4 U. s" ~7 t) ]- fError_Handler();# z4 z- K9 a! t. x0 C" e! [
}; D+ V4 N+ ^) D" ^& P
HAL_Delay(1000);7 ]' z( u  Y  g# Y) q
/* If ADC conversions and DMA transfer are completed, then process data */
1 U/ x  W4 L$ k% Hif(ubDmaTransferStatus == 1)
! o, E% R- }, l; U. @% U+ y1 o6 x{& @3 H1 j1 Y* V$ N) A
6 h! X! a2 n5 `  Y" T' V
uhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);
" h' q- R% Y7 @6 U* n" P8 p( b9 S2 h$ |) V! A' G
ubDmaTransferStatus = 0;
5 S& T0 {' I* K4 ~) e: q: r& R$ R' T6 a
HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);
! N, S' W3 t, V5 W+ J0 }* ]; KHAL_Delay(100); /* Delay to highlight toggle sequence */% f1 h2 Y. ^* p% R8 j. i8 E
```3 y* t+ @6 K4 Y( Z9 _9 h

5 E! M1 Q+ E2 O( Y# L* x  I) Z测试结果如图3所示:3 b- i4 e; Y) g) D' K1 N
) q# e' O# E% N" J
3-2.JPG )
4 c  F6 m; d% D: E7 N
) W! x) X- z& v8 I5 ^6 Z% c图3
1 T5 Q! ~! M0 }0 h3 z% |" i4 e- n9 P) ]: l
旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。' Q# y  P7 w4 @
收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似技术帖

官网相关资源

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