CH582M的所有定时器都具有捕捉功能。TMR1和TMR2还支持DMA数据存储方式。捕捉功能支持三种触发方式:

在边沿方式(01)中有两种触发方式:上升沿触发、下降沿触发。这两个边沿是都可以触发的,配合其他定时器,可以用来测量高电平或者低电平的持续时间。数据寄存器 R32_TMRx_FIFO 中的有效数据的最高位(位 25)为 1时, 表示捕捉到的是高电平;为 0 表示捕捉到的是低电平。如果连续多组数据的位 25 都是 1(或 0),说明该高电平(或低电平)的宽度超过超时值(R32_TMRx_CNT_END指定的),需多组合并累计。
下降沿至下降沿、上升沿至上升沿触发模式下,可以捕捉一个输入变化周期。数据寄存器 R32_TMRx_FIFO 的有效数据的最高位(位 25)为 0 表示正常采样到一个周期;为 1 则表示输入变化周期超过超时值(R32_TMRx_CNT_END指定的),需加上后一组数据累计为单个输入变化周期。
具体说明如下图所示:

如上图所示,每个时钟周期内采样一次:
当 RB_TMR_CATCH_EDGE=01b 时,设置为边沿触发采样,采样到的时间宽度为 3、3、10;
当 RB_TMR_CATCH_EDGE=10b 时,设置为下降沿至下降沿采样,采样到的时间宽度为 13;
当 RB_TMR_CATCH_EDGE=11b 时,设置为上升沿至上升沿采样,采样到的时间宽度为 6。
捕捉模式操作步骤:
(1)、将 RB_TMR_ALL_CLEAR 置位,清空和清零 R32_TMRx_FIFO 和中断标志等;
(2)、将捕捉对应的 I/O 引脚方向设置为输入;
(3)、在 R32_TMRx_CNT_END 中设定合理的捕捉超时时间,可用于在输入信号长时间无变化时产生超时中断,也可以在输入信号无变化超时后,产生超时数据(数据的位 25 为 1,低 25 位可向后累计);
(4)、配置 R8_TMRx_CTRL_MOD,置位 RB_TMR_MODE_IN 对应捕捉模式,通过 RB_TMR_CAP_EDGE 选择捕捉的边沿方式,将 R8_TMRx_CTRL_MOD 的 RB_TMR_COUNT_EN 置 1,使能计数;
(5)、可选步骤,如果需要启用中断则设置相应的中断使能寄存器位;
(6)、如果需要采用 DMA 方式保存捕捉的数据,需要设置寄存器 R16_TMRx_DMA_BEG 为存储捕捉数据缓冲区的首地址,设置寄存器 R16_TMRx_DMA_END 为存储捕捉数据缓冲区的结束地址(不含),并设置R8_TMRx_CTRL_DMA 的 RB_TMR_DMA_ENABLE 为 1,使能 DMA 功能;
(7)、将 R8_TMRx_CTRL_MOD 的 RB_TMR_ALL_CLEAR 清零,启动捕捉功能;
(8)、每次捕捉到数据,RB_TMR_IF_DATA_ACT 都会置 1,如果开启中断则会触发硬件中断,捕捉到的数据默认存放在 R32_TMRx_FIFO 中,如果开启 DMA,则捕捉到的数据会自动存放在 DMA 设置的数据缓冲区中。
我要赚赏金
