一、概述
本文主要跟大家分享 NJJ29C2 Wake up 功能配置流程,配置 Wake1 邊緣檢測將 NJJ29C2 從低功耗模式喚醒, 並配置喚醒後觸發 TX1 進行低頻數據傳輸。
二、配置流程
- CMD_CONFIG_DEVICE 命令配置設備信息,以配置 WUP1 為例,主要配置信息如下:
uint8_t cendricWakeDev[19] = {
0x48, 0x02, 0x04, 0x40, 0x21, 0x01, 0xD5, 0xFF, 0x10, 0x00, 0x00,
0xFF, 0x85, 0xFF, 0xFF, 0x0A, 0x00, 0x05, 0x05
};
/* starts PKE LF frame transmission at tx1(High Power Mode) with 1Ap */
/* HPDR mode TX1-TX2,config LOWPOWER2, Wake threshold and edge */
Cendric_CMD_CONFIG_DEVICE(1, cendricWakeDev, sizeof(cendricWakeDev));
① SYSCONFIG 字節中 LOWPOWER_SEL 配置為 0x1,選擇 LOW_POWER2,使能內部 RC 振盪器,在低功耗模式下啟用解碼必須使用 LOW POWER2;
② WUPTHRES1 字節配置喚醒輸入引腳的閾值, WUP1_THRES[1:0] 配置為 0x3,選擇 80%;
③ WUPEDGESEL1 選擇檢測邊沿,結合 WPI NJJ29C2 開發板原理圖分析,默認被拉高,此處 WUP1 引腳選擇下降沿檢測,WUP1_EDGE_SEL[1:0] 配置為 0x2;
④ WUPDEB 中 T_DEBOUNCE[5:0] 配置檢測到邊沿後的反彈周期,此處配置為 5ms;
⑤ WUPVAL 中 T_VALIDATE[5:0] 配置驗證周期的時間,此處配置為 5ms。
- CMD_CONFIG_ADVANCED 高級配置參考默認配置即可,此處不展開說明。
uint8_t cendricConfigAdvanced[6] = {
0x03, 0xBB, 0xB3, 0xE5, 0x15, 0xF2
};
/* This will bring the LF driver duty cycle closer to the target value of 40% */
Cendric_CMD_CONFIG_ADVANCED(1, cendricConfigAdvanced, sizeof(cendricConfigAdvanced));
- CMD_CONFIG_DRIVER 配置天線阻抗、驅動電流等信息,以下參數其中 TX1、TX3、TX4、TX6 為同一組天線參數,TX5 為另一組參數,根據需要配置,此處不展開說明。
uint8_t cendricConfigDrv[14] = {
0x2D, 0x02, 0x28, 0x44, 0xEE, 0x28, 0xF0,
0x00, 0x82, 0x28, 0x3F, 0xED, 0x28, 0xF0
};
/* set initial ZEFF = 10 Ohm, initial inductance value = 345uH */
Cendric_CMD_CONFIG_DRIVER(0, cendricConfigDrv, sizeof(cendricConfigDrv));
- CMD_START_STATIC_DIAG 命令啟動 LF 的靜態診斷;
/* Wake up device configuration */
uint8_t cendricStaticDiag[4] = {
0x01,0x01,0x00,0x00
};
/* starts the static diagnosis of the LF drivers */
Cendric_CMD_START_STATIC_DIAG(1, cendricStaticDiag, sizeof(cendricStaticDiag));
- CMD_GET_DEVICE_INFO 命令回收 RESP_STATIC_DIAG 信息。
/* get diagnostics information */
Cendric_CMD_GET_DEVICE_INFO(0, 0x03);
- CMD_START_LF_TRANSMIT_DATA 命令配置 TX1 天線阻抗學習。
uint8_t cendricImpLearningTX1[5] = { 0x04, 0x01, 0x20, 0x04, 0x05 };
Cendric_CMD_START_LF_TRANSMIT_DATA(1, cendricImpLearningTX1, sizeof(cendricImpLearningTX1));
- CMD_CONFIG_WUP_LF_TRANSMIT 首先將對應的低頻傳輸 BUF 配置給 Wake up 引腳,下一步配置對應驅動發送以及對應 BUF 的數據幀,可根據需要進行修改。
uint8_t cendriWake_SEL_BUF[14] = {0x20,0x01,0x21,0x02,0x22,0x00,0x23,
0x00,0x24,0x00,0x25,0x00,0x26,0x00 };
uint8_t cendriWakeData_TX1[19] = {0x80,0x0C,0x01,0x40,0x00,0x3F,0x00,
0x00,0x00,0x00,0x02,0x01,0x50,0x74,0x04,0x01,0x20,0x02,0x6D};
/* WUPFEAT_SEL= 1, WUP_LF_BUF_NR1 -> WUP1, WUP_LF_BUF_NR2 -> WUP2 */
Cendric_CMD_CONFIG_WUP_LF_TRANSMIT(1, cendriWake_SEL_BUF, sizeof(cendriWake_SEL_BUF));
/* Set "WakeIDE + RSSI Command" to Wake1, TX1 */
Cendric_CMD_CONFIG_WUP_LF_TRANSMIT(0, cendriWakeData_TX1, sizeof(cendriWakeData_TX1));
三、清除標誌,再次使能
完成前面的配置後,當 WUP1 接地被拉低後,則 NJJ29C2 從低功耗模式被喚醒,並觸發 TX1 發送對應的數據幀,完成喚醒觸發後 WUPSTAT(喚醒輸入引腳狀態標誌位) 和 WUPLFSTAT(喚醒輸入引腳觸發的低頻傳輸標誌位)被置位,此時 NJJ29C2 通過 INT 信號通知基站通過 Cendric_CMD_NOP(0) 命令讀取事件信息。
基站主控需通過 CMD_CLEAR_DEVICE_INFO 命令清除喚醒輸入引腳的信息,包括喚醒輸入引腳觸發信息 WUPSTAT 和喚醒輸入引腳觸發的低頻傳輸信息 WUPLFSTAT,再次使能低頻傳輸即可,參考如下:
/* clear WUPSTAT and WUPLFSTAT */
uint8_t cendricClrWake_Flag[10] = {
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x01
};
//[8] CLRWUPSTAT 0x01 WUP1_STAT_CLR
//[9] CLRWUPLFSTAT 0x01 WUP1_LF_STAT_CLR
/* if wake up event trigger */
/* clear WUPSTAT and WUPLFSTAT */
if( (cendricRespData[17]!= 0) || (cendricRespData[18]!= 0) )
{
/* clear Device info */
Cendric_CMD_CLEAR_DEVICE_INFO(1, cendricClrWake_Flag , sizeof(cendricClrWake_Flag));
/* printf Log */
printf(" Clear WUPSTAT and WUPLFSTAT\n");
}
四、結語
以上就是本文的全部內容,喚醒輸入引腳配置以及觸發低頻傳輸數據等配置可根據實際使用修改。
五、參考資料
評論