历史上的今天
返回首页

历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2019年10月09日 | STM32F0 ADC学习

2019-10-09 来源:eefocus

开始时候使用的是stdlib的库,最近发现cube库用的越来越广泛了,遂开始使用cube库来完成ADC的多通道采集实验。


ADC 的driver 在STM32F0XX_HAL_DRIVER当中,有stm32f0xx_hal_adc.c文件中,我们可以在stm32f0xx_hal_conf.h中开启 宏定义 ADC 模块。


ADC有三种工作模式,polling interruptDMA


我这里使用了polling的方式来获取多通道的数据。


首先是要声明两个参数设置的结构体


ADC_HandleTypeDef             AdcHandle;

ADC_ChannelConfTypeDef        sConfig;


  AdcHandle.Instance = ADC1;

  

  AdcHandle.Init.ClockPrescaler        = ADC_CLOCK_SYNC_PCLK_DIV4;

  AdcHandle.Init.LowPowerAutoWait      = DISABLE;

  AdcHandle.Init.LowPowerAutoPowerOff  = DISABLE;

  AdcHandle.Init.Resolution            = ADC_RESOLUTION_12B;

  AdcHandle.Init.ScanConvMode          = ADC_SCAN_ENABLE;

  AdcHandle.Init.DataAlign             = ADC_DATAALIGN_RIGHT;

  AdcHandle.Init.ContinuousConvMode    = ENABLE;

  AdcHandle.Init.DiscontinuousConvMode = DISABLE;

  AdcHandle.Init.ExternalTrigConv      = ADC_SOFTWARE_START;

  AdcHandle.Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_NONE;

  AdcHandle.Init.EOCSelection          = ADC_EOC_SINGLE_CONV;

  AdcHandle.Init.DMAContinuousRequests = DISABLE;//

  AdcHandle.Init.Overrun               = ADC_OVR_DATA_OVERWRITTEN;

  

  /* Initialize ADC peripheral according to the passed parameters */

  if (HAL_ADC_DeInit(&AdcHandle) != HAL_OK)

  {

    Error_Handler();

  }

  

    if (HAL_ADC_Init(&AdcHandle) != HAL_OK)

  {

    Error_Handler();

  }

  

  /* ### - 2 - Start calibration ############################################ */

  if (HAL_ADCEx_Calibration_Start(&AdcHandle) != HAL_OK)

  {

    Error_Handler();

  }


基本的参数设置


比较重要的参数有ADC clock设置,sample cycle,ADC分辨率,多通道 scan mode设置。


ADC clock 有两个时钟源可以选择,一个是内部的14MHZ的时钟,,另一个为APB的时钟 最大为14MHZ.








get_ADC_value 为读取AD值的模块,形参为通道,输入通道名称得到该通道对应的AD值。


float get_ADC_value(uint32_t channel)

{

 // uint32_t nResultDMA;

  float  temp;

  start_adc();

  config_channel(channel);

  

  HAL_ADC_Start(&AdcHandle);

  HAL_ADC_PollForConversion(&AdcHandle,1);

  

  temp=HAL_ADC_GetValue(&AdcHandle);

  HAL_ADC_Stop(&AdcHandle);

  //temp=temp*3/4096;

  return temp;

 

}


推荐阅读

史海拾趣

ERNI Electronics公司的发展小趣事

随着公司规模的扩大和产品线的丰富,ERNI Electronics开始积极拓展全球市场。1980年,公司在美国建立了分公司,为后续成为全球供应商打下了坚实的基础。此后,ERNI在新加坡建立了亚洲区总部,并在中国、台湾、韩国、泰国、马来西亚和印度等地设立了销售办事处。这一系列举措使得ERNI的产品能够覆盖更广泛的市场,满足了全球客户的需求。

Bliley Technologies Inc公司的发展小趣事

在Bliley的发展历程中,技术创新始终是推动其不断前进的重要动力。从最初的石英晶体生产,到后来的恒温控制晶体振荡器(OCXO)、温度补偿晶振(TCXO)和压控晶体振荡器(VCXO)等先进产品的开发,Bliley始终站在行业技术的最前沿。公司拥有一支专业的研发团队,致力于开发更高效、更稳定、更精确的频率控制产品。这些技术创新不仅提升了Bliley的产品竞争力,也推动了整个电子行业的发展。

Electric Imp Inc.公司的发展小趣事

