STMF103R8如何配置ADC采样

发布者:喜悦的38号最新更新时间:2024-06-24 来源: elecfans关键字:配置  ADC采样 手机看文章 扫描二维码
随时随地手机看文章

有人使用STM32F103系列想实现如下需求,碰到些许配置困难。【因没说完整型号,这里假定为STMF103R8来聊。其实,对于下面话题,它是什么型号已经不重要了,后面话题重点跟芯片型号基本无关。】


现在欲配置一个ADC采样,配置Timer1通道1,2,3输出三路PWM,同时想用Timer3的TRGO通道触发ADC,要求ADC在三路PWM输出高电平中间点采样【即下图红色箭头所指位置】。目前已经知道配置方式是Timer1配置成中央对齐方式,然后ADC使能外部触发,为了观察是否在高电平中间点采样,在ADC中断做了一个IO口翻转操作,现在观察PWM和IO口波形,发现IO口翻转还是在PWM高电平上升沿时出现,那么 该怎么配置呢?

cd0f54f2-1140-11ed-ba43-dac502259ad0.png

要实现上面PWM输出,我们可以考虑STM32芯片内的高级定时器【TIM1或TIM8】,并让更新事件发生在上面箭头所指位置,同时将该更新事件作为ADC的触发启动信号那就最方便了。

这样是否可行,我们还得具体看看硬件资源上是否支持。

cd6a177a-1140-11ed-ba43-dac502259ad0.png

我们通过CubeMx可以快速查到,对于TIMER1的事件,这里的ADC仅支持它的前3个通道的比较事件来触发它。因为这里选定要在那个中心点做触发,那选择3个比较通道的任一个都不太合适。

如果说ADC支持TIM1的第4个通道的话,我们倒还可以用用它,但这里也不支持。

从上面截图可以看到,ADC是支持来自TIM3的TRGO触发信号的。既然这样,如果将TIM1、TIM3主从级联起来,让TIM3与TIM1同步计数、并使用相同的计数周期,让TIM3的更新事件发生在TIM1 PWM输出的中心点,这样按理应该是可以的。

为了验证这点,因为手上没有F1系列开发板,找了块F411的开发板来做测试。其外设方面跟F103系列比较接近。

cd89be04-1140-11ed-ba43-dac502259ad0.png

通过查看手册,TIM1/TIM3可以主从级联起来。TIM1的TRGO可以作为TIM3的触发输入信号。

这里我们让TIM1的更新事件作为TIM3的触发启动信号,即让TIM3工作在Trigger mode,让TIM1启动TIM3. 这里令TIM1->ARR=10000, TIM3->ARR=20000,TIM1工作在中心对齐计数模式,TIM3工作在向上单向计数模式。TIM1的更新事件产生TRGO作为TIM3的触发输入信号。通过TIM3的更新事件触发ADC转换。

TIMER1相关参考配置如下:

cdaadf26-1140-11ed-ba43-dac502259ad0.png

TIMER3相关参考配置如下:

cdc2fab6-1140-11ed-ba43-dac502259ad0.png

ADC部分配置代码,这里只是开启了内部Vrefint通道。主要验证ADC触发时间点。

cdd6eaee-1140-11ed-ba43-dac502259ad0.png

配置OK后组织如下用户代码。【注意:眼尖的人会发发现代码里看到不到启动TIM3的语句。另外,我开启TIM3的更新中断是为了在那里基于某gpio输出个尖峰脉冲便于观察。】

cde745c4-1140-11ed-ba43-dac502259ad0.png

测试结果发现,采样点不是每个周期都有,而变成2个周期才有,ADC转换结果倒是出来了,是下面的样子:【黄色尖峰表示采样触发点】

ce166d22-1140-11ed-ba43-dac502259ad0.png

这样看起来,明显感觉TIM3与TIM1的时钟相差了1倍,也就说TIM3要比TIM1慢1倍。难道二者所在外设时钟不一样?这个要看看手册确认下。

ce227374-1140-11ed-ba43-dac502259ad0.png

从手册上看,TIM1/TIM3挂在不同的外设总线APB1和APB2上,总线时钟上限不一样。我们再看看CubeMx里的配置:

cec3b59a-1140-11ed-ba43-dac502259ad0.png

从上图时钟树来看,APB1分频系数为4,导致挂APB1上的TIM3的时钟才48MH,而挂APB2上的TIM1的时钟则是96MHz,这样导致了TIM1/TIM3的计数时钟不一样,前面设计时误以为二者一样了。那我把APB1分频系数由4改成2应该是可以的。只调整这个地方,其它不动再做测试。

调整后,效果立竿见影,不再每两个周期才采样一次,采样点似乎也没啥问题。

不对,瞧着示波器多观察会儿就会发现输出不对劲!感觉那个采样点相对于PWM输出波形在做漂移!刚开始以为示波器问题,细看明显不是,因为二者是相对移动,即采样点并不固定在PMW输出的中心位置。【如下图所示】

