STM32
直播中

靓仔峰

9年用户 1120经验值
擅长:可编程逻辑
私信 关注
[问答]

有什么方法可以实现stm32的计数功能呢

STM32的外部时钟源模式2和外部时钟源模式1的区别是什么呢?

有什么方法可以实现stm32的计数功能呢?

回帖(1)

肖青

2021-11-23 11:51:47
  stm32的外部时钟源模式2和外部时钟源模式1都可以用来实现计数功能,他们的区别是什么呢?
  以上2种模式对应不同的管脚输入:
  外部时钟源模式2 《--》TIMx_ETR
  外部时钟源模式1 《--》TIMx_CHx (只能在CH1和CH2实现该功能)
  从功能框图可以看到,ETR模式下多了一个分频器ETPS,搜索该分频器的寄存器,有如下解释:外部触发信号ETRP的频率必须最多是TIMxCLK频率的1/4。当输入较快的外部时钟时,可以使用预分频降低ETRP的频率。
  每个定时器只能对一路信号计数,但每个定时器可同时捕捉4路信号。
  如果需要采样多路信号的脉宽和频率,采用捕获模式。
  ETR的滤波器是通过配置TIMx_SMCR的ETF[3:0]位选择,而这4位可以选择的滤波方式如下:
  0000: 无滤波,以f DTS采样
  0001: 采样频率为f CK_INT, N=2.
  0010: 采样频率为f CK_INT, N=4.
  0011: 采样频率为f CK_INT, N=8.
  0100: 采样频率为f DTS/2, N=6.
  0101: 采样频率为f DTS/2, N=8.
  。..。..。
  上面的f DTS由TIMx_CR1中的CKD配置:
  00: t DTS = t CK_INT
  01: tDTS = 2 × t CK_INT
  10: tDTS = 4 × t CK_INT
  11: 保留
  假定选ETF=0101,即“采样频率为f DTS/2, N=8”;选CKD=01,即“tDTS = 2 × t CK_INT”;并假定f CK_INT=72MHz。
  这时可以算出,采样频率为72MHz/2/2=18MHz,因为N=8,即在滤波器上可以滤除掉输入端上小于444.4ns的脉冲。
  根据这一原理,我的理解是把滤波器放在分频的后面是为了保证通过的信号频率不超过某个限定,而不是为了滤除窄脉冲。但如果ETR上出现较高频率的窄脉冲,例如当分频因子为4时,如果ETR上出现了超过9MHz的一组窄脉冲,它就会在通过分频和滤波器后被滤除掉。,“滤波放在后面可以更多地保证得到干净的波形”,可以按照上面的分析理解。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分