当前位置: 首页 > news >正文

自助网站建设加盟网站制作费用

自助网站建设,加盟网站制作费用,wordpress默认头像,企业网站的建设哪个好1、引言 很多 STM32 系列中的 ADC 都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括 ADC 上电/掉电序列在内的所有校准动作。在这个过程中,ADC 计算出一个校准因子,并在内部应用到此 ADC 模块,直到下一次 ADC 掉电。…

1、引言

很多 STM32 系列中的 ADC 都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括 ADC 上电/掉电序列在内的所有校准动作。在这个过程中,ADC 计算出一个校准因子,并在内部应用到此 ADC 模块,直到下一次 ADC 掉电。在执行任何 ADC 操作之前必须校准,以消除芯片之间 ADC 结果的偏差。

2、问题

2.1、问题详情

客户使用 STM32U575ZIT6Q 验证 ADC4 时,使用 STM32CubeMX 配置后生成工程项目。因为使用 ADC 进行采样转换前,必须要做 ADC 的自校准。于是在 main 函数中加入自校准代码,如图 1 所示。
图1.代码:ADC 自校准
在这里插入图片描述
然而,在运行代码的情况下,发现 PC 指针最后跑到这个 Calibration Error 的Error_Handler()里。也就是说,执行自校准失败了!

再检查进入 Error_Handler()发生的问题,发现在执行HAL_ADCEx_Calibration_Start()时陷在了下面这个 Loop 当中,如图 2 所示。
图2.代码:等待 ADC 自校准完成
在这里插入图片描述
也就是说,ADCAL 位被置 1 后,始终没有被硬件清 0,代表自校准始终不成功。

2.2、问题分析

查看 STM32U5 的参考手册 RM0456 中关于自校准的描述。考虑到校准没有成功,那么应该看看是不是自校准需要哪些条件,而这些条件并没有成立。
于是,在 ADC 章节中的 Calibration 小节找到了这么一段话,如图 3 所示。
图3.ADC 自校准要求条件
在这里插入图片描述
也就是说,在初始化自校准之前,需要保证 3 个条件:

  1. ADC 的电压调整器已经使能并正常工作(ADVREGEN = 1 且 LDORDY =1)
  2. ADC 没有打开(ADEN=0)
  3. 自动掉电模式没有使能(AUTOFF = 0)

回到刚才等待 ADC 自校准完成的代码,当指针停留到这边时,在线调试检查各个标志位情况,发现 ADVREGEN=1,ADEN=0,AUTOFF=0,LDORDY=0。所以,可以肯定的是就是 LDORDY 不为 1,也就是说 ADC 的电压调整器还没有准备好,导致了自校准无法成功并退出。

在 STM32U5 中,引入了一个新的 ADC 特性,叫 ADC 电压调整器(ADC voltage regulator)。在使用 ADC 之前,这个电压调整器必须被使能并且能够稳定工作。可以通 过将 ADC_CR 寄存器中的 ADVREGEN 位置 1 来使能它,然后必须要等这个电压调整器 的启动时间之后,才可以正常启动自校准或者使用 ADC。这个 LDO 有没有准备好,可以 通过 ADC_ISR 寄存器中的 LDORDY 这个位来判断。LDORDY=1 才代表了 LDO 已经准 备好了。

回到客户的问题,可以知道即使 ADVREGEN 置 1 了,LDORDY 始终没有置起来,电压调整器没有启动工作,难道是 ADC 的这个电压调整器坏掉了?

别急,想到电源的问题,还不能忘了参考手册的另一个章节 :电源控制 PWR。翻到PWR 这一章,先要考虑到,与 ADC 相关的电源为 VDDA,所以要重点查看 VDDA 的内容。找到 Independent analog peripherals supply 这一小节,可以看以下关键的句子,如图 4。
图4.独立的模拟外设供电
在这里插入图片描述
从图中黄色高亮的文字,我们可以了解到,STM32U5 的 VDDA 在控制上还跟其他系列不一样,它有一个开关来选择是否隔离。芯片复位后,VDDA 提供的 ADC 和模拟开关控制在逻辑和电气上是隔离的,因此不可用。一旦 VDDA 电源存在,就必须在使用模拟外设之前,通过在 PWR_SVMCR 寄存器中将 ASV 置位来消除隔离。也就是说,要想使用ADC,必须先将 ASV 置位来消除隔离。
在 PWR_SVMCR 寄存器的解释中,也可以看到 ASV 位的描述中要求将此位强制置 1才可以使用模拟外设,如图 5。
图5.ASV 位描述
在这里插入图片描述
ASV 的配置是没有在 STM32CubeMX 中进行配置的,所以需要在后期添加。所以,很可能就是因为没有将 ASV 置位以使能 VDDA,导致 ADC 外设被隔离,并没有得到供电,所以 ADC 的电压调整器不可能正常工作,LDORDY 也不可能为 1。