ced36f9e-1140-11ed-ba43-dac502259ad0.png

基于上面的初步设计,2个定时器应该是可以严格同步的,这样的话采样点不该偏移啊?难道上面2个TIMER的时间参数哪里有问题?现在二者的时钟是一样的了,都是96Mhz,然后经过96分频进入计数器。目前两个定时器的时间是这样的:

cef14be0-1140-11ed-ba43-dac502259ad0.png

看到这里,有人可能发现问题了!TIM1是双向计数模式,按现有配置算起来,其计数周期是2*10000个时钟,而TIM3是单向向上计数模式,它的计数周期则是20000+1个时钟周期。跟TIM1的计数周期在数字上差了个1,因为计数时钟是经过96分频后过来的,意味着一个完整计数周期就差了96个PCLK 周期。也就说这两个TIMER即使有相同的计数起点,后面会不断积累时间偏差【或者说相位差更合适】,导致基于TIM3的更新事件的采样点相对TIM1总是在飘动。显然,对于TIM3而言,如果它1个周期也计数20000个时钟,它的ARR值应该设置为19999,此处错了!

修改后再行测试,采样点相对PWM输出的高电平中心就非常稳定了。你可以久久的凝视她,久久地,也见不到之前的漂移了,稳如磐石。【下图中黄色尖峰脉冲指示ADC采样触发时刻。ADC结果是同一内部通道的转换值。】

cf02d978-1140-11ed-ba43-dac502259ad0.png

OK,稍作小结。开发时我们可以基于现有资源看菜吃饭,这里只是想借开篇问题分享点东西。问题不复杂,但真要做起来总会有七七八八的事情冒出来,也只有真正做起来才会体验到诸多细节,比如TIMER时基参数的拟定,它虽不复杂、不深奥但不代表不容易出错。这点也是本篇旨在重点提醒的地方。

对于STM32常规定时器而言,在单向【向上或向下】计数模式下,计数周期对应于ARR+1;对于中心对齐计数模式,计数周期对应于2倍ARR值。分频系数对应于PSC+1,溢出事件重复计数值对应于RCR+1.

试想下,对于前面采样点发生漂移现象,如果我不对时钟源先做96分频,这个漂移就不那么容易发现了。不容发现不代表那个漂移不存在,如果变成产品的话,就容易遇到那种奇怪的现象,产品刚开始功能很正常,后来用着用着功能就不太对劲了,然后当对产品复位或重启后问题似乎又消失了,但随着时间的推移问题又会重现,就很可能陷入那种没完没了而又无计可施的困扰和无奈状态。

当然,这里还涉及中心对齐计数模式下更新事件的位置拟定、定时器主从同步等内容,有兴趣的可以进一步尝试体验。


关键字:配置  ADC采样 引用地址:STMF103R8如何配置ADC采样

上一篇:14种嵌入式操作系统的特点介绍
下一篇:RTOS为什么要搞两种API?

推荐阅读最新更新时间:2024-11-10 21:33

