蓝牙技术
直播中

无人岛

9年用户 878经验值
擅长:嵌入式技术 制造/封装 控制/MCU
私信 关注
[问答]

CYW89820在进EPDS模式前需要什么操作吗?

CYW89820,软件中使用了P9作为ADC,1ms的timer,蓝牙,P32,P37打印日志。Wiced_Sleep_Cfg_ltst配置如下: Wiced_Sleep_Cfg_ltst配置如下wiced_sleep_config_t Wiced_Sleep_Cfg_ltst = {        WICED_SLEEP_MODE_NO_TRANSPORT,        WICED_SLEEP_WAKE_ACTIVE_HIGH,        WICED_SLEEP_WAKE_ACTIVE_LOW,        WICED_SLEEP_WAKE_SOURCE_KEYSCAN,        WICED_PLATFORM_GPIO_14,        wiced_sleep_allow_check_callback,        wiced_sleep_post_sleep_callback,}Wiced_Sleep_allow_check_callback 函数内容如下: Wiced_Sleep_Cfg_ltst 配置如下uint32_t wiced_sleep_allow_check_callback(wiced_sleep_poll_type_t type){    uint32_t ret = WICED_SLEEP_NOT_ALLOWED;    switch(type)    {        case WICED_SLEEP_POLL_SLEEP_PERMISSION:            if(EPDS == low_power_current_state)            {                /* This allows the device to enter ePDS */                ret = WICED_SLEEP_ALLOWED_WITHOUT_SHUTDOWN;                WICED_BT_TRACE("Sleep in WICED_SLEEP_POLL_SLEEP_PERMISSION ePDS modern");            }            break;        case WICED_SLEEP_POLL_TIME_TO_SLEEP:            if(EPDS == low_power_current_state)            {                ret = 10000000;                WICED_BT_TRACE("Sleep in WICED_SLEEP_POLL_TIME_TO_SLEEP ePDS modern");            }            break;    }    return ret;    }蓝牙连接上后停止广播,在hello_sensor_gatts_connection_down函数中 stop 1ms的Timer,设置low_power_current_state = EPDS。问题在上述的情况下,查看wiced_sleep_allow_check_callback函数中打印的log,发现唤醒时间是不到1s,而不是设置的10s。在进EPDS模式前除上述的操作外还需要什么操作吗?disconnect后不是能马上设置low_power_current_state = EPDS吗,是需要等待一段时间才设置吗,如果要等待需要多久呢?

回帖(1)

硕达科讯

2024-9-26 17:00:26
CYW89820是一款集成了Wi-Fi和蓝牙功能的芯片,它支持多种低功耗模式,包括EPDS(Enhanced Power Down State)。在进入EPDS模式之前,需要进行一些准备工作,以确保系统能够正常进入和退出EPDS模式。

1. 初始化和配置ADC:在进入EPDS模式之前,需要确保ADC(P9)已经正确初始化和配置。这包括设置ADC的分辨率、采样速率、输入通道等参数。

2. 初始化和配置定时器:使用1ms的定时器(Timer)来管理低功耗模式的唤醒时间。需要确保定时器已经正确初始化和配置,以便在指定的时间间隔内唤醒系统。

3. 初始化和配置蓝牙:在进入EPDS模式之前,需要确保蓝牙已经正确初始化和配置。这包括设置蓝牙的通信参数、连接参数等。

4. 初始化和配置打印日志:使用P32和P37作为打印日志的接口,需要确保这些接口已经正确初始化和配置。

5. 配置Wiced_Sleep_Cfg_ltst:根据您提供的配置信息,Wiced_Sleep_Cfg_ltst的配置如下:

```c
wiced_sleep_config_t Wiced_Sleep_Cfg_ltst = {
    WICED_SLEEP_MODE_NO_TRANSPORT,
    WICED_SLEEP_WAKE_ACTIVE_HIGH,
    WICED_SLEEP_WAKE_ACTIVE_LOW,
    WICED_SLEEP_WAKE_SOURCE_KEYSCAN,
};
```

这个配置表示在EPDS模式下,系统将不使用任何传输协议,唤醒信号的电平为高电平,唤醒源为按键扫描。

6. 进入EPDS模式:在完成上述准备工作后,可以通过调用`wiced_sleep_enter()`函数进入EPDS模式。在EPDS模式下,系统将关闭大部分模块,以降低功耗。

7. 退出EPDS模式:当系统需要从EPDS模式唤醒时,可以通过配置的唤醒源(如按键扫描)来唤醒系统。唤醒后,需要重新初始化和配置ADC、定时器、蓝牙等模块,以确保系统能够正常工作。

总之,在进入EPDS模式之前,需要确保ADC、定时器、蓝牙、打印日志等模块已经正确初始化和配置,同时配置好Wiced_Sleep_Cfg_ltst参数。在退出EPDS模式后,需要重新初始化和配置这些模块。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分