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

【新年开篇】我的STM32U5项目秀+2. 测试14bit A/D

[复制链接]
jundao721 发布时间:2023-1-31 17:53
节后上班,安排时间把节前的任务做一做。通讯测试完了,测试一下14bit A/D外设。连接比较简单,参考板卡原理图,将电位器用杜邦线直接连到3.3V,GND和PC0端口,PC7(LED)端口即可。如图1所示:( F; d( t$ }& r/ M6 @
然后打开STM32CubeMX,根据需求对时钟,GPIO,AD外设进行配置,具体配置如图2所示:/ b3 E' t6 z, t/ I8 K$ U
5 i1 n4 k8 p9 ^6 o, H" f
生成code,这样大框架就搭好了,主要功能是实现每300ms单次转换后LED翻转一次。在main函数中添加Calibration函数
0 G6 l, C% a5 M+ W( e, J
  1. /* Perform ADC calibration */2 n  \1 j3 ?" X% M4 J& P! \
  2.   if (HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK)
    7 y, L9 @/ G2 E# z# q% z( n; y
  3.   {; ?1 S  i' o6 R  t7 S
  4.     /* Calibration Error */
    : U# _/ ]0 O/ y
  5.     Error_Handler();  R; y+ a/ E6 d& ?
  6.   }
复制代码
在while 中添加开始转换中断函数! e2 i  O8 a  N8 `$ Q7 G% _
  1. /* Start ADC group regular conversion */
      R% d# v) t5 N8 T% J9 ]8 j
  2.     if (HAL_ADC_Start_IT(&hadc1) != HAL_OK)
    ( S$ @6 a9 ]$ B1 q
  3.     {+ X* ]7 [; F1 b6 g# d& q: D1 D+ o
  4.       /* Error: ADC conversion start could not be performed */
    1 e: D8 a! u; J: I
  5.       Error_Handler();
    5 _; z& c" G0 Y( Q7 o( [
  6.     }
    * p6 }8 K' ]# V* m; s: G- H
  7.                 HAL_Delay (300);
    , J& p& q8 d& X( A% L% f! l
  8.                 HAL_GPIO_TogglePin (GPIOC,GPIO_PIN_7);
复制代码
还需要自己移植一下callback 函数
6 z! }$ {/ X- W) M* o" e& k' E
  1. void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
    4 b% N6 c, |& I5 [9 v
  2. {# y( z  \$ ?8 n! j5 n! {
  3.   /* Retrieve ADC conversion data */
    # u$ \5 i) w! O, C2 B
  4.   uhADCxConvertedData = HAL_ADC_GetValue(hadc);
    4 Z) R% w* V' I

  5. 7 C: d, A! C1 N+ N5 F
  6.   /* Computation of ADC conversions raw data to physical values           */
    . b0 i4 m) J7 \$ B5 |' J
  7.   /* using helper macro.                                                  */' v; k% W, |# K! l
  8.   uhADCxConvertedData_Voltage_mVolt = __LL_ADC_CALC_DATA_TO_VOLTAGE(ADC1, VDDA_APPLI, uhADCxConvertedData, LL_ADC_RESOLUTION_14B);
    9 K/ X8 A" P. b4 x# S. o! |
  9. }
复制代码
这就基本配置完了,但Debug并不顺利,代码一直卡在Error_Handler函数中,不知道什么情况。后来重新使用cubemx生成代码,就可以了。但是AD没有运行。查看了官方硬件开发入门手册,想来应该是VDDA电源没开启,参考了一下官方的例程,在HAL_MspInit 函数中果然有这一段:
. E, v* C7 C, n( \$ \3 U
  1. HAL_PWREx_EnableVddA();
复制代码
但是在CubeMX中没找到配置VDDA的地方,不仔细看文档会错过很多内容。
9 j: ^5 q* ~1 o6 U9 ^; p* b7 ?这样再Debug,程序运行正常。转动电位器,在watch窗口中就可以看到转换数值和转换电压,如图3所示:4 k" x1 T/ t. w( ], y/ @+ [
初步测试了一下,后边可根据需要再调整。3 @- M7 J& ?+ ~( J) F9 c
' Z6 {8 G+ E5 ?: z# t

图1

图1

图2

图2

图3

图3

an5373-硬件开发入门.pdf

下载

806.24 KB, 下载次数: 1

收藏 评论1 发布时间:2023-1-31 17:53

举报

1个回答
lugl 回答时间:2023-2-2 08:25:13
感谢无私的分享!
; a1 m  b! h* |6 p, m1 P
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版