3、问题解决

在工程项目中搜索 ASV,可以找到两个 API,如图 6。
图6.VDDA 使能或禁用 API
在这里插入图片描述
也就是说,我们需要先将 HAL_PWREx_EnableVddA()添加到代码中。因为其属于MSP 硬件配置,所以将其加到 HAL_MspInit()函数,如图 7 所示。
图7.修改过的 HAL_MspInit()函数
在这里插入图片描述
再重新编译,然后执行指令代码,就可以看到 ADC 的自校准可以正常完成,PC 指针已经可以正常跑到自校准后面的代码了。

4、小结

在 STM32U5 中,为了更好地控制功耗,ADC 中加入电压调整器和 VDDA 隔离功能。这与以往的 STM32 有所不同,需要注意一下。使用 ADC 等模拟外设前,需要注意将PWR_SVMCR 寄存器中将 ASV 置位来消除隔离。
其实不仅仅是 VDDA 可以隔离,VDDIO2 也是可以的,通过 PWR_SVMCR 寄存器的IO2SV 位进行控制。
如果仔细看过 STM32U5 的 ADC 例程,可以看到 HAL_MspInit()的内容是这么写的,如图 8 所示。
图8.例程的 HAL_MspInit()函数
在这里插入图片描述
可以看到,在 MSP 初始化里,不仅使能了 VDDA,还使能了 VDDIO2。所以要使用VDDIO2 相关 I/O 的,也需要注意一下。

参考文献

文件编号文件标题版本号发布日期
RM0456STM32U5 Series Arm®-based 32-bit MCUsRev 416-Feb-2023

文档中所用到的工具及版本
IAR v9.32.2
STM32CubeMX v6.8.1


本文档参考ST官方的《【应用笔记】LAT1308+STM32U5+ADC自校准不成功的问题分析》文档。
参考下载地址:https://download.csdn.net/download/u014319604/88999453

http://www.yayakq.cn/news/611341/

相关文章:

  • 网站二级域名解析武威网站怎么做seo
  • 建设网站实验活动小结合肥网站建设外包
  • 苏中建设集团官方网站wordpress首页自定义小工具
  • 深圳网站建设服务有限公司少儿编程加盟官网
  • 做网站模板的海报尺寸多少钱河北沧州泊头做网站的电话
  • 选择赣州网站建设企业所得税计算
  • 网站建设进度表网站的建设特色
  • 网站空间500m是什么wordpress if
  • 做网站业务的 怎么跑客户邢台企业网站建设咨询
  • 手机网站演示小程序开发平台哪家的好一些
  • 东莞市建设网站首页php采集wordpress文章
  • 山东省建设执业师之家官方网站网站建设请示文件
  • 广州专业的网站推广工具软件开发一般多少钱
  • html5网站模板怎么用夺宝网站开发
  • 某购物网站开发项目天元建设集团有限公司成立时间
  • 团队合作网站域名不备案能用吗
  • 网站改不了分类建设银行宁波分行网站
  • 视频分享网站开发罗泾网站建设
  • 昆山做网站企业网站建设合同规定
  • 滨江网站建设制作女生wordpress网站适合
  • 网站制作视频教程下载株洲正规竞价优化推荐
  • 建设银行积分兑换商城官方网站网站设计建议
  • 做搜狗网站优化快速排网络营销是学什么
  • 做视频网站的技能wordpress 500错误解决
  • 大型门户网站建设所具有的功能模块主要有郑州官网网站推广优化
  • 网站备案 四川济宁网站建设培训班
  • 配资网站建设中国网站排名100
  • 下载男女做爰免费网站自己怎么建购物网站
  • 盐城那里做网站好点公司的网 网站打不开
  • 电脑网站在哪里找北京住建网站