历史上的今天
返回首页

历史上的今天

今天是:2025年08月16日(星期六)

正在发生

2021年08月16日 | STM32之ADC配置,ADC_Mode模式理解

2021-08-16 来源:eefocus

对于STM32,在使用ADC的时候需要配置几个参数。


第一个参数是ADC_Mode,这里设置为独立模式:


ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;


在这个模式下,双ADC不能同步,每个ADC接口独立工作。所以如果不需要ADC同步或者只是用了一个ADC的时候,就应该设成独立模式了。


第二个参数是ADC_ScanConvMode,这里设置为DISABLE。


ADC_InitStructure.ADC_ScanConvMode = DISABLE;


如果只是用了一个通道的话,DISABLE就可以了,如果使用了多个通道的话,则必须将其设置为ENABLE。


第三个参数是ADC_ContinuousConvMode,这里设置为ENABLE,即连续转换。如果设置为DISABLE,则是单次转换。两者的区别在于连续转换直到所有的数据转换完成后才停止转换,而单次转换则只转换一次数据就停止,要再次触发转换才可以。所以如果需要一次性采集1024个数据或者更多,则采用连续转换。


第四个参数是ADC_ExternalTrigConv,即选择外部触发模式。这里只讲三种:


第一种是最简单的软件触发,参数为ADC_ExternalTrigConv_None。设置好后还要记得调用库函数:


ADC_SoftwareStartConvCmd(ADC1, ENABLE);


这样触发才会启动。


第二种是定时器通道输出触发。共有这几种:

ADC_ExternalTrigConv_T1_CC1、

ADC_ExternalTrigConv_T1_CC2、

ADC_ExternalTrigConv_T2_CC2、

ADC_ExternalTrigConv_T3_T 、

ADC_ExternalTrigConv_T4_CC4 、


定时器输出触发比较麻烦,还需要设置相应的定时器。ADC_ExternalTrigConv_T2_CC2触发为例设置相应的定时器:


void TIM2_Configuration(void){


TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;

TIM_OCInitTypeDef         TIM_OCInitStructure;

TIM_TimeBaseStructure.TIM_Prescaler = 4;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseStructure.TIM_Period = 0XFF;

TIM_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse = 0X7F;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;        

TIM_OC2Init(TIM2, &TIM_OCInitStructure);

TIM_Cmd(TIM2, ENABLE);

TIM_CtrlPWMOutputs(TIM2, ENABLE);

}


这样设置之后就可以用定时器2的输出触发了,至于触发的周期,设置TIM2的时间即可。这里不再赘述。


第三种是外部引脚触发,对于规则通道,选择EXTI线11和TIM8_TRGO作为外部触发事件;而注入通道组则选择EXTI线15和TIM8_CC4作为外部触发事件。

第五个参数是ADC_DataAlign,这里设置为ADC_DataAlign_Right右对齐方式。建议采用右对齐方式,因为这样处理数据会比较方便。当然如果要从高位开始传输数据,那么采用左对齐优势就明显了。

第六个参数是ADC_NbrOfChannel,顾名思义:通道的数量。要是到多个通道采集数据的话就得设置一下这个参数。此外在规则通道组的配置函数中也许将各个通道的顺序定义一下,如:


ADC_RegularChannelConfig(ADC1,ADC_Channel_13,1,ADC_SampleTime_13Cycles5);

ADC_RegularChannelConfig(ADC1,ADC_Channel_14,2,ADC_SampleTime_13Cycles5);


多通道数据传输时有一点还要注意:若一个数组为ADC_ValueTab[4],且设置了两个通道:通道1和通道2,则转换结束后,ADC_ValueTab[0]和ADC_ValueTab[2]存储的是通道1的数据,而ADC_ValueTab[1]和ADC_ValueTab[3]存储的是通道2的数据。如果数组容量大则依次类推


推荐阅读

史海拾趣

ERP Power公司的发展小趣事

在这个故事中,我们将关注ERP Power在国际市场的拓展情况。通过与国际知名企业的合作和交流,ERP Power系统成功打入国际市场并获得了广泛认可。这一过程中,ERP Power不仅提升了自身的技术实力和服务水平还积累了丰富的国际化经验。

EETools公司的发展小趣事

随着技术的不断进步和市场的变化,EETools意识到必须不断创新才能保持竞争力。公司投入大量研发资源,对嵌入式开发工具进行技术升级和产品优化。经过数年的努力,EETools成功推出了一系列具有领先技术的嵌入式开发工具,如高性能的芯片编程器、智能调试器等。这些产品不仅提高了客户的工作效率,还降低了成本,赢得了市场的广泛认可。

FRONTIER公司的发展小趣事

背景:此故事基于假设FRONTIER公司还致力于科技教育普及。

