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

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

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:
9 L$ ?7 V' d: I! N9 m( l! f: X8 a, `* h/ \2 }
3-1.jpg 8 N5 \5 J, d6 A2 ~

0 C5 P+ U  i% n# n3 n0 X: L1 o图1
( Z8 d6 b$ e+ V
( _5 ]! r. }# w  {+ _功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:
4 Q! A/ u# \5 h4 g1 j7 }
4 r8 ]9 h4 Y" y8 o% O5 J1 Y 3-3.JPG ; t2 }/ q. l; j. N+ p1 W1 U2 }4 t

8 X' G5 C3 |8 m7 `8 r图2
6 H3 g; r) ~; u, h
7 y$ P* h2 Y' @, u/ v配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:
4 Y. e8 ~. G5 j; b3 b6 u) i% p* y$ f8 Y0 x% \/ U
```
9 l8 _7 c: F+ |- Y$ w- v/* Perform ADC calibration */
* U' g) k) v1 f. }* S- ]! b  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)9 k' A' e) i/ j
  {- {! S1 f+ l7 w( P
    /* Calibration Error */
5 g/ j2 S* F2 c" j& |    Error_Handler();
4 |; j+ d+ h. u/ U& D! h$ @. T' x$ q  }9 M: \+ \2 H8 N& C7 b/ ], y

* t0 k8 h3 i4 F7 E0 @9 I$ W" z  /* Start ADC group regular conversion */9 r6 y9 a% T1 q" I
  /* Note: First start with DMA transfer initialization, following ones# N* p" ^, f' V6 o% n
           with basic ADC start. */
5 R% |$ n8 L! F; W1 ^. h! F1 E  if (HAL_ADC_Start_DMA(&hadc1,
: ^: }: r; Z' [; u8 [  a+ }3 `                        (uint32_t *)uhADCxConvertedData,
' {- i1 H! ~; M6 r+ s6 V) {# G. y2 [                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE4 G  Y0 g- h) o- A8 f
                       ) != HAL_OK)3 h/ B: g( R( S( ]4 V" x% v
  {
2 l) A( b( C  S7 t  k" w    /* Error: ADC conversion start could not be performed */) [7 [. `$ d% ^# q: Y/ x
    Error_Handler();
; H; c6 c7 m( j9 t- g1 T& X: i  }
8 O9 M- Q* G7 E" Y# J9 a* D```2 h/ l) F: ]1 S* v

1 A# f' z3 x  U1 X. v这部分是while之前需要定义的,while中修改如下:  s% |& m9 Y6 F8 f" f
% o+ i( R1 `! c! {1 {! A% E9 q; i. `
```+ j0 e* X% e% m- c
if (HAL_ADC_Start_DMA(&hadc1,
. B1 A' O7 [1 S& D(uint32_t *)uhADCxConvertedData,
! [/ D( O' [$ z9 `1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE
) G2 m' S1 \2 P2 n7 [9 N4 w1 \, P, j4 X# H) != HAL_OK)
" B  ^+ F8 Z: w: a{
0 C  L2 g6 j, l1 ^, c8 N. u/* Error: ADC conversion start could not be performed */
* u+ P2 [* z* z6 ?6 s3 rError_Handler();
8 }8 i: S4 J0 d3 C& U, g}
9 v5 S5 a, i  F% ZHAL_Delay(1000);' ^7 p/ j  w8 ^' Q  m$ [7 r
/* If ADC conversions and DMA transfer are completed, then process data */
: j# \+ E1 V. K0 b6 n& M& n3 iif(ubDmaTransferStatus == 1)9 |8 s) Q: i+ ]& N
{' [3 S( _; z; s
6 l! V9 e# R) ]* N  w7 Q
uhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);7 D3 u% E6 h9 z1 i7 h2 _

' X' K9 R* D" I9 E, H: W( J! qubDmaTransferStatus = 0;2 F2 K% U. W) v$ e/ R3 f
0 H! \3 {% E8 v. U" S* I/ u
HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);
9 b5 m- o3 Z; vHAL_Delay(100); /* Delay to highlight toggle sequence */
2 ^8 j% x2 K# I4 _6 U, K```
5 O% v- v7 j. t! Z3 L- P0 r5 ?' C- s6 O( I4 N$ Y. @
测试结果如图3所示:
7 N7 g3 a/ z% o! G$ P& ]4 J% i9 F2 o  }4 P: i" v
3-2.JPG )
. l4 a: K# \2 R
" o2 ?: _8 \8 Q: M  _& V7 ]图3
8 _- G' r: W( F/ o* R9 p- e8 Y3 L. L! A- F5 Q" l8 D7 W/ I
旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。
# ]' f' v) v3 C& E2 `
赞 收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版