無錫泛太科技有限公司
參考價(jià): | 面議 |
- 產(chǎn)品型號
- 品牌
- 其他 廠商性質(zhì)
- 所在地
訪問次數(shù):440更新時間:2021-07-26 14:47:20
1.目錄結(jié)構(gòu)
Driver:MCU 驅(qū)動文件
Example:測試工程所在目錄
Kernel:RTOS 系統(tǒng)內(nèi)核
Libs:通用庫文件
Mcu:MCU 相關(guān)配置文件
Midware:主板相關(guān)驅(qū)動實(shí)現(xiàn)
2.開發(fā)環(huán)境
評估板例程采用 IAR 編譯環(huán)境 ARM 版,版本需要 7.7 及以上版本,以便支持對應(yīng) MCU 的相關(guān)歷程及配置。相關(guān)軟件請自行在下載和安裝:/iar-embedded-workbench。
仿真器可采用 J-Link 仿真或 IAR 支持的相關(guān)仿真器,采用 SWD 接口。
3.調(diào)試說明
本評估板使用 MCU 仿真的話,需要注意兩點(diǎn)。
1.MCU 深度休眠時無法使用 SWD 調(diào)式,需要復(fù)位芯片以恢復(fù) SWD 調(diào)式口功能進(jìn)行程序仿真。
2.MCU 啟動支持 BOOT 選擇開關(guān),對應(yīng)的端口是 PD03,PD03 低電平則為調(diào)式模式,高電平為燒錄模式。
在本評估板中,PD03 默認(rèn)通過跳線帽可以短接到 LoRa 透傳模塊(M-KL9) 的對應(yīng) RST 引腳上,但是注意 RST 必須拉高才能保證 M-KL9 模塊正常運(yùn)行,如果拉低則會導(dǎo)致 M-KL9 掉電(原因參考 5 復(fù)位介紹)。因此如果需要控制 M-KL9 的 RST 引腳,在仿真前,需要斷開 PD03 的跳冒以便評估板進(jìn)入調(diào)式模式(原因參考上述調(diào)式說明 2)。仿真啟用后再接上跳線帽,在主程序中,操作完 RST引腳后保持高電平。
4.例程說明
例程經(jīng)過很好的代碼封裝,模塊化耦合度低,且使用了 RTOS 系統(tǒng)(RTX),能夠方便做各種任務(wù)擴(kuò)展和調(diào)度。RTX 是 ARM 公司出品的具有良好的代碼移植性和優(yōu)秀的 RAM 資源消耗,相關(guān)操作使用學(xué)習(xí)請參考 ARM 公司相關(guān) RTX 介紹。
例程主要業(yè)務(wù)層(應(yīng)用層)代碼如下:

工程整體代碼引用如下所示。Midware 為硬件驅(qū)動成,net 為對用的 LoRa 無線模塊操作接口,已實(shí)現(xiàn)了 AT 命令的函數(shù)封裝。

bsp 前綴的主要為 MCU 級別的底層驅(qū)動
dev 前綴的代碼主要為與主板相關(guān)的設(shè)備驅(qū)動代碼
LoRa 透傳模塊在啟動后會自動復(fù)位,也可以在任何需要的時間對其進(jìn)行復(fù)位,具體方法是給 RESETn 引腳施加一個不小于 100mS 的低電平。


6.代碼及流程圖
評估板主要實(shí)現(xiàn)了對 M-KL9 的操作,為了便于使用測試,評估板例程實(shí)現(xiàn)了一種透明方式對 M-KL9 模塊的操作。數(shù)據(jù)流程圖如下所示。

主要操作的接口代碼如下
/* KL9 初始化,主要初始化 AT 命令操作函數(shù)接口 */
bool KL9_Init(struct atcmd_handle_t *handle);
/* KL9 數(shù)據(jù)發(fā)送 */
bool KL9_Send(bool direct, uint8_t *data, uint32_t len);
/* KL9 退出透傳模式(即進(jìn)入配置命令(AT)模式) */
bool KL9_ExitTransparent(void);
/* KL9 檢測是否 AT 模式*/
bool KL9_CheckAT(void);
/* KL9 AT 參數(shù)設(shè)置,該函數(shù)實(shí)現(xiàn)了部分參數(shù)設(shè)置的代碼,如需要其他更多的AT 命令操作參數(shù)設(shè)置,可參考改寫 */
bool KL9_AtSet(AT_CMD_TYPE type, uint32_t value);
程序整體流程圖

