历史上的今天
返回首页

历史上的今天

今天是:2024年11月06日(星期三)

正在发生

2019年11月06日 | 怎样用stm32(F103系列是12位ADC)…

2019-11-06 来源:eefocus

重点在最后一段(看懂就行了)


可采用过采样技术。过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。如果STM32的12位AD,每秒采集10个数据,即采样率为:10/秒。根据过采样技术,每提高1位ADC分辨率,需要增加4倍的采样率。从12位AD提高到14位AD,一共提高了2位,所以需要把采样率提高2 * 2 * 2 * 2 = 16倍。原来在100mS之内只采集一个数据,现在需要在100mS之内采集16个数据了。然后,我们把这16个数据累加,再把累加值右移2位,这样就得到STM32过采样之后的14位ADC。


需要注意的是,过采样技术会限制输入信号的频率。根据采样定律,采样率最少是输入信号的2倍才能将信号还原。当需要提高n位的ADC分辨率时,采样率又得提高4*n倍。STM32的12位ADC的最高采样率为1MHz,如果要达到14位的ADC分辨率,那么输入信号的频率就不能超过:1M/2/15 = 31.25KHz。


最后提醒:分辨率的提升到14位并不是精度也能提升14位。我自己试过提升到16位的分辨率,但是精度大概只有13、14位的样子。


STM32的精度不可能提高的太多,要提高只能在分辨率上想办法,提高分辨率间接提高精度,但是这是由一个度的,跟你的要采样的外部信号的频率、CPU的处理速度等等都是有关系的。 


过采样只能提高分辨率,精度不是随便可以提高的。要不然0832不就能替代所有的AD芯片了。 


精度通常是指准确度。指测量值与实际值的差异性。影响精度的因素很多。如分辨力,线性度等。 


分辨率可以通过分辨力来理解。8bit的分辨力为1/256,10bit时为1/1024,但实际还要通过量程转换成具体的值,不能没有量纲或单位(量纲与单位是不同的概念)。

 

分辨率通常用百分比来表示,而分辨力则用绝对值来表示。“5/256 =0.01953125V”指的是分辨力而不是分辨率。而这样的分辨能力仅仅是指理论能力而不是实际能力。因为实际能力还要包括非线性因素引起“干扰”。 


总结:分辨率容易提升到24位,但是精度能到24位的要求就很高了。市面上的16、24位AD转换芯片一般指的是分辨率,而不是精度。 


STM32的adc如果要使用在精度要求高的地方,如3级电子称、精准计量仪表的话,stm32就比较勉强了。建议换外置的ADC。


到底怎样使用过采样法来提高AD采样精度?


以下的思路使用于任何单片机: 

比如设个定时器每个10us触发下STM32的ADC的采用,采到256个后将256个数据累加求和,如果当12位ADC用就除以256,13位用除以128,14位用除以64,15位用除以32,16位用除以16。得到结果后存放缓冲区中,再增加一段软件滤波程序就OK了! 


例如下面这段程序:

#define VccTmpAdcVal  16384//14位ADC

VREF_VAL=VccVal*ADC_FilterChannel[inrefv]/VccTmpAdcVal ; //内部参考电压对应的电压值 VREF_VAL=3.3*内部基准电压的十六进制ADC值/16384


void FileterADC(void)

