GD32W51x User Manual
555
Figure 17-59. Input capture logic
CI0
Synchronizer
D
Prescaler
Capture
Register
(
CH0VAL
)
Clock
Prescaler
Counter
TIMER_CK
Q
Filter
D
Q
D
Q
Edge Detector
ITS
CH0MS
CH0IF
CH0IE
CH0_CC_I
TIMERx_CC_I NT
Capture INT From Other Channal
CH0CAPPSC
Edge selector
&inverter
Based on
CH0P&CH0NP
CI0FE0
Rising/Falling
ITI0
ITI3
ITI1
ITI2
CI0FED
Rising&Falling
IS0
CI0FED
Channels’ input signals (CIx) is the TIMERx_CHx signal. First, the channel input signal (CIx)
is synchronized to TIMER_CK domain, and then sampled by a digital filter to generate a
filtered input signal. Then through the edge detector, the rising and falling edge are detected.
You can select one of them by CHxP. One more selector is for the other channel and trig,
controlled by CHxMS. The IC_prescaler make several the input event generate one effective
capture event. On the capture event, CHxVAL will restore the value of Counter.
So the process can be divided to several steps as below:
Step1
: Filter configuration. (CHxCAPFLT in TIMERx_CHCTL0)
Based on the input signal and requested signal quality, configure compatible
CHxCAPFLT.
Step2
: Edge selection. (CHxP/CHxNP in TIMERx_CHCTL2)
Rising or falling edge, choose one by CHxP/CHxNP.
Step3
: Capture source selection. (CHxMS in TIMERx_CHCTL0)
As soon as you select one input capture source by CHxMS, you have set the channel
to input mode ( CHxMS!=0x0) and TIMERx_CHxCV cannot be written any more.
Step4
: Interrupt enable. (CHxIE and CHxDEN in TIMERx_DMAINTEN)
Enable the related interrupt enable; you can got the interrupt and DMA request.
Step5
: Capture enables. (CHxEN in TIMERx_CHCTL2)
Result
:
when you wanted input signal is got, TIMERx_CHxCV will be set by counter’s value.
And CHxIF is asserted. If the CHxIF is high, the CHxOF will be asserted also. The interrupt
and DMA request will be asserted based on the configuration of CHxIE and CHxDEN in