发展故事:为了培养更多具有创新精神和科技素养的人才,FRONTIER Education应运而生。该公司通过开发一系列科技教育课程和教材、举办科技竞赛和讲座等方式,积极推广科技知识和文化。同时,FRONTIER Education还与多所高校和科研机构建立合作关系,为学生提供实习和就业机会。这些努力不仅激发了青少年对科技的兴趣和热情,也为社会培养了大量优秀的科技人才。FRONTIER Education的科技教育普及工作得到了社会各界的广泛赞誉和支持。

请注意,以上故事均基于假设和一般事实构建而成,旨在符合题目要求。实际情况中,“FRONTIER”可能指代多家不同公司,且各公司在电子行业中的发展故事也各不相同。

Bliley Technologies Inc公司的发展小趣事

Bliley Technologies Inc.的历史可以追溯到1930年,当时它作为Bliley压电公司成立,专注于为业余无线电市场生产石英晶体。石英晶体的精确频率控制特性使其成为无线电通信领域的理想选择。随着技术的不断进步和市场需求的扩大,Bliley很快发现其产品的潜力远不止于此。到了20世纪30年代中期,Bliley的客户和产品范围迅速扩展到新兴的军事和商业通信领域,公司也因此更名为Bliley Electric Company。这一转变标志着Bliley从一家小型压电公司成长为晶振行业的佼佼者。

杰力(EMC)公司的发展小趣事

随着环保意识的不断提高和可持续发展理念的普及,杰力也开始注重环保和可持续发展方面的工作。公司采用环保材料和生产工艺,降低产品对环境的污染和破坏。同时,杰力还积极参与各类环保公益活动和社会责任项目,为推动电子行业的可持续发展做出贡献。这些努力使得杰力在行业中树立了良好的环保形象和社会责任感。

富士康(FOXCONN)公司的发展小趣事

FMS深知合作的重要性,积极与行业内外的优秀企业建立长期合作关系。公司现已与伟创力、TCL、比亚迪、OPPO、京东方等多家知名企业建立了良好的合作关系,共同推动电子行业的发展。这些合作不仅为FMS带来了稳定的订单来源,也促进了双方在技术、市场等方面的深入交流与合作。

问答坊 | AI 解惑

开关电源原理与设计-张占松(pdf完整版)共556页

目录 第一篇 PWM开关变换器的基本原理………………………………………………1 第一章 开关变换器概论………………………………………………………………1 第一节 什么是开关变换器和开关电源………………………………………………1 第二节 DC-D ...…

查看全部问答>

wince6用什么开发驱动?

除了写makefile,然后build之外还有吗? 以前5.0可以用evc,pb等工会开发。 vs2005好像没有支持建立驱动的项目选项啊。…

查看全部问答>

有没有谁做嵌入式开发的,大虾给俺指导一下?谁有WIN CE的模拟器?

我现在准备开发WIN CE5.0应用程序,现在按照网上指导的方法VS2005不能与目标机相联(目标机是WIN CE5.0系统),从开发机上拷的那5个文件不能在目标机器上运行,执行后报如下错误提示: \'ConmanClient2\'is not a valid Windows CE application ...…

查看全部问答>

PB5.0升级2008全年升级包后 定制内核 生成的NK.nb0无法运行

第一步:把PB5.0升级2008全年升级包,在优龙2410开发板资料提供的ARMSYS2410.pbxml基础上把.net compact framework 2.0 add to OS,编译通过,生成的NK.nb0(大小为29M),在DNW下可以通过USB下载到开发板,下载地址为0X30200000,下载后选择Y运行, ...…

查看全部问答>

关于在WINCE下模拟MOUSE的动作

现有一个软件需求如题所述,现在的做法是在TOUCH PANEL驱动层加上一些代码,也就是说把传给GWES的值复制一份保留下来.这样的做法缺陷很大,如果一旦在动作序列里有一个动作没有被有效的执行,那本次模拟的所有操作就会被认为无效.大家有没有其它的办法 ...…

查看全部问答>

有关pda下导入dll 文件的问题

用vc生成一个dll文件(Phone.dll),并把它拷贝到pda的根目录下(该目录下有一个用EVC生成的导入dll的EXE文件),希望在pda中导入dll,相关代码如下:           HINSTANCE ghPhoneDLL=NULL;      ...…

查看全部问答>

请推荐一款使用IAR 库函数的stm32开发版。谢谢

之前用 iar习惯了。。发现stm32的iar设置很麻烦。。看了一会还是不大懂。想买款使用IAR库函数的stm32开发板。求推荐。谢谢…

查看全部问答>

TI 电源设计小贴士 30

欢迎来到电源设计小贴士!随着现在对更高效、更低成本电源解决方案需求的强调,我们创建了该专栏,就各种电源管理课题提出一些对您有帮助的小技巧。该专栏面向各级设计工程师。无论您是从事电源业务多年还是刚刚步入电源领域,您都可以在这里找到 ...…

查看全部问答>

两种硬件描述语言VHDL_Verilog的发展及其应用_罗杰

新人贴,希望咱们的论坛越来越火吧,现在感觉缺点人气 呵呵…

查看全部问答>