
RX140實(shí)驗(yàn)環(huán)節(jié)(1)
RX140實(shí)驗(yàn)環(huán)節(jié)(2)
RX140實(shí)驗(yàn)環(huán)節(jié)(3)
RX140實(shí)驗(yàn)環(huán)節(jié)(4)&(5)-1
RX140實(shí)驗(yàn)環(huán)節(jié)(5)-2
Lab Session 4
在Lab 3的基礎(chǔ)上增加
低功耗 (Auto Judgement) 功能
5.4
增加低功耗 (Auto Judgement) 功能應(yīng)用程序
5.4.1 將培訓(xùn)配套資料Checkpoints文件夾中的工程 "Lab session 4" 中的qe_gen文件的 "qe_touch_sample.c" 拷貝
并覆蓋 "Project Explorer" 的Lab_session_1工程中qe_gen文件的 "qe_touch_sample.c".
5.4.2 應(yīng)用程序代碼說(shuō)明
使用init_peripheral_function初始化需要使用的外設(shè)
使用R_CTSU_Open() 初始化config01 (MEC電極)
使用RM_TOUCH_Open() 初始化config02 (12個(gè)自容式按鍵)
/* Initialize peripheral functions */init_peripheral_function();/* Open Touch middleware */err = R_CTSU_Open (g_qe_ctsu_instance_config01.p_ctrl, g_qe_ctsu_instance_config01.p_cfg);ctsu_ctrl = (ctsu_instance_ctrl_t *)g_qe_ctsu_instance_config01.p_ctrl;err = RM_TOUCH_Open (g_qe_touch_instance_config02.p_ctrl, g_qe_touch_instance_config02.p_cfg);
5.4.3 應(yīng)用程序代碼說(shuō)明
以下代碼完成config01 (MEC電極) 和 config02 (12個(gè)自容式按鍵電極) 的初始化偏置電流調(diào)整。
/* Initial Offset Tuning */{? ?(void)R_LPT_SetCMT(LPT_CH1, (uint32_t)WAKEUP_LPT_PERIOD_NORMAL);? ?/* Method1 offset tuning */? ?do? ?{? ? ? ?err = R_CTSU_ScanStart (g_qe_ctsu_instance_config01.p_ctrl);? ? ? ?if (FSP_SUCCESS != err)? ? ? ?{? ? ? ? ? ?while (true) {}? ? ? ?}? ? ? ?(void)R_LPT_Control(LPT_CMD_START);? ? ? ?while (0 == g_qe_touch_flag) {}? ? ? ?g_qe_touch_flag = 0;? ? ? ?err = R_CTSU_OffsetTuning (g_qe_ctsu_instance_config01.p_ctrl);? ?} while(err != FSP_SUCCESS);? ?/* Method2 offset tuning */? ?do? ?{? ? ? ?err = RM_TOUCH_ScanStart (g_qe_touch_instance_config02.p_ctrl);? ? ? if (FSP_SUCCESS != err)? ? ? {? ? ? ? ? while (true) {}? ? ? }? ? ? (void)R_LPT_Control(LPT_CMD_START);? ? ? while (0 == g_qe_touch_flag) {}? ? ? g_qe_touch_flag = 0;? ? ? err = RM_TOUCH_DataGet(g_qe_touch_instance_config02.p_ctrl, &button_status02, NULL, NULL);? ?} while(err != FSP_SUCCESS);}
5.4.4 應(yīng)用程序代碼說(shuō)明
以下代碼完成config01 (MEC電極) 在Normal模式下的baseline調(diào)整。
/* base line setting @method1 */for (uint32_t i = 0U; i < WAKEUP_TIME_BASELINE; i++){? ? err = R_CTSU_ScanStart (g_qe_ctsu_instance_config01.p_ctrl);? ? if (FSP_SUCCESS != err)? ? {? ? ? ? while (true) {}? ? }? ? (void)R_LPT_Control(LPT_CMD_START);? ? R_BSP_SoftwareDelay(WAKEUP_WAIT_MEASUREEND, BSP_DELAY_MILLISECS);? ? (void)R_LPT_Control(LPT_CMD_STOP);? ? (void)R_LPT_Control(LPT_CMD_COUNT_RESET);? ? ctsu_ctrl->state = CTSU_STATE_SCANNED;? ? err = R_CTSU_AutoJudgementDataGet (g_qe_ctsu_instance_config01.p_ctrl, ? &button_status01);? ? if (FSP_SUCCESS == err)? ? {? ? ? ?RM_TOUCH_MonitorAddressGet (g_qe_touch_instance_config02.p_ctrl,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?&monitor_buf_address,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?&monitor_id_address,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?&monitor_size_address);? ? ? qe_monitor_autojudge (g_qe_ctsu_instance_config01.p_ctrl);? ? }}
5.4.5 應(yīng)用程序代碼說(shuō)明
以下代碼完成進(jìn)入低功耗模式的操作,在低功耗模式里完成config01 (MEC電極) 的測(cè)量和自動(dòng)判斷,當(dāng)config01 (MEC電極) 有按鍵On判斷是時(shí),退出低功耗,并通過(guò)R_CTSU_AutoJudgementDataGet() 取得結(jié)果。
/* Standby mode */{? ?/* for [CONFIG01] configuration */? ?(void)R_LPT_SetCMT(LPT_CH1, (uint32_t)WAKEUP_LPT_PERIOD_STANDBY);? ?err = R_CTSU_ScanStart (g_qe_ctsu_instance_config01.p_ctrl);? ?/* Enter software standby mode */? ?lpc_err = R_LPC_LowPowerModeActivate(&activate_standby_callback);? ?if (LPC_SUCCESS != lpc_err)? ?{? ? ? ?while (true) {}? ?}? ?while (0 == g_qe_touch_flag) {}? ?g_qe_touch_flag = 0;? ?err = R_CTSU_AutoJudgementDataGet (g_qe_ctsu_instance_config01.p_ctrl, ?&button_status01);? ?if (FSP_SUCCESS == err)? ?{? ? ? ?RM_TOUCH_MonitorAddressGet (g_qe_touch_instance_config02.p_ctrl,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?&monitor_buf_address,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?&monitor_id_address,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?&monitor_size_address);? ? ? ?qe_monitor_autojudge (g_qe_ctsu_instance_config01.p_ctrl);? ?}}
5.4.6 應(yīng)用程序代碼說(shuō)明
以下代碼為進(jìn)入Software Standby Mode時(shí)的Callback程序,用于啟動(dòng)Low-power Timer定時(shí)器。
/* activate_standby_callback */static void activate_standby_callback(void *p_data){? ?lpt_err_t ?lpt_err;? ?/* Start LPT count */? ?lpt_err = R_LPT_Control(LPT_CMD_START);? ?if (LPT_SUCCESS != lpt_err) while(1);}
5.4.7 應(yīng)用程序代碼說(shuō)明
以下代碼為退出Snooze Mode時(shí)的Callback程序,用于停止和復(fù)位Low-power Timer定時(shí)器,以及disable snooze release interrupt。
/*snooze_callback*/static void snooze_callback(void *p_data){? ?lpt_err_t lpt_err;? ?lpc_err_t lpc_err;? ?/* Stop LPT count */? ?lpt_err = R_LPT_Control(LPT_CMD_STOP);? ?if (LPT_SUCCESS != lpt_err) while(1);? ?/* Reset LPT count */? ?lpt_err = R_LPT_Control(LPT_CMD_COUNT_RESET);? ?if (LPT_SUCCESS != lpt_err) while(1);? ?/* Disable snooze release interrupt */? ?lpc_err = R_LPC_SnoozeModeConfigure(&gs_snooze_mode);? ?if (LPC_SUCCESS != lpc_err) while(1);}
5.4.8 點(diǎn)擊
圖標(biāo),編譯程序。
5.4.9 以上應(yīng)用程序代碼的詳細(xì)解釋
您可參考瑞薩官網(wǎng)的應(yīng)用筆記RX140 Group Smart Wakeup Solution Rev.1.00以及配套的樣例程序。

長(zhǎng)按二維碼或復(fù)制鏈接到瀏覽器中打開(kāi):
https://www.renesas.cn/cn/zh/document/apn/rx140-group-smart-wakeup-solution-rev100

https://www.renesas.cn/cn/zh/document/scd/rx140-group-smart-wakeup-solution-rev100

如您在使用瑞薩MCU/MPU產(chǎn)品中有任何問(wèn)題,可識(shí)別下方二維碼或復(fù)制網(wǎng)址到瀏覽器中打開(kāi),進(jìn)入瑞薩技術(shù)論壇尋找答案或獲取在線技術(shù)支持。
https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/
下一節(jié):使用QE for Cap Touch監(jiān)控觸摸底層數(shù)據(jù)以及觸摸行為
推薦閱讀
瑞薩電容觸摸技術(shù)之低功耗應(yīng)用——RX140實(shí)驗(yàn)環(huán)節(jié)(1)
瑞薩電容觸摸技術(shù)之低功耗應(yīng)用——RX140原理篇
基于RX140的低功耗觸摸按鍵解決方案