CC2540 唤醒后电流8MA的问题
HI,all
BLE stack version:
1.4.0
project:
simpleBLEPeripheral
preprocessor defined symbols:
INT_HEAP_LEN=3072
HALNODEBUG
OSAL_CBTIMER_NUM_TASKS=1
HAL_AES_DMA=TRUE
HAL_DMA=TRUE
POWER_SAVING
xPLUS_BROADCASTER
HAL_LCD=FALSE
HAL_LED=FALSE
CC2540_MINIDK
问题描述:
由于要使用UART功能,所以我在MCU唤醒CC2540时,调用 osal_pwrmgr_device( PWRMGR_ALWAYS_ON );
UART通讯完毕调用 osal_pwrmgr_device( PWRMGR_BATTERY );
现在的问题是当我调用 osal_pwrmgr_device( PWRMGR_ALWAYS_ON );之后,电流竟然高达8MA,不知为何?
我已经排除了漏电的情况,我拿一片模块,外围什么都不接,电流也是大。
我做过的实验:
我拿keyfob的板子,把keyfob的预编译改成xPOWER_SAVING,跑起来电流也有8MA,请问这样是否正常?
非常感谢大家的帮忙!
我补充一下我的UART接法
RX,TX与一个MCU对接,无流控。
我听说TI是建议打开流控,那如果无流控,功耗能小下来吗?
知道的朋友麻烦帮忙解答一下。万分感谢
hi king,
请打开流控,流控不会影响到功耗。
Dear Yan
收到你的回复太开心了!
由于对方MCU不支持流控,所以在UART通讯时,就用一个GPIO口来唤醒CC2540,通讯完再进入sleep.
现在量测到唤醒CC2540进行UART通讯时,电流有8mA,客户不接受,说太大了,说有人做到2mA。(不清楚是不是说的峰值)
请问,UART通讯时电流能做到2mA吗?
感谢!
这个问题也基本上理清。
UART通讯时,必须得进入activity mode,而activity mode 电流在datasheet上说明是6.7mA,所以我的电流也基本上接近这个值。
主机模式大概是这个功耗,从机模式估计能到4ma,不工作时可以让他PM3休眠节电。
king xiao 你好,
我现在也是遇到这个问题。 把HAL_UART 编译进去后。 耗电7mA 左右。(我把power saving 编译进去了好像也没有用,也是7mA)。 cc2540 是被动接收数据的。 没有给cc240 通过串口发数据的时候, 我想让cc2540 进入省电模式。 然后,当有串口发数据来的时候, 我就要退出省电模式,接收串口数据。
当没有串口数据来的时候 :进入省电模式的代码应该放在哪里? 就调用osal_pwrmgr_device这个函数就行了吗?
当有了串口数据来的时候 : 要怎么退出来? 代码应该怎么写? 要设置中断吗?
这是我的串口接收函数。
void sbpSerialAppCallback(uint8 port, uint8 event)
{
(void)event;
int numBytes=0;
delayMs(30);
uint8 pktBuffer[SBP_UART_RX_BUF_SIZE]={0};
if ((numBytes = Hal_UART_RxBufLen(HAL_UART_PORT_0)) > 0 )
{
(void)HalUARTRead (HAL_UART_PORT_0, pktBuffer, numBytes);
sbpSerialAppWrite(buf,numBytes);
}
}
}
你如果关闭省电,本来就是8mA左右,很正常啊。osal_pwrmgr_device( PWRMGR_ALWAYS_ON )这个函数的功能是让蓝牙一直功作不进入睡眠,所以也是8MA。
你关闭xPOWER_SAVING,电流是8MA是正常的。