1.目錄結構
Driver:MCU 驅動文件
Example:測試工程所在目錄
Kernel:RTOS 系統內核
Libs:通用庫文件
Mcu:MCU 相關配置文件
Midware:主板相關驅動實現
2.開發環境
評估板例程采用 IAR 編譯環境 ARM 版,版本需要 7.7 及以上版本,以便支持對應 MCU 的相關歷程及配置。相關軟件請自行在官網下載和安裝:https://www.iar.com/iar-embedded-workbench。
仿真器可采用 J-Link 仿真或 IAR 支持的相關仿真器,采用 SWD 接口。
3.調試說明
本評估板使用 MCU 仿真的話,需要注意兩點。
1.MCU 深度休眠時無法使用 SWD 調式,需要復位芯片以恢復 SWD 調式口功能進行程序仿真。
2.MCU 啟動支持 BOOT 選擇開關,對應的端口是 PD03,PD03 低電平則為調式模式,高電平為燒錄模式。
在本評估板中,PD03 默認通過跳線帽可以短接到 LoRa 透傳模塊(M-KL9) 的對應 RST 引腳上,但是注意 RST 必須拉高才能保證 M-KL9 模塊正常運行,如果拉低則會導致 M-KL9 掉電(原因參考 5 復位介紹)。因此如果需要控制 M-KL9 的 RST 引腳,在仿真前,需要斷開 PD03 的跳冒以便評估板進入調式模式(原因參考上述調式說明 2)。仿真啟用后再接上跳線帽,在主程序中,操作完 RST引腳后保持高電平。
4.例程說明
例程經過很好的代碼封裝,模塊化耦合度低,且使用了 RTOS 系統(RTX),能夠方便做各種任務擴展和調度。RTX 是 ARM 公司出品的具有良好的代碼移植性和優秀的 RAM 資源消耗,相關操作使用學習請參考 ARM 公司相關 RTX 介紹。
例程主要業務層(應用層)代碼如下:
Main 文件為主程序入口,統一的 app 函數接口,具體實現可自定義源文件, 通過 app 統一接口定義,可以方便使用統一的系統啟動工程,而根據自己的業務需求自定義自身的程序。比如此處的例程主代碼為 app_example.c。
工程整體代碼引用如下所示。Midware 為硬件驅動成,net 為對用的 LoRa 無線模塊操作接口,已實現了 AT 命令的函數封裝。
上述代碼中:
bsp 前綴的主要為 MCU 級別的底層驅動
dev 前綴的代碼主要為與主板相關的設備驅動代碼
5.復位及喚醒
LoRa 透傳模塊在啟動后會自動復位,也可以在任何需要的時間對其進行復位,具體方法是給 RESETn 引腳施加一個不小于 100mS 的低電平。
模塊復位時序
模塊在 AT 模式下,可以通過 AT 指令控制模塊進入休眠狀態。當需要喚醒時可通過 Wake_UP 引腳輸入一個下降沿來喚醒模塊。為了節約功耗,正常工作時可將此引腳做拉低處理。
模塊喚醒時序
本評估板采用的 LoRa 模塊默認是透傳模式,如果需要進入配置(AT)模式,則可以通過命令進行切換。
6.代碼及流程圖
評估板主要實現了對 M-KL9 的操作,為了便于使用測試,評估板例程實現了一種透明方式對 M-KL9 模塊的操作。數據流程圖如下所示。
如果用戶需要對 M-KL9 做特定的參數配置或其它操作,可以參考本評估板例程進行修改。
主要操作的接口代碼如下
/* KL9 初始化,主要初始化 AT 命令操作函數接口 */
bool KL9_Init(struct atcmd_handle_t *handle);
/* KL9 數據發送 */
bool KL9_Send(bool direct, uint8_t *data, uint32_t len);
/* KL9 退出透傳模式(即進入配置命令(AT)模式) */
bool KL9_ExitTransparent(void);
/* KL9 檢測是否 AT 模式*/
bool KL9_CheckAT(void);
/* KL9 AT 參數設置,該函數實現了部分參數設置的代碼,如需要其他更多的AT 命令操作參數設置,可參考改寫 */
bool KL9_AtSet(AT_CMD_TYPE type, uint32_t value);
程序整體流程圖
1.概述
LoRa 透傳模塊 M-KL9 支持 AT 命令配置參數,配置完后自動保存。
默認運行自動識別 AT 引腳電平,如果電平為高,則 AT 模式(模塊不開接收);如果電平為低,則為透傳模式(模塊自動開啟接收)。只有在 AT 模式下才能修改參數,因此,首先需要確保模塊處于 AT 命令模式。
2.AT模式切換
AT 模式與透傳模式切換支持硬件和軟件兩種方式。
硬件方式:通過 AT 引腳高低電平控制(根據外接的 IO 電平判斷)。
軟件方式:通過+++(退出透傳)和 ATT(進入透傳)命令切換模式。
注意,+++命令不帶回車換行符,其它 AT 命令末尾都帶回車換行符。另外,+++命令操作后并不會保存,如果系統復位,則會恢復成根據 AT 引腳電平來確定模塊所處的模式。
請根據需要來切換 AT 模塊和透傳模式。
3.使用方式
方式 1:如果項目模塊量少,參數配置完后不變化,可以一次性配置好,后面模塊上電即用,不用擔心配置的問題,只需采用透傳方式或 AT 命令方式直接發送數據即可。
方式 2:如果需要軟件控制,隨時改變,則按如下流程。
步驟 1:系統上電或復位運行,首先通過模塊 RST 引腳復位 M-KL9,具體操作參考 KL9 相關數據手冊。
步驟 2:通過 AT 命令檢測 M-KL9 是否 AT 模式,如果是 AT 模式,則會立即返回 OK,如果不是,則無返回值(即透傳模式),該 AT\r\n 命令會當做數據發送出去。
步驟 3:AT 命令是否有響應可定義一個超時時間 1s(除發送命令外),其它
AT 命令響應時間應該不超過 1 秒,根據 2 判斷結果,如果當前是透傳,則可以通過+++命令或拉高 AT 引腳,退出透傳模式。
步驟 4:然后再次執行 2 檢測是否 AT 模式,如果是則執行 5,否則繼續 2, 重試多次不成功請檢查硬件。
步驟 5:執行 AT 對應的命令配置參數,正常返回值是\r\nOK\r\n,可通過返回字符串判斷是否配置成功,否則再次嘗試,重試多次不成功請檢查硬件。
步驟 6:配置完成后,切換回透傳模式,直接發送數據即可(透傳模式無返回值),如果需要通過返回值判斷是否發送成功,則可以不切換回透傳模式,直接通過 AT+TX=HEX DAT\r\n 方式發送數據,發送成功則返回\r\nOK\r\n。
步驟 7:如果模塊發送完成后,需要休眠系統,可以按照 2 步驟,切換回 AT
模式,通過 AT+EL 命令來進入休眠。
步驟 8:休眠結束后,如果需要提前喚醒(或從永久休眠喚醒),則通過操作 WAKEUP 引腳來喚醒設備。具體參照 M-KL9 數據手冊的喚醒操作。也可以通過掉電方式來進行節電處理,主控 MCU 休眠結束后重新上電 M-KL9。
總之,系統操作的原則就是,AT 命令需要先判斷 M-KL9 處于 AT 模式,需要知道執行結果,則判斷返回值。正常情況下,用軟件配置參數后,如果不更改, 參數是保存的,上述流程只需要配置參數成功執行一遍,后面周期性執行業務數據發送即可。