LORA-B1S——LADK应用开发模板
在LORA-B1S的例程中有一个lora-ADK
的工程(Lora Application Development Kit,简称LADK),这个工程是我们已经建立好的一个开发模板,方便大家快速基于LORA-B1S板创建自己的lora应用,而不用再从头移植lora驱动,从头配置stm32cubeMx。
LADK包含了哪些主要功能
- 根据用到的单片机资源配置好了stm32cubemx工程
- 在user/components 文件夹中包含了一套通用组件库
- 在user/lora文件夹中包含了移植好的lora驱动程序
- 生成好了一个可以直接编写应用的MDK工程
STM32Cubemx配置
打开project.ioc
即为stm32cubemx的配置工程。打开之前请先自行安装stm32cubeMX。
基于LORA-B1S硬件原理图,会用到的常用单片机外设在stm32cubemx中都已经做好了配置。如果自己想使用STM32的其他资源可以在该工程中配置好,重新生成MDK工程。
用到的单片机外设资源如下:
- 串口:USART1_RX 、USART_TX
- LED输出IO:LED
- KEY输入IO:KEY
- LORA模块相接
- SPI接口:LCS、SPI1_MOSI、SPI1_MISO、SPI1_SCK
- lora复位输出IO:LRST
- lora中断输出:LDIO1
- lora忙输入IO:LBUSY
- RTC实时时钟(用来实现app_timer)
components组件
组件是一套工具代码的集合,存在于.\User\components\
文件夹中,这些组件有的是我自己写的用在工作项目中的,有的是从其他SDK中移植出来的。那这些组件代码可以简化在单片机裸机下的应用开发,提高开发效率。
组件代码也不建议大家先去研究具体实现的细节,而是把它当成工具使用,先学会怎么应用,在我们lora开发中可以怎么简化开发。之后你在自己做项目的过程中也可以考虑把这些组件移植到你自己的工程中去应用。
组件代码目前我都是以app_
作为文件名开头,下面对这些组件的功能做一个介绍:
- app_timer:软件定时器,实现定时任务
- app_buffer:通用缓冲器
- app_printf:printf打印
- app_scheduler:调度器框架,把函数压到调度器队列中执行
- app_fsm:状态机框架
Lora驱动文件
lora驱动文件位于.\User\lora\
文件夹中,实现了sx126x系列的驱动。
该驱动的原始文件提取自:https://github.com/Lora-net/LoRaMac-node/releases/tag/v4.5.2,想深入研究的可以自行git clone下载。 这个仓库是lorawan节点的完整实现。我们提取出了和sx1268驱动相关的核心部分,并且把和mcu的接口给封装出来方便移植到其他MCU上去。
下面是每个文件对应的功能:
- hal-common:和MCU接口的一些通用定义
- hal-gpio:MCU GPIO相关的接口
- hal-spi:SPI接口函数
- hal-timer:lora驱动需要一个软timer的接口
- radio:lora驱动API
- sx126x-board:sx126x模组或者板级相关的
- sx126x:sx126x芯片级的操作
MDK工程
.\MDK-ARM\project.uvprojx
即为MDK工程,请确保安装MDK5.30以上版本。
打开该工程,可以看到工程结构:
其中红圈圈起来的是我们自己添加的分组,其他文件为stm32cubemx自动生成的。
- Lora
- Components放的是组件代码
- App用来存放自己编写的应用代码
如果需要使用单片机的其他外设资源或者修改一些参数,建议在stm32cubemx中修改,再重新生成MDK工程。
烧录调试时候根据自己硬件调试器是Daplink、Stlink、Jlink自行配置。默认我们工程都是使用Daplink,即选择CMSIS-DAP
如何使用
- 拷贝lora-ADK并修改文件夹名为自己的应用名称。
- 根绝需要修改stm32cubemx工程,如果修改,请重新生成MDK工程
- 打开MDK工程,在App分组中添加自己的应用代码
- 编译烧录
LORA-B1S支持
淘宝购买地址:
https://item.taobao.com/item.htm?&id=657480900713
Lora技术支持群:
QQ群:603253865
LORA-B1S专栏
源码下载地址,最新文档都会更新在专栏内,欢迎大家订阅收藏