TA的每日心情 | 开心 2022-1-21 15:21 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在STM32芯片的ADC应用中,我们往往会利用定时器来触发ADC的启动转换,而能够触发ADC转换的定时器事件往往有多个,有时我们可能很关注这些定时器事件在触发ADC时有哪些时序上的差别。下面以STM32G4芯片为例,来大致聊聊该话题。
6 X4 V8 G0 R. y0 X2 D : C/ ?& P e, s2 R$ d: ~
这里选择TIM1来触发ADC。我们从手册或CubeMx配置界面不难看到可用来触发ADC的定时器事件可以是定时器TRGO信号和通道CC事件/信号,而TRGO可能来自定时器的使能动作、定时器的更新事件、通道输出比较事件、通道比较输出参考信号以及编码时钟。- s6 J) x6 ?8 s2 _, x
) k k7 J; k' J( [6 ]
这里先重点就Update事件、通道OCx信号和OCxREF信号作为TRGO来触发ADC,看看相应的触发时间点在哪里。2 R. o" a, v/ T6 {
另外,作为ADC的外部触发事件还有个触发极性选择的配置。这点我们可用从CubeMx配置界面直观看到,如下图所示,可以选择上沿触发、下沿触发或双沿触发。- ?. i0 y# p4 D \4 @3 B: s7 P; H0 P
2 H" u$ }7 s5 h% a' A4 E0 ? 我这里将TIM1配置为向上计数模式,基于PWM1模式,极性选择为0的条件下,让CH1输出PWM信号,以便观察不同定时器事件及配置对ADC触发时序的影响。
0 o' ^0 p$ R( q: D1 C5 Q
0 `, Z$ h# Q2 ~" U5 |! U 1、当选择Update Event做为TIM1的TRGO,同时TRGO作为ADC的外部触发事件时,不论ADC的触发极性如何选择,都确定在定时器发生更新事件时触发ADC,即下图红色箭头所指位置。
+ Y- W& G u5 [% y9 i
8 K7 j" a% d1 o! \2 t+ a( P$ c& d 2、当选择OC1做为TIM1的TRGO,同时TRGO作为ADC的外部触发事件时,不论ADC的触发极性如何选择,都确定在定时器发生比较事件时触发ADC,即上图绿色箭头所指位置。
# m/ Z" Q( V- w7 f% q2 b 3、当选择OC1REF做为TIM1的TRGO,同时TRGO作为ADC的外部触发事件时,此时ADC的触发时间点还跟ADC的触发极性选择有关,如果选择上升沿触发,ADC触发则发生在上图中的红色箭头处,反之则发生在绿色箭头处,如果选择双沿触发,则上图中红色箭头、绿色箭头处都会触发ADC转换。6 i$ C8 K3 J& N3 W* r' X( R6 s
上面主要介绍的是ADC触发信号源于定时器的TRGO,如果说ADC的触发信号不是来自TRGO而是来自开篇提到的通道CC事件呢。定时器CC事件包括IC事件【input Capture】和OC事件【output compare】。这里IC事件是不能作为ADC触发源的,那我们看看OC事件作为ADC的触发源的情况,即像下面的配置。
4 b! N, M! R7 Y
' w- g4 }* I1 o. l 经验证测试,这里选择OC1作为ADC触发源时的情形跟前面选择OC1ref作为TRGO去触发ADC的情形是一样的,具体触发点跟ADC配置的触发极性选择有关,即上面的第三种情形。
0 _* {9 M- W0 G% k 看到这里,有人或许会问,既然这两组情形的结果是一样的,为什么配置里面不拿掉一项呢?不过,我们要知道,OCx与OCxref可能一样也可能不一样,具体取决于OC输出时的极性配置。上面我们测得两组情形是一样,刚好是因为OCx与OCxref完全同相,如果调整极性选择,触发时间点就会不一样了,结果就会刚好反过来。毕竟实际应用是千变万化的,说不定哪里就能派上用场。4 L+ s. E4 T8 {* ]/ Y
诚然,STM32系列众多,相应技术手册内容丰富而庞大,细节也多,个别细节可能描述未必很详尽,此时我们实际验证下或许更清晰。 |
|