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

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

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:% `4 G9 B% I8 Q. [
9 X( r  D% q, g) k9 t" d
3-1.jpg   f9 _4 c6 W8 K
$ @; |2 K  E7 E4 ]- l+ I/ f9 s
图1
4 W5 j4 ^( _3 |
- `% r- w7 }( W3 p) e功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:
9 u* |! d. n5 q7 \  U6 v* E1 j0 o
3-3.JPG
1 D7 ]. q! Y& H. ?1 z- k. o1 V0 B# W% t/ Q9 R
图2& i, K' o" U' U' w7 X: O  V/ a' W
& a: t1 f; ?' N! |/ t
配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:( ]& i1 o/ k% ?" ]0 d

# ^, l, I9 x0 e* w1 i```! p9 y1 Z) g3 Z
/* Perform ADC calibration *// l- ?  @. |+ e' t$ L! o9 L( e
  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
; k- s; z" j- m5 E& Q$ @1 A( t  {
$ x0 k; p% ~5 d0 w3 _    /* Calibration Error */& b: F, y2 {- V$ W* i( g8 f+ o, L  c+ W: p
    Error_Handler();3 f1 B, |  M: h6 q/ j
  }; ^% c4 [# c) F' ~- F( x/ B# S

" i. I- d  P* f  /* Start ADC group regular conversion */
% a1 ~! ^8 C% v) }& ~  /* Note: First start with DMA transfer initialization, following ones  ]$ t+ s; N: W; |
           with basic ADC start. */
$ Z5 b% C/ q1 x" Y' y  if (HAL_ADC_Start_DMA(&hadc1,7 l$ s. M+ A9 T$ K% ]
                        (uint32_t *)uhADCxConvertedData,
5 G  z$ C- s" [! n+ @. d( {                        1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE8 k/ b* P0 v" a/ t* l
                       ) != HAL_OK)- K! m3 Q) S8 Y; Y/ b
  {
: d& u7 d6 e( o9 [0 a  H    /* Error: ADC conversion start could not be performed */* Q! U; H: n' G5 y! i; n% G
    Error_Handler();
. V$ i$ v# n5 q/ \0 c! K$ `  }
! c4 ~% b0 u" n) o4 W' C```
# K4 O! i% H9 l* n
0 \+ x0 B5 w3 G2 V( y这部分是while之前需要定义的,while中修改如下:4 U% {+ R/ b/ o( x! k
& Z% R8 Y5 X( z+ r
```9 b. Z" a4 `- _/ _& u; O& c0 W
if (HAL_ADC_Start_DMA(&hadc1,2 q  I' L0 _6 d. m! q
(uint32_t *)uhADCxConvertedData,! ^" [0 d, i8 H' _' e! t# g
1U                               //ADC_CONVERTED_DATA_BUFFER_SIZE" K" u* E! P! m7 F" }& d( F* ~
) != HAL_OK)  _8 _. i- j* y2 h8 R$ u% u
{7 U, {4 `6 C. T' u4 h- g3 C
/* Error: ADC conversion start could not be performed */
4 o2 l. y. I! Y* vError_Handler();* [& h, z4 P9 s' w" S
}
, F$ c* y1 ?8 g! Y" H6 a  qHAL_Delay(1000);
" G# ~* u9 n+ i" l; O+ i6 _/* If ADC conversions and DMA transfer are completed, then process data */. j) ~6 z1 ]! e* V( R! o( W+ E
if(ubDmaTransferStatus == 1)
0 |% V' o6 e3 u% E{1 W( W) }% V( W3 y

- n1 M7 o/ M* m' z; k6 y& Y! guhADCxConvertedData_VoltageGPIO_mVolt        = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);
7 A! t( y6 U6 d* e3 r
. l2 C& O0 k, s) u$ w. {- C! R* ]ubDmaTransferStatus = 0;. j& }  o6 Z$ s( m
( g) Q" D0 [% H$ X( D
HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);  p7 W% p6 `! Y* r7 A+ m  ^, ^" l* b
HAL_Delay(100); /* Delay to highlight toggle sequence */
) g9 u, E4 j3 k8 F5 O3 u0 M```
3 v0 W8 u# {, K# }" f6 E
  [1 o0 P, N) q测试结果如图3所示:- d' J1 {! e5 c
1 \+ x* i# i& b+ D2 e# H/ Q( u
3-2.JPG )1 n! ?. \- G& G

+ }6 z& g% @7 a3 l图3' s4 K6 t) W, V( ^1 v' ^" `

6 s4 T& z. K9 \' \, Z旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。: i+ v2 S. B: A$ I
赞 收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似技术帖

官网相关资源

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