TI中文支持网
TI专业的中文技术问题搜集分享网站

cc2541 电池电量显示一直是百分之二十多

在国内国外的TI的论坛查了一下这个问题 大家的解决方法都是

1)      disable PM IO port by:
HCI_EXT_MapPmInOutPortCmd(HCI_EXT_PM_IO_PORT_NONE, HCI_EXT_PM_IO_PORT_PIN7)

2)      Set P0.7 to low

3)      Check battery with battMeasure()

4)      Set P0.7 to high

5)      Enable PM IO port by:
HCI_EXT_MapPmInOutPortCmd(HCI_EXT_PM_IO_PORT_P0, HCI_EXT_PM_IO_PORT_PIN7)

具体可以参考下面的几个链接

http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/30345.aspx

http://e2e.ti.com/support/wireless_connectivity/f/538/t/241961.aspx?pi310978=2

于是我修改了如下代码

if ( events & KFD_BATTERY_CHECK_EVT )
{
// Disable stack to toggle bypass control on TPS62730 (DC/DC converter)

HCI_EXT_MapPmIoPortCmd( HCI_EXT_PM_IO_PORT_NONE, HCI_EXT_PM_IO_PORT_PIN7 );
//Set P0.7 to low
P0 &= 0x7F;
// Restart timer
if ( BATTERY_CHECK_PERIOD )
{
osal_start_timerEx( keyfobapp_TaskID, KFD_BATTERY_CHECK_EVT, BATTERY_CHECK_PERIOD );
}

// perform battery level check
Batt_MeasLevel( );
//Set P0.7 to high
P0 |= 0x80;
// Enable stack to toggle bypass control on TPS62730 (DC/DC converter)
HCI_EXT_MapPmIoPortCmd( HCI_EXT_PM_IO_PORT_P0, HCI_EXT_PM_IO_PORT_PIN7 );

return (events ^ KFD_BATTERY_CHECK_EVT);
}

但是现在的问题是这样的, 不论我注不注释掉KeyFobApp_Init( uint8 task_id ) 中这段代码:

#if defined ( DC_DC_P0_7 )

  // Enable stack to toggle bypass control on TPS62730 (DC/DC converter)

  HCI_EXT_MapPmIoPortCmd( HCI_EXT_PM_IO_PORT_P0, HCI_EXT_PM_IO_PORT_PIN7 );

#endif // defined ( DC_DC_P0_7 )

显示的电量还是固定的百分之二十多。

但是只要注释掉上面这段代码 而其他地方不做任何修改 反而可以正常显示

在原理上理解了为什么会是一直百分之二十多 但是代码又不是这样的

不知道哪里出了问题

wenzhong shen:

这个是针对有TPS62730的稳压电源的电路的,具体是在电池电量测量时,首先旁路稳压芯片,用电池给cc2541供电,这样才能检测电池电压,测量完后禁止旁路稳压电源输出。P0.7是一个旁路控制引脚。

另外那个宏定义是说 如果你宏定义了DC_DC_P0_7,那么就将p.7分配成电源的旁路控制引脚。

spencer chen:

回复 wenzhong shen:

恩 多谢。

我也是这么理解的 可是如果不把这段宏定义注释掉 不论怎么更改程序 就还是显示百分之二十多的电量。

而只要注释掉了 不用改任何地方显示就是正确的

我是在想 为什么按照你的这个思路来修改程序不能正确检测到电池电量呢? 还是说我修改的程序有什么错误吗?

赞(0)
未经允许不得转载:TI中文支持网 » cc2541 电池电量显示一直是百分之二十多
分享到: 更多 (0)