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

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

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:
, D4 Z$ x# \: G) D8 C
# k" Y. E  }+ c& J% F/ N2 `+ i; D 3-1.jpg
7 i  u: `* }% p" c; ^; g9 H0 E- ], _( @# Z5 f  F
图1
$ s+ @5 t# B# Z' V$ y! u' t9 f# j. n- p; v' a6 M
功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:% X* C8 w- W3 L- i+ `! b7 h7 U
2 ]. ^0 L" u. x% b% h# K
3-3.JPG
: g; e( c' W; ^* n
# [5 V0 l, a- x1 o: m图2
2 k% s: S0 T- a* o+ L! _7 ^8 g4 l6 J8 D
配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:) G: N+ ?3 c- T( U
; @* i1 L* [& X$ x5 v( D9 l
```
& ?9 S: y9 F9 {' E) X/* Perform ADC calibration */& [9 R3 X. Z; i( J8 M
  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)" f& c- Y. L! e: {6 `" I& A
  {
* ^6 T& q& o3 w+ k: L    /* Calibration Error */+ n8 n5 |# T, }& u; [
    Error_Handler();
0 q8 X7 h2 Z# G* |  }
% [' {5 w4 o4 i3 v* c0 l/ F5 K2 }# K& s$ H# ~  }$ H1 b
  /* Start ADC group regular conversion */
2 l8 N4 |  f( a- a% F: ]8 X! O  /* Note: First start with DMA transfer initialization, following ones9 M/ X: c3 s# D( n9 m2 R
           with basic ADC start. */% S( ?! p- }# i1 ]3 w, N
  if (HAL_ADC_Start_DMA(&hadc1,
# s% ]" G- _& i8 k) f                        (uint32_t *)uhADCxConvertedData,4 T' Q0 I0 [) \( i. t4 Z
                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE) F! ?& {  q# t  v1 \4 M
                       ) != HAL_OK)9 ]3 k4 s' `( S) ?/ R1 S0 O
  {5 n* [4 S" ^% X: s2 w3 v
    /* Error: ADC conversion start could not be performed */! v1 t8 c. O$ Z& B2 S$ l6 z
    Error_Handler();
: Q5 A; E( F: F" w1 N. c" c( ^! @  }
" d; U4 W. o$ w5 ]0 j: _```
( A& v6 O2 z2 y! r" l$ N
% t& ~% g# C- ?' u; q& o这部分是while之前需要定义的,while中修改如下:/ D7 B' \8 h8 Y! z
9 A/ R* m4 _0 c9 g6 m( ~
```
7 y0 l* b; j0 _7 y3 Yif (HAL_ADC_Start_DMA(&hadc1,! O& m# H) W: G
(uint32_t *)uhADCxConvertedData,
0 i' t# G7 v$ n8 R; K4 k5 [1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE
$ ^- ?+ N8 E* t, v5 l) != HAL_OK)' e; K+ I0 c. T2 R8 |! h1 w
{
- a; O6 S+ Z+ S' M& f- h8 n' D! i/ _- s/* Error: ADC conversion start could not be performed */
5 Y9 g" W7 o( U  _Error_Handler();
5 l6 R  j: w. b7 s, O}+ w! h- I: R; I- `4 \
HAL_Delay(1000);5 l$ g8 Z' c4 {4 E$ }7 [: Y. J+ x
/* If ADC conversions and DMA transfer are completed, then process data */
& s. M' N7 q3 C; oif(ubDmaTransferStatus == 1)
3 U, M4 d( V7 B1 _  T, g6 X% _. y{
# H+ Y% M9 g% J" U; M4 w- x, l; P
. y  Z) X$ k; ]3 y, H& T- \uhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);. h: ~1 i: }& b* Q% Q

+ O0 B! h7 w: ]5 E; rubDmaTransferStatus = 0;
  k7 U4 v" a7 j/ G7 y
! Y* [  M$ |  N  i& b7 ]HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);, p" z5 M/ X. _; W# T
HAL_Delay(100); /* Delay to highlight toggle sequence */
) [  I0 _7 Q8 Z! G, B```/ a/ X# ^& Q$ g# z" `! y
8 @4 K/ W- V- y1 L$ E
测试结果如图3所示:" G" d* T, S# h6 {) e7 f

/ i  Z* [4 ^6 X+ z9 _: S* l 3-2.JPG ); H0 l0 ^$ B9 M% X( @/ l

* S7 F8 u0 Y+ S5 `, M图3
4 `$ J/ f* Y/ d! |0 x. ?& k3 E' N; P$ U0 B" V
旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。) g# E' y% w$ `! c
收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似分享

官网相关资源

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