打印
[开发工具]

ADC 触发源介绍

[复制链接]
3992|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1. 引言
STM32 MCU 中, ADC 有多种启动触发方式,本文对各种触发源的原理进行介绍,方便大
家以后如何选择合适的触发源。
2. ADC 的架构与触发源
STM32G474 为例, ADC 模块的架构框图如下,基于逐次逼近原理(SAR)完成模拟量到数
字量的转换。前端通过多通道选择开关
(input selection)来对转换通道进行切换,从而实现对多个
输入通道的信号进行采样。
ADC 模块的信道可以工作在规则模式或是注入模式下,对应的触发源分别为规则触发源与注
入触发源。所有规则通道共享一个
ADC 结果寄存器,一个通道转换完成后需要及时读取转换结
果,否则转换结果可能会被覆盖,具体取决于
overrun 的相关设置。
  

使用特权

评论回复
沙发
可怜的小弗朗士|  楼主 | 2022-4-19 10:00 | 只看该作者
2.1. 各类触发源工作方式
ADC 的触发源整体上可以分为两类:软件触发与硬件触发。如下面两个表所示,
EXTEN[1 :0]JEXTEN[1 :0]分别用于设定规则信道和注入信道的触发方式,当其值为 0 时,触发
方式为软件触发,否则为硬件触发。
  



如果选择软件触发,那么当 ADSTART 或 JADSTART 被置位时, ADC 会立即启动转换。如
果选择硬件触发,那么当 ADSTART 或 JADSTART 被置位后,要等待指定的外部事件发生时,
ADC 才会启动转换。
对于硬件触发即外部事件触发来说,有多达 32 种外部事件可以选择, 这些触发源大致可以分
为以下四类, 具体可以参考 RM 中关于 adc_ext_trgx 和 adc_jext_trgx 的描述。
• 定时器的比较/捕获事件
• 定时器的触发输出 TRGO/TRGO2
• 高精度定时器的 ADC 触发
• 外部输入管脚
一个 ADC 单元可以选择多个硬件触发源,多个硬件触发源之间为“OR”的关系,即任何一
个被选定的外部事件发生都可以触发 ADC 启动转换。
下面对几类触发源的工作方式进行介绍。


使用特权

评论回复
板凳
可怜的小弗朗士|  楼主 | 2022-4-19 11:00 | 只看该作者
2.1.1. 定时器的比较/捕获事件
选用定时器的比较/捕获事件来触发 ADC 时,比如 TIM1_CC1,首先需要说明是虽从文档的描
述来看比较事件与捕获事件都可以用来触发
ADC,但是实际中捕获事件是不能用来触发 ADC 的,
只能使用比较事件,且需要结合触发源的上升沿与下降沿
(见上表中的说明)的设置来设置
TIM_CC1 的电平在比较事件点动作方式。比如设置通道电平在比较事件点由低电平变为高电平,
即上升沿,那么在
ADC 触发源的沿选择上也需要选择上升沿,这样才能保证在正确的位置触发
ADC 启动转换。
2.1.2. 定时器的触发输出 TRGO/TRGO2
TRGO 或是 TRGO2 来自于定时器的触发输出,可以选择的触发方式也比较多,如下 TRGO2
的选择项:



定时器的 Reset 事件、 Enable 事件、 Update 事件以及和 Compare 相关的事件都可以用来做
TRGO2。这里以 TRGO2 为例对相关的事件进行简单说明。
• Reset/Enable/Update :定时器 Reset/Enable/Update 事件作为 TRGO2 输出,并触发
ADC 转换,选择这几个事件时,可以忽略 ADC 触发源的沿方式的选择
Compare pulse:通道的捕获事件或是比较事件作为 TRGO2 输出,触发 ADC 转换,在
up-down counting(Center-aligned mode)模式下,可以通过设定 CMS 位的值来确定比较事
件是发生在向上计数阶段还是向下计数阶段,或是向上/向下都产生,此种方式下可以忽略
ADC 触发源的沿方式的选择。
Compare - tim_ocxrefc :定时器通道输出信号作为 TRGO2 输出,触发 ADC 转换,此种
方式下,需要结合信道输出波形参考的沿与 ADC 触发源的沿方式来确定最终的 ADC 触发
点。
Compare Pulse - tim_ocxrefc:定时器通道输出波形参考指定的沿作为 TRGO2 输出,触
发 ADC 转化,此种方式下可以忽略 ADC 触发源的沿方式的选择。


