历史上的今天
返回首页

历史上的今天

今天是:2025年03月04日(星期二)

正在发生

2020年03月04日 | STM8L ADC功能

2020-03-04 来源:eefocus

STM8L系列单片机集成了AD功能,有一个ADC模块,但是有最多可达28个AD通道,可以配置为单次采样或者连续采样。


ADC的精度最多可配置为12位精度,另外可以选择6位、8位、10位的精度。


下面举例初始化一个ADC的配置函数:


void ADC21Conver_Init()

{

  ADC_ChannelCmd(ADC1,

                 ADC_Channel_0,         //关闭其他的采样通道

                 DISABLE);

  ADC_Cmd(ADC1 , DISABLE);               //关闭ADC

  

  CLK_PeripheralClockConfig(CLK_Peripheral_ADC1 , ENABLE);              //使能ADC1时钟

  

  GPIO_Init(GPIOD , GPIO_Pin_1 , GPIO_Mode_In_FL_No_IT);  //配置AD引脚

  

  

  ADC_Init(ADC1,

           ADC_ConversionMode_Single,   //单次转换模式

           ADC_Resolution_12Bit,        //12位精度转换精度

           ADC_Prescaler_1              //时钟设置为1分频

             );  

  

  ADC_ChannelCmd(ADC1,

                 ADC_Channel_21,         //设置为通道21进行采样

                 ENABLE);

  

  ADC_Cmd(ADC1 , ENABLE);               //使能ADC  

}


因为只有一个ADC,所以在配置之前需要先之前使用的其他的AD通道,这里如果不关闭之前使用的AD通道的话,无法打开新的AD采集通道。


ADC可以选择时钟为1分频或者2分频,可以选择采样精度和采样方式。


下面列举一个读取ADC采样结果的函数:


void ADC_Data_Read(unsigned int *AD_Value)

{

  

  ADC_SoftwareStartConv(ADC1);      //启动ADC

  

  while(ADC_GetFlagStatus(ADC1 , ADC_FLAG_EOC) == 0);  //等待转换结束

  

  ADC_ClearFlag(ADC1 , ADC_FLAG_EOC);                 //清除中断标志

  

  *AD_Value = ADC_GetConversionValue(ADC1);           //读取ADC1,通道1的转换结果

  

}


使用上面两个函数即可实现ADC采样功能,但是有个地方很奇怪,每次采集ADC值的时候第一次采集到的数据都是不准确的,所以第一次采集到的值是不能使用的。


另外STM8L内部还提供了1.2V的参考电压,但是在使用这个参考电压的时候有一些不稳定的现象。


比如在采集这个参考电压时,如果在读取函数前面加延时,延时的时间不一样得到的采样结果是不一样的,另外,这个参考我根据外面提供的VCC作为参考电压来计算的话,得到的值也不是1.2V,这个地方不知道是我的配置出了问题还是这个参考电压本身有问题。

推荐阅读

史海拾趣

CWIND公司的发展小趣事

CWIND公司非常重视人才培养和团队建设。公司建立了完善的培训体系,为新员工提供全面的职业技能培训;同时,公司还鼓励员工参与各种技术交流和培训活动,提升自身的技术水平。在团队建设方面,CWIND注重营造积极向上的工作氛围和团队合作精神。通过定期举办团队建设活动和员工表彰大会等方式,公司成功打造了一支高效、协作、创新的团队。

Crane Connectors公司的发展小趣事

在日益严峻的环保形势下,Crane Connectors公司积极响应国家环保政策,将绿色环保理念融入企业的生产经营活动中。公司采用环保材料和节能技术,减少生产过程中的污染物排放和资源消耗。同时,公司还加强废弃物的回收和处理工作,实现资源的循环利用。这些环保举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

Cables To Go公司的发展小趣事

品牌建设是公司发展的重要一环。Cables To Go公司注重品牌形象的塑造和传播,通过参加行业展会、举办产品发布会等方式提升品牌知名度。同时,公司还积极参与社会公益活动,展现企业的社会责任感和担当精神。这些举措有效地提升了Cables To Go的品牌形象和影响力,为公司的长期发展奠定了坚实的基础。

