这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 【CH582M】CH582M的定时器(6)捕捉功能

共1条 1/1 1 跳转至

【CH582M】CH582M的定时器(6)捕捉功能

专家
2026-09-05 14:33:54     打赏

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

image.png

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

下降沿至下降沿、上升沿至上升沿触发模式下,可以捕捉一个输入变化周期。数据寄存器 R32_TMRx_FIFO 的有效数据的最高位(位 25)为 0 表示正常采样到一个周期;为 1 则表示输入变化周期超过超时值(R32_TMRx_CNT_END指定的),需加上后一组数据累计为单个输入变化周期。

具体说明如下图所示:

image.png

如上图所示,每个时钟周期内采样一次: 

当 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 设置的数据缓冲区中。 





关键词: CH582M     TMR     捕捉    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]