今天学习STM32的AD转换,在数据手册中看到这样一句话“启动校准前,ADC必须处于关电状态(ADON=’0’)超过至少两个ADC时钟周期。”,英文原句是这样的“Before starting a calibration, the ADC must have been in power-off state(ADON bit = '0') for at least two ADC clock cycles.”。然而,STM32固件库中给出的例程代码如下所示。

  /* Enable ADC1 */ADC_Cmd(ADC1, ENABLE);/* Enable ADC1 reset calibration register */   ADC_ResetCalibration(ADC1);/* Check the end of ADC1 reset calibration register */while(ADC_GetResetCalibrationStatus(ADC1));/* Start ADC1 calibration */ADC_StartCalibration(ADC1);/* Check the end of ADC1 calibration */while(ADC_GetCalibrationStatus(ADC1));/* Start ADC1 Software Conversion */ ADC_SoftwareStartConvCmd(ADC1, ENABLE);

程序中使用ADC_Cmd(ADC1, ENABLE);使能了ADC1,即将ADON位设置为了1,然后复位并启动了校准,这样看来是与手册上相违背的,于是我把上面代码的第一条语句放到了最后一条语句之前,结果运行后程序停在了while(ADC_GetResetCalibrationStatus(ADC1));这条语句不往下执行。折腾了半天,发现我看的数据手册上是错的,官网在2017年9月发布的版本上是这样写的“Before starting a calibration, the ADC must have been in power-on state(ADON='1') for at least two ADC clock cycles.”,即在启动校准之前,ADON必须置位至少两个ADC时钟周期,所以说例程中的写法是正确的。

上面的问题解决了,那么程序是怎么实现ADON='1'两个ADC时钟周期后启动校准的?通过仿真发现,程序从执行完ADC_Cmd(ADC1, ENABLE);到即将执行ADC_StartCalibra tion(ADC1);中间的时间为5us(芯片为stm32f103,系统时钟为72MHz),若设置ADC时钟为9MHz时,两个ADC时钟周期为2/9us,所以说到启动校准的时候,时间已经远远过了两个ADC时钟周期,所以这个问题的解答也算是隐藏在了程序本身之中了。

STM32中AD转换的校准问题相关推荐

  1. stm32使用AD转换读取光敏电阻的值(光敏电阻5516)

    STM32使用AD转换读取光敏电阻 光敏电阻使用的是5516,阻值是10k,网上能直接买到. 过程如下. 硬件设计 LRAO接单片机引脚,原理就是串联分压,当外界光发生变化的时候,光敏电阻的阻值发生变 ...

  2. STM32的AD转换

    利用已经建立的工程模板,在Keil for ARM V5中编写代码,实现如下功能:使用ADC1的通道1进行AD转换,将转换的结果输出到显示屏上. main.c: #include "stm3 ...

  3. AD转换中知道数字量计算模拟量或温度

    看你的AD设置的是几位的,如果是N位(采样分辨率)(在stm32中adc为十二位),假定你AD采集的数字量为M,基准电压为V则模拟量为: V乘以M除以2的N次方. 假设V为3.3,N为8,则模拟量为: ...

  4. dsp的ad标志位是什么_关于STM32 AD转换的ADC_FLAG_EOC标志位问题

    关于STM32 AD转换的ADC_FLAG_EOC标志位问题 [复制链接] 小弟最近再写STM32的ADC,看了很多网的例程都是用DMA接数据,但是我想直接用AD读到寄存器,再拿出来处理. 在写程序的 ...

  5. 关于AD转换设计中的基本问题

    1.如何选择高速模数转换之前的信号调理器件;如何解决多路模数转换的同步问题? ADC之前的信号调理,最根本的原则就是信号调理引起的噪声和误差要在ADC的1个LSB之内.根据这个原则,可以选择指标合适的 ...

  6. AD转换设计中的基本问题整理

    原贴:http://blog.eccn.com/space.php?uid=170730&do=blog&id=3836 1.如何选择高速模数转换之前的信号调理器件:如何解决多路模数转 ...

  7. 转一篇很好的AD转换设计中的基本问题整理

    弟看到一片关于AD转换设计中的基本问题整理博文,特地转载过来和大家共分享. 原文地址 http://blog.eccn.com/space.php?uid=170730&do=blog& ...

  8. 一篇很好的AD转换设计中的基本问题整理

    原文:点击打开链接 1.如何选择高速模数转换之前的信号调理器件;如何解决多路模数转换的同步问题? ADC之前的信号调理,最根本的原则就是信号调理引起的噪声和误差要在ADC的1个LSB之内.根据这个目的 ...

  9. AD转换实验 编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则

    编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值.(如:AD转换后的数字量为128,则数码管应该显示2 ...

最新文章

  1. java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式
  2. linux之变量的设置与显示
  3. 管理学中的知名定律之阿尔巴德定理
  4. 【编程导航】国外大神总结的实用代码,30 秒学会!
  5. Linux物理CPU及逻辑CPU查看
  6. 动画效果-基础动画设置(改变大小,改变透明度,翻转,旋转,复原)
  7. 助教日志—请沈航13级同学将GIT地址和CNBLOG地址发到这篇博文的评论中
  8. HQChart使用教程78-分时图集合竞价
  9. Cursor 详解及使用
  10. c语言一个整数犯二的程度编程,团体程序设计天梯赛-练习集 L1-017 到底有多二...
  11. 出版印刷纸张大小尺寸一览表
  12. 微信公众号自定义菜单创建接口
  13. 道一云与畅捷通T+对接集成获取报销信息列表=>凭证创建
  14. Unity | Unity中UI框架的实现与使用
  15. STM32F4的DMA
  16. 人民币首度超过美元!
  17. MaxViT实战:使用MaxViT实现图像分类任务(一)
  18. 集成电路中,反相器为什么能增大驱动能力
  19. SDU程序设计思维Week6-限时模拟 掌握魔法の东东II
  20. 电商软件性能测试,实战 | 电商业务的性能测试(一): 必备基础知识

热门文章

  1. 玄幻小说--仙界修仙
  2. CIAGAN: Conditional Identity Anonymization Generative Adversarial Networks
  3. 十个信号发生器方案给你提供灵活多变的信号源
  4. WPS 关闭 wpscenter.exe 服务
  5. 理财笔记 - 关于中概互联和中国互联
  6. 【数学期望】期望dp
  7. 【POJ No. 1743】音乐主题 Musical Theme
  8. 机器学习之决策树01
  9. [bzoj5050][线段树]建造摩天楼
  10. linux .a文件如何打开,A 文件扩展名: 它是什么以及如何打开它?