BILIN公司的发展小趣事

品牌建设是公司发展的重要一环。Cables To Go公司注重品牌形象的塑造和传播,通过参加行业展会、举办产品发布会等方式提升品牌知名度。同时,公司还积极参与社会公益活动,展现企业的社会责任感和担当精神。这些举措有效地提升了Cables To Go的品牌形象和影响力,为公司的长期发展奠定了坚实的基础。

Electro-Mech Components Inc公司的发展小趣事

1997年,EMC做出了一次重要的收购决策——从Pollak Transportation Electronics Division(TED)收购了开关灯产品线。这一收购使EMC的产品线得到了极大的扩展,同时也增强了其在电气元件领域的竞争力。收购后的开关灯产品线在EMC的精心运营下,逐渐成为了公司的明星产品之一,为公司带来了丰厚的利润。

Cal-Chip Electronics公司的发展小趣事

在XXXX年,Cal-Chip Electronics公司迎来了一次技术创新的重大突破。公司研发团队成功开发出了一款具有高效能、低功耗特点的新型芯片,这款芯片在行业内引起了广泛关注。凭借这一技术创新,公司迅速扩大了市场份额,并与多家知名企业建立了长期合作关系。这一突破不仅提升了公司的技术水平,也为公司的长远发展奠定了坚实基础。

问答坊 | AI 解惑

谈谈技术之外的学习经验

大事化小,成功一点点做起 我是搞工程的,我自己在做事的时候喜欢把任务分为许多块,没完成一个就有一次成就感,这样愉快的进行下一个目标。我平时也训练自己的这方面的能力,比如每天做俯卧撑20个,抄写古文等,目前已经抄写过《论语》,《孙子兵 ...…

查看全部问答>

基于51的医院无线护理呼叫系统的设计

基于51的医院无线护理呼叫系统的设计资料,都是我在做课程设计时收集的 ,给大家分享了 .....................…

查看全部问答>

北航夏宇闻verilog讲稿ppt

本帖最后由 paulhyde 于 2014-9-15 03:33 编辑 北航夏宇闻verilog讲稿ppt  …

查看全部问答>

国外一示波器PCB

Owon HDS2062 Oscilloscope …

查看全部问答>

哥哥姐姐们 求助运水机器人小车的电路图

主要是各驱动电路图 最好是原理什么都有 谢谢 谢谢 [email=523849997@qq]523849997@qq[/email].com…

查看全部问答>

【200分】中断驱动+应用层同步响应的问题咨询

问题描述: 1.一个流式驱动,工作流程是硬件触发一个中断,系统采集到数据信息后通过xxx_READ将采集到的数据发给应用层; 2.驱动通过一个线程函数来获取GPIO的中断信号,并读取值从打印信息打印出。 (这里的处理正常,有多少中断都接受到,并且 ...…

查看全部问答>

再提问,pda连接access数据库问题

我在微软的网站下载的示例程序Pocket Access Demo,模拟器下运行没有任何问题,但是导到pda上总是提示未处理的“System.Runtime.InteropServices.ExternalException”类型的异常出现在 InTheHand.AdoceNet.dll 中。 其他信息: -2147024809 而且我 ...…

查看全部问答>

2440发热大怎么办?

用SAMSUNG的2440A做导航终端,400M主频,CPU发热严重,板子和机壳都很烫热.各位有什么好办法可以使CPU降温?看到别人的导航仪亦热,略感欣慰,非我独有啊!…

查看全部问答>

求wince下,基于RDA的数据库操作例程

除了《evc高级编程及其应用开发》书上的例程,通通可以。。。越简单越好。 不胜感谢。 跪谢先!! shmxubj@hotmail.com…

查看全部问答>

6713不能装载

我自己做的6713的板子,进入CCS后显示是6211,CSR中的id号和版本号为0005,程序不能装载,提示.out文件与目标类型不符;我的CCS是2.21的,硬件也检查过了,clkout2 clkout3输出都正常,不知道到底是是什么问题;我看到poorman前辈也遇到过同样的问 ...…

查看全部问答>