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.

CC2640: 上电出现死机问题

Part Number: CC2640

你好,我当前用CC2640F128做一个遥控器,采用充电电池供电。我的芯片除了会对电池电压采集之外,并没有对电池做电源管理电路部分。现在出现这样一种情况,插着电池,对其充电的时候,充完电会出现不工作,重新插一下充电,又可以开始工作了。我尝试把电池去了,用一个外界的小电源,直接接到电池连接口,通上电的是时候,大部分场景下都是可以正常工作的,但是偶然性也会出现不工作的情况。且遥控器正常长期供电的情况下,并没有出现死机现象。请问这种死机可能原因有哪些?

  • 且遥控器正常长期供电的情况下,并没有出现死机现象

    您好,是使用电池供电才会出现死机现象吗?

  • 长期供电不会出现死机,使用电池供电,电池一直连接着的,充电再断开会出现死机。

  • 您好,

    这种情况可能是由于电池供电时的电压不稳定或达不到设备要求的电压水平导致的。

    而长期供电没有出现死机现象可能是因为使用外部电源时电压更稳定,能够满足设备的要求。

    解决此问题的一些方法包括:

    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);

    您在这里重复设置的原由是什么?

  • 单次设置和重复设置一样。重复设置试想加一点延迟,看下是否有用。之所以加GPIO设置点亮,是想看下开机在哪个位置死机的。但是似乎有时候在这之前,有时候在这之后。

  • 根据您上述提供的主程序代码片段,看不出是哪里导致的问题。

    可以给您一下几点建议:

    1. 如果只是想加延迟,建议您使用延时函数,考虑删除其中冗余的代码。
    2. 初始化操作优化:是否所有的硬件的初始化都是必需的;另外检查系统启动时的软件初始化过程,可能存在某些初始化状态未设置正确,导致系统不稳定。
    3. 内存问题:删除不必要的功能,减少资源占用