使用特权

评论回复
地板
tail066| | 2022-4-19 11:06 | 只看该作者
有没有应用的例子,可以结合理解呢

使用特权

评论回复
5
可怜的小弗朗士|  楼主 | 2022-4-19 12:00 | 只看该作者
2.1.3. 高精度定时器的 ADC 触发
在高精度定时器中,包含了 10 ADC 触发输出, ADC Trigger 1 ~10,每个触发输出可以有
多达
32 个触发事件可以选择。对于 ADC Trigger 1~4,可以同时选择多个触发事件(最多 32),多
个触发事件之间为“
OR”的关系,其中任意一个事件发生,都将产生 ADC 触发输出;对于 ADC
Trigger 5~10
,则只能选择其 32 个触发事件中的一个来产生触发输出。
另外,可以对高精度定时器中的
ADC 触发输出进行分频。高精度定时器的频率可以上 G,但是很
多情况下
ADC 的采样速率并不需要那么高,通过对 ADC 触发输出进行分频可以降低 ADC 的采样
速率,实现多个定时器周期才触发一次
ADC 采样。
选择高精度定时器的 ADC 触发方式时,可以忽略 ADC 触发源的沿方式的选择。




使用特权

评论回复
6
可怜的小弗朗士|  楼主 | 2022-4-19 14:00 | 只看该作者
3. 小结
这里对 ADC 的架构进行了简单的介绍,重点说明了 ADC 的各种触发源和工作原理以及
在实际选择中需要注意的事项。
  

使用特权

评论回复
7
Pulitzer| | 2022-10-7 07:29 | 只看该作者

事实上很多做项目的工程师本身自己也会在用

使用特权

评论回复
8
Uriah| | 2022-10-7 14:30 | 只看该作者

超过变量128后必须使用compact模式编译

使用特权

评论回复
9
Bblythe| | 2022-10-7 17:29 | 只看该作者

这是个再正常不过的coding习惯

使用特权

评论回复
10
Pulitzer| | 2023-6-1 07:29 | 只看该作者

根据色彩的变化记录每一行的颜色跳变点,由此识别出车牌区域。

使用特权

评论回复
11
周半梅| | 2023-6-1 08:32 | 只看该作者

使用Optional简化if判空

使用特权

评论回复
12
童雨竹| | 2023-6-1 09:25 | 只看该作者

因为小灯中不会有电流通过

使用特权

评论回复
13
Wordsworth| | 2023-6-1 10:28 | 只看该作者

控制单元:从内存中提取指令并解码执行

使用特权

评论回复
14
Clyde011| | 2023-6-1 11:31 | 只看该作者

结构化模块化的程序设计的思想,使最基本的要求

使用特权

评论回复
15
万图| | 2023-6-1 13:27 | 只看该作者

我甚至认为它很好地 辅助了软件设计。

使用特权

评论回复
16
Uriah| | 2023-6-1 14:30 | 只看该作者

CPU借助于APB总线访问相关寄存器达到对I2C1工作模块的控制

使用特权

评论回复
17
帛灿灿| | 2023-6-1 16:26 | 只看该作者

用 Git 来做自己的文档版本管理工具

使用特权

评论回复
18
Bblythe| | 2023-6-1 17:29 | 只看该作者

做多层板可将做好的两块双面板用特制的粘合剂“压合”起来

使用特权

评论回复
19
周半梅| | 2023-6-1 19:25 | 只看该作者

If-Else 是一把锤子,一切都是钉子

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

742

帖子

0

粉丝