STM32 构建库函数
由于自己的粗心大意 导致构建库函数 这一个简单的事 弄了好几个小时 所以我决定把这个配置的过程记录下来 我们按照这个逻辑来 就没有啥问题 前面构建工程过程 就不多赘述 新建文件夹 点击鼠标右键 选择add grup 长按 可以修改文件夹的名字 然后就是从已经有的固件库中导入文件 STRATUP 只需要选择 那个stm32f10x_ hd.s 结尾的 配置成这样就可以了 然后我们选择编译会发现出现error 但是千万不要慌 为什么呢 原因就是 就是我们锤子还没完成配置 点击锤子 选择c/c++ 点击这里 添加一下路径 这里的路径不能带中文 选择这三个就可 然后我们点开user 的main.c 文件 点击头文件
[单片机]
STM32 构建库函数
美国新超算配置到底有多恐怖
近日,美国推出了一台新型超级电脑,其运算速度可达每秒5340万亿次。据悉该电脑将在GPS和其他传感器技术的协助下对极端天气进行预测。 这台超级电脑名为夏延(美国地名),它将被安装在美国国家大气研究中心(NCAR)位于怀俄明州的超级计算中心。这台电脑比NCAR现有的超级电脑“黄石”快的不止一点。 黄石超级电脑也不是什么善茬,其运算速度可达1500万亿次每秒,绝对是世界级的超级电脑之一,黄石由IBM公司打造,其机身内搭载了超过72000个英特尔Sandy Bridge处理器,内存更是达到了恐怖的144.6TB。 夏延的制造公司则换成了美国硅图公司,该电脑将在2017年初正式开始运转,其内存再次翻番,达到了恐怖的313TB,计
[嵌入式]
ST 推出首款航天级可配置集成限流器,降低BOM成本
意法半导体推出一款创新的抗辐射(rad-hard)可配置集成限流器(ICL),用于防止电涌和过载烧毁航天电子设备。 基于欧洲航天局(ESA)的将所有卫星中的功能一致化和微型化的独创概念,在欧洲航天局和法国航天局国家太空研究中心(CNES)的支持下,意法半导体开发出了新的限流器芯片RHRPMICL1A。该产品在全球拥有广阔的应用前景,可为航天设备电源管理系统提供一个高成本效益的标准化且可配置的限流解决方案。 RHRPMICL1A单片集成闩锁限流器和固态功率开关(SSP)两种功能,此前,这些功能需要使用数个分立元器件。这套全集成解决方案不仅简化设计,降低物料清单(BOM)成本,还减轻了系统重量,节省电路板空间高达93%。
[电源管理]
ST 推出首款航天级可<font color='red'>配置</font>集成限流器,降低BOM成本
Moto又一款神秘新机曝光 性能配置不高
根据目前的消息,摩托罗拉将在今年的MWC 2017上发布新机——Moto G5和G5 Plus,关于两款新机的配置、外观信息已经被曝的差不多了。现在,Moto的又一款神秘新机“Watson”现身。 一款代号为“Watson”的摩托罗拉神秘新机曝光(图片引自Twitter)   今天,国外网友曝光了一款代号为“Watson”的摩托罗拉神秘新机,型号是XT1750,拥有8GB的内置存储空间,支持双卡双待,2350mAh容量电池。从曝出的配置信息来看,这是一款入门级别的智能手机,已经通过了FCC认证。   有网友猜测,这款Moto 新机将会被命名为Moto E或Moto C;该机很可能与Moto G5和G5 Plus一同亮相即将到来
[手机便携]
技术文章—杰理科技改进蓝牙网络拓扑配置方案详解
杰理科技发明的蓝牙网络拓扑配置方法,通过这样的蓝牙网络拓扑的自动优化方法和系统,能自动把原来通信双方使用的组网参数和相位同步关系转移到外来设备,不再需要重新规划网络,并使设备自动地选择网络最佳路径加入。 蓝牙技术由于具备普及性、移动性及低功耗等优点,在短距离无线通信技术中得到了广泛运用,尤其在移动端如手机、耳机和便携电脑等设备,基本上成为了一种标准配置。随着物联网的兴起,蓝牙技术也在物联网中扮演重要角色。 蓝牙技术在物联网中的应用主要是通过对各个设备进行连接组网,使其成为一个网络,通过对网络上的某个设备或多个设备进行通信,以实现对物联网的信息获取和设备控制。 在实际应用中,网络中已建立连接的两个设备的通信质量随着
[物联网]
技术文章—杰理科技改进蓝牙网络拓扑<font color='red'>配置</font>方案详解
MAX16070/MAX16071闪存可配置系统监测器
MAX16070/MAX16071闪存可配置系统监测器能够对多个系统电压进行管理。MAX16070/MAX16071还可通过专用的高边电流检测放大器精确监测(±2.5%)一路电流通道。MAX16070可以同时监测12路系统电压,MAX16071可以监测8路电源电压。这些器件都集成了可选的差分或单端输入模/数转换器(ADC)。包括过压门限、欠压门限以及定时设置在内的所有器件配置信息均存储在非易失闪存存储器。出现故障时,故障标志和通道电压可自动存储到非易失闪存存储器,以便在发生故障后回读故障信息。   内部精度为1%的10位ADC用于测量每路输入,并将结果与过压门限、欠压门限以及配置为欠压或过压的预报警门限进行比较。当检测电压超出设
[模拟电子]
MAX16070/MAX16071闪存可<font color='red'>配置</font>系统监测器
PIC单片机 设定配置字信息
;******************************************************************* ; SAMPLE.ASM ; 8x8 Software Multiplier for 16Cxxx Family ;******************************************************************* ; ; The 16 bit result is stored in 2 bytes ; ; Before calling the subroutine mpy , the multiplier shoul
[单片机]
红魔游戏手机6R发布:传统造型保留触控肩键 旗舰配置2699元
5月27日下午消息,红魔线上举办新品发布会,发布红魔游戏手机6R(下文简称红魔6R),官方称该机拥有传统手机的外观和游戏手机的内核,在保留肩键的旗舰配置基础上,机身厚度为7.8mm。红魔游戏手机6R售价2699元起,将于6月1日起售。   本次发布的红魔6R并没有继承红魔游戏手机6系列的外观,反正更像是一部传统主流手机,新机采用“西装狂魔”的ID设计语言,拥有金属中框、背面拥有凯夫拉与金属亮面的拼接,摄像头采用矩形模组设计在手机的左上角。   当然,手机上的棱角元素也彰显着其游戏手机的身份。轻薄是这次红魔6R的主打卖点,该机机身厚度为7.8mm,重量为186g,拥有幻影黑、流光银、星耀白三种配色。   红魔6R
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved