微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 急切求助:利用CC2541的Timer1测量外部时间遇到的问题

急切求助:利用CC2541的Timer1测量外部时间遇到的问题

时间:10-02 整理:3721RD 点击:

尊敬的TI工程师:

您好!
我遇到这样一个问题:

我用CC2541的Timer1来通过IO口测量一个外部电路电平从3.3V降到0V的时间,并且运行了蓝牙协议栈。利用Timer1的Capture模式 。

选了定时器时钟为32分频,所以1个clk为1us,因为Timer1最大计到0xFFFF,所以最大量程为65535us,即65ms。

当这个外部电路放电时间在大约1ms量级及以下时,测量都是十分准确,并且稳定的。并且测量值不随我程序中在哪里启动测量而变化。

但是,当外部电路时间放电时间在大约10ms量级及以上时(<65ms),测出来波动十分大,例如从0x1100波动到0x2E00,波动十分厉害。并且,如果我在程序中不同的地方启动测量,测量出的结果差异会非常大。

我的设备是用电池工作的,会进入休眠状态。这个和休眠有关系吗?是什么问题,应该如何解决呢?

我觉得这个是和协议栈有关,因为我不带协议栈裸跑测量是稳定的。

十分期盼回复,感激不尽!

Frank

Feng,

在初始化函数里面,加入这个试试看:HCI_EXT_MapPmIoPortCmd(HCI_EXT_DISABLE_CLK_divIDE_ON_HALT);

Yan,

     非常感谢回复!

     你是想说HCI_EXT_ClkDivOnHaltCmd(HCI_EXT_DISABLE_CLK_divIDE_ON_HALT);吧

     我试了,测量值依然不准。

     1、其实我不太理解这个函数,想请教一下。它禁止CPU降频,CPU降频工作,也还是处于Active模式吧,对吗?另外,CPU降频降到多少MHz啊,我在CC2541的明细手册里Power Management and Clocks一章中并没有看到有提到降频啊。

     2、我定位了我问题的原因,只要禁止休眠测量值就正确且稳定了。

     因为当外部时间达到10ms时,启动定时器计数一段时间后,OSAL让MCU进入了休眠PM2模式,定时器被关闭了。造成测量不准。

     我现在在每次测量时,先关闭休眠,测量完再打开就OK了。不过这样就是测量时不能休眠,比较费电,我电池能用的时间缩短了很多。

     有什么办法,既可以让MCU休眠,又可以让定时器在休眠时继续计数吗?

     或者有什么其他建议?

     非常感谢!

Frank

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top