TI中文支持网
TI专业的中文技术问题咨询交流网站

#cc2640r2f 脉冲宽度测量

你好,我现在需要测量 一个脉冲的宽度;

初步的构想(上升沿检测(检测到上升沿就切换到下降沿中断)->打开定时器 ->下降沿中断(打开上升沿中断)->读取定时器值)

但是这个方法cc2640r2f可能会进入睡眠,怕检测不到;

请问我这种方法可行吗,或者还有其他方法捕捉脉宽吗,定时器有能力直接捕捉吗?

Viki Shi:

“但是这个方法cc2640r2f可能会进入睡眠,怕检测不到;”监测的时候让芯片不要进入休眠,低功耗状态下很多功能使用受限

yekun kun:

回复 Viki Shi:

请问还有其他方案吗,定时器可以直接测吗?就像stm32 一样

Viki Shi:

回复 yekun kun:

你使用的是什么定时器,以及你的休眠等级是什么?

yekun kun:

回复 Viki Shi:

cc2640r2f 定时器如何清空计数,我这边用这个:Types_FreqHzfreq;void Time_Init(void) {GPTimerCC26XX_Params params;GPTimerCC26XX_Params_init(&params);params.width= GPT_CONFIG_32BIT;params.mode= GPT_MODE_ONESHOT;params.direction= GPTimerCC26XX_DIRECTION_UP;params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;hTimer = GPTimerCC26XX_open(CC2640R2_LAUNCHXL_GPTIMER0A, &params);BIOS_getCpuFreq(&freq);GPTimerCC26XX_Value loadVal = freq.lo- 1; //47999GPTimerCC26XX_setLoadValue(hTimer, loadVal);GPTimerCC26XX_registerInterrupt(hTimer, timerCallback, GPT_INT_TIMEOUT);}void Time_Start(void){GPTimerCC26XX_start(hTimer);time_counter=0;}GPTimerCC26XX_Value Time_Stop(void){GPTimerCC26XX_Valueval;val = GPTimerCC26XX_getValue(hTimer);return val;}
但是没法计数器没法清0

Viki Shi:

回复 yekun kun:

目前官方提供的driver不好实现清零GPTimer,需要自己通过代码实现,建议参考这边:e2e.ti.com/…/722625

Viki Shi:

回复 Viki Shi:

但是注意,使用GPTimer无法进入休眠:
After GPTimerCC26XX_start(): The device will only go to Idle power mode since the high-frequency clock is needed for timer operation.

赞(0)
未经允许不得转载:TI中文支持网 » #cc2640r2f 脉冲宽度测量
分享到: 更多 (0)