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

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

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:
% p' h  X* Y" Z  Z: m% a2 r
! u( X6 t1 ?0 s5 c& _" [5 |% I# Q8 S 3-1.jpg
: {9 j3 x  T: s  @: A" ^0 Z3 e# \( Q) o/ Q; K( r; \
图1
7 W; d8 m/ y0 u5 H3 }' L1 ^& H. p% C0 ?" S) f. T3 x5 F
功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:# e, a- E1 ~% D/ K- Y8 G2 W

6 Z; ]( P1 A! K/ k 3-3.JPG
% U: j3 S4 j8 _+ @$ R# A* {* ?$ ~) E! s8 |
图28 {& W5 T9 Z( F0 a( m: N

/ f+ `* q* r( t: ~配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:4 o, ~2 r" Y# k" _

' w4 v* F; X6 }, a2 j' D```
3 {1 ?& M& H! z* R1 I, w6 U7 e+ |& _8 Q6 H/* Perform ADC calibration */! i2 _6 E' A" T4 X+ ]
  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)9 B+ o6 M7 _* x7 O0 M
  {: v( v  V; `6 P
    /* Calibration Error */+ \& D( I* z" b) h
    Error_Handler();4 E8 t& g' L0 B. o- s! e) f
  }+ @. \% F/ j* o, d0 [

& g3 e$ @# g. Z3 p$ _  /* Start ADC group regular conversion */, F' R) I; O4 \0 c; J' M
  /* Note: First start with DMA transfer initialization, following ones+ x7 E* D7 n5 S8 \. S( M
           with basic ADC start. */
. h# J7 E' _7 g: \  if (HAL_ADC_Start_DMA(&hadc1,' I0 y) l+ b9 i
                        (uint32_t *)uhADCxConvertedData,
/ c3 l& C/ c( Q) e& N% f  |  c                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE" j. N4 Y3 c6 \
                       ) != HAL_OK)
/ n; Z: I* l  X, X, m# A0 O4 y$ u  {
" c. M/ w, Z* X! g9 T1 h1 P    /* Error: ADC conversion start could not be performed */1 f: E6 g3 R5 ~9 j1 s
    Error_Handler();+ @. u9 ~; W4 L  c3 D
  }
4 z8 s0 K' ?8 O9 I+ i```
% G# T# M6 r# s& r, Q, M+ K7 u6 p4 i, R. f* r  {
这部分是while之前需要定义的,while中修改如下:; i! M: A. L- g# C5 m
9 o3 F1 I& s- i% n
```9 u# `: D9 O! [9 Y' x: I' R8 _
if (HAL_ADC_Start_DMA(&hadc1,
  [& d- `4 h$ b' G(uint32_t *)uhADCxConvertedData,
( n6 k4 ~& _# `9 Q" M, b' a& u; @/ o1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE; v, K0 q; R9 O: |! ], _  K
) != HAL_OK); z0 f8 }% x5 B+ X  |
{& E) o6 l, o  g/ q! p
/* Error: ADC conversion start could not be performed */3 Z/ n2 W8 Y% A
Error_Handler();# T: g. e0 a. _
}
4 i" ], Z/ V* U0 I; F. \3 ?. X$ GHAL_Delay(1000);1 g4 _% Y2 t; l6 Z: f4 a9 L
/* If ADC conversions and DMA transfer are completed, then process data */
, G" f! i2 \/ Oif(ubDmaTransferStatus == 1)" j" V; L* r# e  B% T3 _$ {9 u* K
{
$ a( H0 N5 M* T3 d9 n7 M9 n/ S: N* v3 E9 |
uhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);* T+ I& f8 w' C

* p. b/ B7 f, R4 \ubDmaTransferStatus = 0;1 C3 Z# f9 U. \3 u2 p

+ ]  n: p* I% Z! L) R0 Y- _) VHAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);: q2 P* ]' m4 t1 W( A5 X' o
HAL_Delay(100); /* Delay to highlight toggle sequence */
4 I2 e7 w! ]0 f) L( A% Q6 p8 f' q! k, \" }```$ B. s2 @# [0 w+ m7 F! R

; k8 L( j( W$ X* U, u测试结果如图3所示:
$ [8 x8 Q4 H. M5 M0 D( `1 S$ S+ \# C( d: L: Y
3-2.JPG )9 h4 C- n! W- z7 a0 h) m7 w8 R
' t" ?$ o; i) L( q
图3
! |6 S& w; y. A9 a( p9 Y. t7 a8 C$ _5 z" ~
旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。4 Y7 U* ?3 K  Y3 y0 X8 T6 r2 D
收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版