LoRa 透傳模塊 M-KL9 支持 AT 命令配置參數(shù),配置完后自動保存。
默認(rèn)運(yùn)行自動識別 AT 引腳電平,如果電平為高,則 AT 模式(模塊不開接收);如果電平為低,則為透傳模式(模塊自動開啟接收)。只有在 AT 模式下才能修改參數(shù),因此,首先需要確保模塊處于 AT 命令模式。
2.AT模式切換
AT 模式與透傳模式切換支持硬件和軟件兩種方式。
硬件方式:通過 AT 引腳高低電平控制(根據(jù)外接的 IO 電平判斷)。
軟件方式:通過+++(退出透傳)和 ATT(進(jìn)入透傳)命令切換模式。
注意,+++命令不帶回車換行符,其它 AT 命令末尾都帶回車換行符。另外,+++命令操作后并不會保存,如果系統(tǒng)復(fù)位,則會恢復(fù)成根據(jù) AT 引腳電平來確定模塊所處的模式。
請根據(jù)需要來切換 AT 模塊和透傳模式。
3.使用方式
方式 1:如果項(xiàng)目模塊量少,參數(shù)配置完后不變化,可以一次性配置好,后面模塊上電即用,不用擔(dān)心配置的問題,只需采用透傳方式或 AT 命令方式直接發(fā)送數(shù)據(jù)即可。
方式 2:如果需要軟件控制,隨時改變,則按如下流程。
步驟 1:系統(tǒng)上電或復(fù)位運(yùn)行,首先通過模塊 RST 引腳復(fù)位 M-KL9,具體操作參考 KL9 相關(guān)數(shù)據(jù)手冊。
步驟 2:通過 AT 命令檢測 M-KL9 是否 AT 模式,如果是 AT 模式,則會立即返回 OK,如果不是,則無返回值(即透傳模式),該 AT
命令會當(dāng)做數(shù)據(jù)發(fā)送出去。
步驟 3:AT 命令是否有響應(yīng)可定義一個超時時間 1s(除發(fā)送命令外),其它
AT 命令響應(yīng)時間應(yīng)該不超過 1 秒,根據(jù) 2 判斷結(jié)果,如果當(dāng)前是透傳,則可以通過+++命令或拉高 AT 引腳,退出透傳模式。
步驟 4:然后再次執(zhí)行 2 檢測是否 AT 模式,如果是則執(zhí)行 5,否則繼續(xù) 2, 重試多次不成功請檢查硬件。
步驟 5:執(zhí)行 AT 對應(yīng)的命令配置參數(shù),正常返回值是
OK
,可通過返回字符串判斷是否配置成功,否則再次嘗試,重試多次不成功請檢查硬件。
步驟 6:配置完成后,切換回透傳模式,直接發(fā)送數(shù)據(jù)即可(透傳模式無返回值),如果需要通過返回值判斷是否發(fā)送成功,則可以不切換回透傳模式,直接通過 AT+TX=HEX DAT
方式發(fā)送數(shù)據(jù),發(fā)送成功則返回
OK
。
步驟 7:如果模塊發(fā)送完成后,需要休眠系統(tǒng),可以按照 2 步驟,切換回 AT
模式,通過 AT+EL 命令來進(jìn)入休眠。
步驟 8:休眠結(jié)束后,如果需要提前喚醒(或從休眠喚醒),則通過操作 WAKEUP 引腳來喚醒設(shè)備。具體參照 M-KL9 數(shù)據(jù)手冊的喚醒操作。也可以通過掉電方式來進(jìn)行節(jié)電處理,主控 MCU 休眠結(jié)束后重新上電 M-KL9。
總之,系統(tǒng)操作的原則就是,AT 命令需要先判斷 M-KL9 處于 AT 模式,需要知道執(zhí)行結(jié)果,則判斷返回值。正常情況下,用軟件配置參數(shù)后,如果不更改, 參數(shù)是保存的,上述流程只需要配置參數(shù)成功執(zhí)行一遍,后面周期性執(zhí)行業(yè)務(wù)數(shù)據(jù)發(fā)送即可。