在电子行业的浪潮中,Electric Imp Inc.公司以其独特的物联网(IoT)解决方案崭露头角。公司创始人是一位资深的电子工程师,他敏锐地捕捉到了物联网市场的巨大潜力。在创业初期,公司面临资金短缺、技术瓶颈等挑战,但创始人带领团队夜以继日地研发,终于推出了第一款基于云计算的物联网设备管理平台。这款产品凭借其易用性、稳定性和可扩展性,迅速获得了市场的认可。

Gauthier Connectique公司的发展小趣事
能够灵敏地接收来自遥控器的微弱红外线信号,确保用户指令的准确传输。
Electromagnetic Industries Llp公司的发展小趣事

EMI公司成立于20世纪80年代初,当时正值电子行业的快速发展期。创始人李先生凭借对电磁技术的深厚理解和市场洞察,决定投身电磁产品的研发与生产。初创时期,公司面临着资金短缺、技术难题和市场认可度低等多重挑战。然而,李先生和他的团队并没有放弃,他们通过夜以继日的研发,不断攻克技术难关,同时积极寻找合作伙伴,拓展销售渠道。经过几年的努力,EMI公司逐渐在市场上站稳了脚跟。

ETL semiconductor公司的发展小趣事

1958年,德州仪器(TI)的工程师杰克·基尔比面临一个挑战:如何将复杂的晶体管布线简化。他通过不懈努力,发现了一种将多个晶体管内置在同一块硅或锗板中的方法,从而大大简化了电路设计。这一创新为集成电路的发展奠定了重要基础,也奠定了德州仪器在半导体行业的领先地位。

问答坊 | AI 解惑

小工程公司发展困惑与实际操作问题讨论(四)

四、报价管理 1、设计流程 技术进行方案设计并确认所需设备的要求,统筹按技术提供信息在资料库中查询相关产品并生成设备清单与底价单与报价单,业务对方案与报价进行审核以确定符合客户与公司利益 2、目前状况 有一个同事比较熟悉安防市场,对 ...…

查看全部问答>

串口通信 输入显示乱码

用超级终端和DNW都一样,可以肯定不是波特率设置不对,因为我用的是默认的波特率,读入正常,就是可以正确的读取开发板上的信息,但是输入信息的时候显示是乱码。 如输入N显示的是L输入A显示的是@回车相当于删除~~~空格没反应 我输入命令NAND FLA ...…

查看全部问答>

有关嵌入式的问题

中国那些地方搞嵌入式的公司最多???? 搞嵌入累吗?? 有空余的时候休息吗???…

查看全部问答>

有关AD9822

请教高手。现在正做一个CCD采集系统。数据通过AD9822 进行转换,AD9822中有三个引脚SDATA、SCLK、SLOAD,说明上是Serial Interface,现在我的板子上有CPLD还有USB芯片CY7C68013,问一下这三个引脚应该和对应的什么相连呢?不胜感激!…

查看全部问答>

跪求ir1308 的pdf资料!

如题,,万分感谢!!!…

查看全部问答>

招聘硬件工程师

要求:          1、精通电子电路、开关电路设计,精通单片机、C编程,3年以上工作经验,          2、能独立做产品方案设计 ,动手能力强,具有良好的沟通协调能力,   &nb ...…

查看全部问答>

请教2407A的输出驱动能力

那位大虾知道2407A  I/O口的驱动电流有多大,是怎么得到这个电流的,谢谢…

查看全部问答>

恩智浦高速低功耗ARM Cortex-M3微控制器 - LPC1700

[问:zyw] PWM的输出边沿和中心方式,是固定的还是可选择? [答:George] 是可以选择的。 [2009-6-18 10:25:07] [问:ningzb] 你好,我们正在做一个电力系统的设备,现在正在选型,一直关注LPC17系列,现在急需1.知道的是 ...…

查看全部问答>

proteus单片机仿真教程大全 视频 文档 从入门到精通

proteus单片机仿真教程大全  视频 文档 从入门到精通proteus单片机教程大全  视频 文档 从入门到精通网上收录来了很多proteus仿真的教程资料,在这里跟大家共享一下,有需要的下载看一看吧。 文档教程proteus入门教程proteus快速入 ...…

查看全部问答>

三相电相序判断

怎样通过stm32 判断三相电对应的相序,各位大侠帮帮忙!!…

查看全部问答>