1.目录结构
Driver:MCU 驱动文件
Example:测试工程所在目录
Kernel:RTOS 系统内核
Libs:通用库文件
Mcu:MCU 相关配置文件
Midware:主板相关驱动实现
2.开发环境
评估板例程采用 IAR 编译环境 ARM 版,版本需要 7.7 及以上版本,以便支持对应 MCU 的相关历程及配置。相关软件请自行在下载和安装:/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
命令会当做数据发送出去。
步骤 3:AT 命令是否有响应可定义一个超时时间 1s(除发送命令外),其它
AT 命令响应时间应该不超过 1 秒,根据 2 判断结果,如果当前是透传,则可以通过+++命令或拉高 AT 引脚,退出透传模式。
步骤 4:然后再次执行 2 检测是否 AT 模式,如果是则执行 5,否则继续 2, 重试多次不成功请检查硬件。
步骤 5:执行 AT 对应的命令配置参数,正常返回值是
OK
,可通过返回字符串判断是否配置成功,否则再次尝试,重试多次不成功请检查硬件。
步骤 6:配置完成后,切换回透传模式,直接发送数据即可(透传模式无返回值),如果需要通过返回值判断是否发送成功,则可以不切换回透传模式,直接通过 AT+TX=HEX DAT
方式发送数据,发送成功则返回
OK
。
步骤 7:如果模块发送完成后,需要休眠系统,可以按照 2 步骤,切换回 AT
模式,通过 AT+EL 命令来进入休眠。
步骤 8:休眠结束后,如果需要提前唤醒(或从休眠唤醒),则通过操作 WAKEUP 引脚来唤醒设备。具体参照 M-KL9 数据手册的唤醒操作。也可以通过掉电方式来进行节电处理,主控 MCU 休眠结束后重新上电 M-KL9。
总之,系统操作的原则就是,AT 命令需要先判断 M-KL9 处于 AT 模式,需要知道执行结果,则判断返回值。正常情况下,用软件配置参数后,如果不更改, 参数是保存的,上述流程只需要配置参数成功执行一遍,后面周期性执行业务数据发送即可。