Lab Session 4
在Lab 3的基礎上增加低功耗 (Auto Judgement) 功能
5.4
增加低功耗 (Auto Judgement) 功能應用程序
5.4.1 將培訓配套資料Checkpoints文件夾中的工程 "Lab session 4" 中的qe_gen文件的 "qe_touch_sample.c" 拷貝
并覆蓋 "Project Explorer" 的Lab_session_1工程中qe_gen文件的 "qe_touch_sample.c".
5.4.2 應用程序代碼說明
使用init_peripheral_function初始化需要使用的外設
使用R_CTSU_Open() 初始化config01 (MEC電極)
使用RM_TOUCH_Open() 初始化config02 (12個自容式按鍵)
/* 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 應用程序代碼說明
以下代碼完成config01 (MEC電極) 和 config02 (12個自容式按鍵電極) 的初始化偏置電流調整。
/* 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 應用程序代碼說明
以下代碼完成config01 (MEC電極) 在Normal模式下的baseline調整。
/* 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 應用程序代碼說明
以下代碼完成進入低功耗模式的操作,在低功耗模式里完成config01 (MEC電極) 的測量和自動判斷,當config01 (MEC電極) 有按鍵On判斷是時,退出低功耗,并通過R_CTSU_AutoJudgementDataGet() 取得結果。
/* 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 應用程序代碼說明
以下代碼為進入Software Standby Mode時的Callback程序,用于啟動Low-power Timer定時器。
/* 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 應用程序代碼說明
以下代碼為退出Snooze Mode時的Callback程序,用于停止和復位Low-power Timer定時器,以及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 點擊
圖標,編譯程序。
5.4.9 以上應用程序代碼的詳細解釋
您可參考瑞薩官網的應用筆記RX140 Group Smart Wakeup Solution Rev.1.00以及配套的樣例程序。

審核編輯:劉清
-
定時器
+關注
關注
23文章
3368瀏覽量
123606 -
電容觸摸
+關注
關注
0文章
73瀏覽量
16853 -
偏置電流
+關注
關注
1文章
135瀏覽量
13720
發布評論請先 登錄
瑞薩電容觸摸技術之低功耗應用—RX140實驗環節(2)-1
瑞薩電容觸摸技術之低功耗應用—RX140實驗環節(4)&amp;amp;(5)-1
瑞薩電容觸摸技術之低功耗應用案例—RX140實驗環節(3)
瑞薩電容觸摸技術之低功耗應用—RX140實驗環節(5)-2
瑞薩電容觸摸技術之低功耗應用—RX140實驗環節(5)-4
瑞薩電容觸摸技術之低功耗應用—RX140實驗環節(5)-3
評論