你好,我当前用CC2640F128做一个遥控器,采用充电电池供电。我的芯片除了会对电池电压采集之外,并没有对电池做电源管理电路部分。现在出现这样一种情况,插着电池,对其充电的时候,充完电会出现不工作,重新插一下充电,又可以开始工作了。我尝试把电池去了,用一个外界的小电源,直接接到电池连接口,通上电的是时候,大部分场景下都是可以正常工作的,但是偶然性也会出现不工作的情况。且遥控器正常长期供电的情况下,并没有出现死机现象。请问这种死机可能原因有哪些?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
且遥控器正常长期供电的情况下,并没有出现死机现象
您好,是使用电池供电才会出现死机现象吗?
您好,
这种情况可能是由于电池供电时的电压不稳定或达不到设备要求的电压水平导致的。
而长期供电没有出现死机现象可能是因为使用外部电源时电压更稳定,能够满足设备的要求。
解决此问题的一些方法包括:
1.检查电池:确保电池质量良好,有时老化的电池可能无法提供稳定的电压。
2.优化电池管理:确保电源管理电路能够稳定管理电池电压。
3.添加稳压电路:考虑在电路中添加稳压电路或稳压器、以确保设备在电池电压波动时仍能正常工作。
后面我这边又试了,放在不同板子上依然会有死机现象。好像和软件有关。而且我在开机启动的时候点亮了一个LED灯后,效果会好很多。但是依然会有上电死机现象,表现的形式是有时候LED点亮后死机,有时候点不亮。
主程序代码大概如下:
int main()
{
#if defined( USE_FPGA )
HWREG(PRCM_BASE + PRCM_O_PDCTL0) &= ~PRCM_PDCTL0_RFC_ON;
HWREG(PRCM_BASE + PRCM_O_PDCTL1) &= ~PRCM_PDCTL1_RFC_ON;
#endif // USE_FPGA
/* Register Application callback to trap asserts raised in the Stack */
RegisterAssertCback(AssertHandler);
PIN_init(BoardGpioInitTable);
HwGPIOInit();
HwADCInit();
HwGPIOSet(OY_LED,1);
HwGPIOSet(OY_LED,1);
HwGPIOSet(OY_LED,1);
HwGPIOSet(OY_LED,1);
#if defined( USE_FPGA )
// set RFC mode to support BLE
// Note: This must be done before the RF Core is released from reset!
SET_RFC_BLE_MODE(RFC_MODE_BLE);
#endif // USE_FPGA
// Enable iCache prefetching
VIMSConfigure(VIMS_BASE, TRUE, TRUE);
// Enable cache
VIMSModeSet(VIMS_BASE, VIMS_MODE_ENABLED);
#if !defined( POWER_SAVING ) || defined( USE_FPGA )
/* Set constraints for Standby, powerdown and idle mode */
// PowerCC26XX_SB_DISALLOW may be redundant
Power_setConstraint(PowerCC26XX_SB_DISALLOW);
Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
#endif // POWER_SAVING | USE_FPGA
/* Initialize ICall module */
ICall_init();
/* Start tasks of external images - Priority 5 */
ICall_createRemoteTasks();
/* Kick off profile - Priority 3 */
GAPCentralRole_createTask();
TaskUART_createTask();
/* Kick off application - Priority 1 */
SimpleBLECentral_createTask();
/* enable interrupts and start SYS/BIOS */
BIOS_start();
return 0;
}
不知道哪里是否可以优化的?
HwGPIOSet(OY_LED,1);
HwGPIOSet(OY_LED,1);
HwGPIOSet(OY_LED,1);
HwGPIOSet(OY_LED,1);
您在这里重复设置的原由是什么?
根据您上述提供的主程序代码片段,看不出是哪里导致的问题。
可以给您一下几点建议: