嗨
我修改SDK 5.0.4 \ DA1458x_SDK \ 5.0.4 \项目\ target_apps \ ble_examples \ prox_reporter项目。
我设置常量静态sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF; .user_default_hnd_conf.adv_scenario = DEF_ADV_FOREVER,
我用在我们的新制作的板,我们使用set_device_to_sleep()函数设置设备扩展睡眠模式,
我们使用ACC传感器来唤醒装置,所述app_acc_wakeup_cb()和app_accInt_snifftocwake_cb()是回调,它似乎正常。
但有时在app_accInt_snifftocwake_cb()函数app_timer_set(APP_ALG_PERIOD_TASK_TIMER,TASK_APP,100);异常时,APP_ALG_PERIOD_TASK_TIMER不工作,很长一段时间(大约五分钟)之后,APP_ALG_PERIOD_TASK_TIMER开始工作。
请给我一些建议!
静态常量结构ke_msg_handler app_custs1_process_handlers [] = {{APP_ALG_PERIOD_TASK_TIMER,(ke_msg_func_t)app_alg_period_task_timer_handler},{CUSTS1_CREATE_DB_CFM,(ke_msg_func_t)app_custs1_create_db_cfm_handler},{CUSTS1_DISABLE_IND,(ke_msg_func_t)app_custs1_disable_ind_handler},};静态INT app_alg_period_task_timer_handler(ke_msg_id_t常量MSGID,空隙常量* PARAM,ke_task_id_t const的DEST_ID,ke_task_id_t常量src_id){静态INT I = 0;app_timer_set(APP_ALG_PERIOD_TASK_TIMER,DEST_ID,100);I ++;arch_printf( “I =%d \ r \ n” 个,I);test_ble_send_data_function();return(ke_msg_consumed);}空隙set_device_to_sleep(无效){arch_printf( “set_device_to_sleep \ r \ n”);如果(ke_timer_active(APP_ALG_PERIOD_TASK_TIMER,TASK_APP)){ke_timer_clear(APP_ALG_PERIOD_TASK_TIMER,TASK_APP);}如果(ke_state_get(TASK_APP)== APP_CONNECTED){disconnect_no_adv_flag = 1; app_easy_gap_disconnect(save_connection_idx); } app_easy_gap_advertise_stop(); hsppad042a_standby(); hsactd_set_to_sniff(); arch_ble_ext_wakeup_on(); app_accInt_wakeup_enable(); arch_set_extended_sleep(); } static void app_acc_wakeup_cb(void) { disconnect_no_adv_flag = 0; default_advertise_operation(); arch_printf("app_acc_wakeup_cb"); } static void app_accInt_snifftocwake_cb(void) { if (GetBits16(SYS_STAT_REG, PER_IS_DOWN)) { periph_init(); } if (arch_ble_ext_wakeup_get()) { arch_disable_sleep(); arch_ble_force_wakeup(); arch_ble_ext_wakeup_off(); app_easy_wakeup(); } hsactd003a_readsteate_clear_pending(); arch_printf("app_accInt_snifftocwake_cb\r\n"); app_timer_set(APP_ALG_PERIOD_TASK_TIMER, TASK_APP, 100); app_accInt_wakeup_enable(); } void app_accInt_wakeup_enable(void) { app_easy_wakeup_set(app_acc_wakeup_cb); wkupct_register_callback(app_accInt_snifftocwake_cb); // if (!GPIO_GetPinStatus(GPIO_ACCINT_PORT, GPIO_ACCINT_PIN)) { wkupct_enable_irq(WKUPCT_PIN_SELECT(GPIO_ACCINT_PORT, GPIO_ACCINT_PIN), // select pin WKUPCT_PIN_POLARITY(GPIO_ACCINT_PORT, GPIO_ACCINT_PIN, WKUPCT_PIN_POLARITY_HIGH), 1, // 1 event 3); // debouncing time = 0 } }
关键词:
设备:
嗨
不推荐使用App_timer_set () ?我用app_timer_set替换了app_easy_timer函数。
我烧代码到flash(M24M01-RMN6TP),在prox_reporter项目的基础上,不包括OTA,我也不使用spi,
但似乎闪光灯消耗大量的电流。我需要配置SPI针?我该怎么办?
我使用spi_flash_enable(SPI_EN_GPIO_PORT, SPI_EN_GPIO_PIN);和spi_flash_power_down ();在user_app_on_init()函数,
电流消耗似乎更大。
谢谢!
嗨lewuyouc,
能否请你让我知道你想与app_accInt_snifftocwake_cb内部定时器来完成呢?随着app_timer_set()函数,你本身内核定时器。我们建议它创建一个新的计时器,如果需要它激活BLE的app_easy_timer()API的使用。但请说明是在这个函数内计时器的使用。当你替换app_easy_timer的app_timer_set,你仍然面临同样的问题?由于该装置进入延长休眠模式下,如何是当SPI闪存被接通和断开电源的电流消耗?你是正确的,SPI闪存增大电流消耗,所以你必须给力了下去。能否请您从您的定制电路板中删除所有的传感器和测量延长休眠模式下的电流消耗与SPI闪存断电?我想你衡量一个准确的电流表,而不是与SmartSnippets工具箱的使用扩展的休眠电流。
谢谢,PM_Dialog
嗨PM_Dialog
我使用app_accInt_snifftocwake_cb重新启动定时器,定期获取传感器数据。app_easy_timer函数工作正常。
在user_app_on_init I set spi flash is powered off,我们检查扩展睡眠模式的功耗约4uA。我认为
耗电量是正常的。
问:我使用SmartSnippets我的代码刻录到SPI闪存。我组SPI闪存在user_app_on_init断电,所以SPI闪存总是
系统电源关闭。但是引导代码是从spi flash获得的,我知道我设置了spi关机,我的板从扩展睡眠模式醒来,
引导代码可以工作正常吗?
问题:在我设置睡眠模式后,有时启动是不工作的。就像没有程序的新板一样。
嗨lewuyouc,
在DA1458x系列设备中,代码总是从内部System-RAM执行。这意味着,由于您已经用固件刻录了SPI Flash,当设备启动时,固件将被复制并从System-RAM执行。因此,当您关闭user_app_on_init中的闪存时,固件已经被复制到System-RAM中,这就是您能够成功引导的原因。
谢谢,PM_Dialog