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

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

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:
( n0 y8 o! c/ H, R/ h) n
, ]' W  ~# \3 L% B$ M 3-1.jpg 1 {+ }3 F+ W/ R7 M/ ^# T

8 f3 n0 K0 a7 V9 C2 @$ e$ B图1
! `4 E) o/ B7 ]8 w' i7 L" ^. h- F8 B$ u6 y' N
功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:  Y/ p  S1 c8 v( ?

* g4 q0 ^6 ^( |! `; m/ j 3-3.JPG 1 H' A$ {( i- z# ^
4 p" x1 m# C, n4 m# p
图24 D# ~$ I8 f( M3 a1 z0 z1 Q

4 G, j* g5 r* o6 G- e配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:
" O' x, v7 u% E8 \$ |" K; t
+ A, R* d8 h# d" i```
, p4 h8 O0 ~' k% j( F' }/* Perform ADC calibration */: K- {4 C3 D6 |" E
  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)1 ^0 d+ _) K/ o- M, E# `
  {3 U$ l1 j! W. M* B' R* a
    /* Calibration Error */9 c2 A3 E+ e/ Y  \1 }% S( w
    Error_Handler();9 N9 U) W6 w0 x3 s; l6 m; |+ y
  }* l/ |. {2 R) c" p% v6 Z

* U. G  g* Z5 T# O! j, b1 t: }  /* Start ADC group regular conversion *// @4 u% t  n9 r
  /* Note: First start with DMA transfer initialization, following ones
/ c" p; T2 }# Y- V" X* M" _2 }           with basic ADC start. */
0 v: }0 W$ z6 q" f' {7 l- e  if (HAL_ADC_Start_DMA(&hadc1,2 T; }3 p) M; g- p0 P7 x" @
                        (uint32_t *)uhADCxConvertedData,* X7 O7 S8 c5 m" U( `
                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE$ h; B  p3 x; Y, l
                       ) != HAL_OK)
$ k" L$ ]: {8 J1 `1 |5 l  {
5 {( Z6 X! W- ~2 l" ^0 D% W    /* Error: ADC conversion start could not be performed */
3 V# \2 R$ a: @* C    Error_Handler();; J4 Y; z5 |* [% {
  }8 x0 A$ e3 H3 z) `. r
```! s; s9 z' S: w! g
8 ]% g7 L) O. _' \+ j* R- [3 j
这部分是while之前需要定义的,while中修改如下:: ^) v+ b6 J7 N9 u$ f( |
( o0 I! c& x# o4 s) a& z
```( s" M) D5 x! E) A* [% o) z
if (HAL_ADC_Start_DMA(&hadc1,
+ B4 x4 [+ R% R8 y  c(uint32_t *)uhADCxConvertedData,
3 K2 y. V; s3 I) U, F, p2 [3 z: G1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE
! X& c: ?3 e6 |$ J$ J) != HAL_OK)0 g7 w/ ^; t$ [
{
" E: T2 Y' |7 [) c; W) U. @/* Error: ADC conversion start could not be performed */
+ e7 e; ?, h7 [5 f2 e. c% oError_Handler();, z+ [3 j! G# q+ t2 H* F; t8 Z3 A( B
}
9 a0 I  }7 w# Q4 KHAL_Delay(1000);5 ~# @" s6 B" i# L$ S7 a$ k& y
/* If ADC conversions and DMA transfer are completed, then process data */
* r! f( l- c6 `0 N$ a4 R' V; sif(ubDmaTransferStatus == 1)" j; d2 K) z4 `
{% Q2 H" G' h* \: G
  V: G  a1 o9 Q7 Z2 W; `
uhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);
8 a5 D  w% m8 [' x$ q, m* r3 ~
ubDmaTransferStatus = 0;
) r  i7 N+ \% M+ z) k% Q3 b" `% @0 H( I* m
HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);5 g; V) k2 _$ O8 W
HAL_Delay(100); /* Delay to highlight toggle sequence */9 s2 k. r' Q& a7 x3 f& Z0 ?# p6 h, g
```
* `# E! x5 a: b* _* I$ p% p" k! R  H1 A( b; |1 f4 o9 @
测试结果如图3所示:$ i/ a! J0 u& ~; o( y. ^, j+ k
$ W: x7 q0 l( h! p
3-2.JPG )
4 h7 Q( e7 }7 {! h0 ?
/ W7 T/ ?8 a2 K3 ?. p8 T  G; X图3
! a; G1 N* M& M: m* n, _* I$ y- [; C" z$ ^0 q0 q- G
旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。
- p9 o! r( V+ X/ r
收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似分享

官网相关资源

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