{

u8 i,j,k;

    u32 sum;

    u16 temp; 

vu16 AD_Value_T[N][M];

 

for(i=0; i

  for(j=0; j

{

AD_Value_T[j][i]=AD_Value[j][i];

}


    for(k=0; k

for(i=N; i>0; i--)//博客不显示出来 一定要显示出来这句

   for(j=0; j<=i; j++)

  {

   if(AD_Value_T[j][k] > AD_Value_T[j+1][k] )

 {  

  temp=AD_Value_T[j][k] ;

  AD_Value_T[j][k] =AD_Value_T[j+1][k];

  AD_Value_T[j+1][k]=temp;  

  }

}

for(i=0; i

{

 for(j=30,sum=0; j<70; j++)       

  { 

sum+=AD_Value_T[j][i] ;  //把第一列的数据从第30位到第69位共40位 求和

  }

  ADC_FilterChannel[i]=sum/10;   //取平均//当14位ADC使用时,累加和要除以(采样个数右移两位)//sum/(40>>2)

}


}

注:上文来源于:http://www.openedv.com/posts/list/5815.htm 的magicoctoy。后面我自己加了一段实例,方便理解。

推荐阅读

史海拾趣

ELM [ELM Electronics]公司的发展小趣事

ELM始终将品质管理作为公司发展的核心。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,ELM还注重客户需求和反馈,不断优化产品和服务,以满足客户的个性化需求。这些举措使得ELM的产品在市场上享有很高的声誉和口碑,客户满意度持续提升。

Globaltech Semiconductor Co Ltd公司的发展小趣事

随着公司业务的不断发展壮大,Globaltech开始着手进行全球化布局。公司在全球多个地区设立了研发中心和销售中心,以便更好地服务全球客户。同时,公司还注重可持续发展和社会责任,积极参与公益事业和环保活动。这些举措不仅提升了公司的社会形象和品牌价值,也为公司的长期发展奠定了坚实的基础。

以上五个故事展示了Globaltech Semiconductor Co., Ltd.在电子行业中的发展历程和关键里程碑。通过技术创新、市场拓展、研发实力提升、战略调整和全球化布局等措施,公司不断壮大自身实力,并在全球半导体行业中占据了一席之地。

CyOptics Inc公司的发展小趣事

随着Avago的进一步发展和演变,CyOptics作为其子品牌也迎来了新的发展机遇。如今,Avago已经演变为Broadcom公司,而CyOptics则继续以其在光学领域的专业技术和丰富经验为Broadcom的产品线增添光彩。展望未来,CyOptics将继续秉承其技术领先和创新驱动的理念,为全球客户提供更加优质的光学产品和服务。

Cal Crystal Lab Inc / Comclok Inc公司的发展小趣事

Cal Crystal Lab Inc起初是一家专注于电子晶体管研发的小型实验室。在电子行业的早期,晶体管的性能直接决定了电子设备的质量和性能。创始人张先生凭借对电子技术的深厚理解,带领团队不断攻克技术难关,成功研发出性能更稳定、寿命更长的晶体管。这一创新不仅让Cal Crystal Lab Inc在业内崭露头角,还吸引了大批合作伙伴的青睐。随着市场需求的不断增长,公司逐渐扩大规模,从一个小型实验室成长为拥有多条生产线的大型企业。

Fronter Electronics Co Ltd公司的发展小趣事

Fronter电子成立于1991年,由一群对电子技术充满热情的创业者共同创立。在公司成立初期,Fronter电子专注于电子元件的代理与销售,通过引进国际知名品牌的产品,如SUNLORD、KDS等,迅速在行业内建立了初步的声誉。公司凭借敏锐的市场洞察力和高效的供应链管理,逐步在电子元器件市场中站稳脚跟。

Hifn Inc公司的发展小趣事

为了寻求更广阔的发展空间,Fronter电子开始积极拓展国内外市场。公司通过参加各类行业展会、建立广泛的销售网络以及开展国际合作等方式,不断开拓新客户和市场领域。同时,Fronter电子还逐步向多元化经营转型,不仅限于电子元器件的销售,还涉足到了电子产品的设计、制造和服务等多个环节。这种多元化经营的策略使得Fronter电子能够更好地满足市场需求,提升整体竞争力。

问答坊 | AI 解惑

51的定时器问题

我想用51来做一个定时         设置5个键     1  设置   2  换位   3  数字加   4  数字减   5 RESET 用数码管显示 ...…

查看全部问答>

职场上“突破”的杰出

许多人参加工作以后,总是感到怀才不遇,不被人重视,觉得有劲无处使,憋闷得慌。其实,关键还在自身,在于自己怎么做,做得怎样。因为你的努力决定了你的价值。   I994年初进微软的唐骏,他本想去市场部,结果却成了微软软件开发部的程序员。那 ...…

查看全部问答>

液晶只显示一半???

我写了不用操作系统的程序。把图像信息考到缓冲区后,只能显示一般的图像不知道为什么? 我的屏幕是320*240的 U8 ScreenBitmap[] = { 0X00,0X10,0X40,0X01,0XF0,0X00,0X01,0X1B,…………………………}; #define IMAGE_FRAMEBUFFER_DMA_BASE&nbs ...…

查看全部问答>

MSP430单片机中, 当只用AD4一个端口的时候, 为什么跳不到中断中去? 每次中断标志都是显示

#include static unsigned int ADCResult; //功能函数 void Coulometry() {        P6SEL |= BIT4 ;    // Only Enable A/D channel A4     ADC12CTL0 &= ~ENC ;       & ...…

查看全部问答>

多普达的 原始红外 开发

由于公司购买的部分红外设备仅支持原始红外,所以请问  多普大公司的PPC手机现在是否还支持 原始红外 这种通讯方式  多普大客服回复说 仅支持标准红外(就是IrComm) 怕他们说得不对,所以向大家征询一下 是否多普大的PPC手机还 ...…

查看全部问答>

向大家请教 有关判断串口接收数据 以及使用AT COMMAND 控制手机收发短信的问题。

几个问题。 1:我从另外一端利用串口收到2个感应器的开关信息,分别是DOOROPEN & DOORCLOSE, DOORFREE & DOORBLOCK,问题是这些信息都是储存在一个data(从另一端接收到的)里面的,如果我让这个data显示在textbox,就会出现overwrite得问题。所以我 ...…

查看全部问答>

蒸汽熨斗自动保护电路图

电路如图所示,市电经C5、R7、R8降压、VD7~VDl0整流和VD11稳压后为,电路提供工作电压。当电熨斗水平放置时,水银开关S向下倾斜15o 左右,处于断开状态。这时,IC1-a输出低电平,C1通过R2充电,ICl-c输出低电平,ICl-d也输出低电平,VD3、VD4、IC1 ...…

查看全部问答>

求热流传感器HFS50

求HFS50热流传感器工作原理…

查看全部问答>

stm32f100c8相关资料

请教大神,谁有这方面的资料,小弟感激不尽。…

查看全部问答>

STM32f103vdt6中DAC的波形输出频率怎么调?

刚开始接触stm32f103vdt6然后写了一个程序,请大神指教一下怎么样可以将频率调好,怎么计算频率啊? 部分程序如下: void DAC_Configuration(void)   {       DAC_InitTypeDef   DAC_InitStructure; & ...…

查看全部问答>