0%

I-CUBE-LRWAN代码阅读笔记:软件架构

I-CUBE-LRWAN

I-CUBE-LRWAN 是 ST 官方为帮助开发者快速开发 LoRaWAN 节点应用,推出的一组软件包。I-CUBE-LRWAN 支持 SX1276MB1MAS, SX1276MB1LAS, SX1272MB2DAS, SX1262DVK1DAS, SX1262DVK1CAS, SX1262DVK1BAS 等 lora 收发芯片,并且给出了这些芯片分别在 NUCLEO-L053R8, NUCLEO-L152RE, NUCLEO-L476RG 和 B-L072Z-LPWAN1 开发板上的例程用于学习。

I-CUBE-LRWAN 具有如下的特点:

  • 兼容 LoRaWAN V1.0.3 标准;
  • 支持 A、B、C 类 LoRaWAN 协议;
  • 符合欧盟 868 MHz ISM 频段 ETSI(欧洲电信标准协会)标准;
  • 符合欧盟 433 MHz ISM 频段 ETSI(欧洲电信标准协会)标准;
  • 符合美国 915 MHz ISM 频段 FCC(联邦通信委员会)标准;
  • 支持 OTAA(无线激活)或者 ABP(手动激活) 的方式激活终端设备;
  • 自适应传输速率;
  • 包括用于认证测试的 LoRaWAN® 测试应用程序;
  • 低功耗优化;
  • 兼容 STM32 的各产品线;
  • 集成安全组件;

软件包说明

I-CUBE-LRWAN 软件包的工程架构如上面的架构图。其中 HAL 层是 ST 官方提供的 HAL 库。 User Application 层需要用户根据自己实际的应用进行开发。I-CUBE-LRWAN 提供的最核心的组件包括三个部分:驱动中间层以及工具包驱动层主要是用来组织底层的代码,主要包括一些板级支持包、LoRa收发器驱动以及传感器驱动等;中间层 组织了一些协议及工具,例如 mbedtls 、LoRaWAN 栈等;工具层是 ST 提供的一些能让开发者简化应用代码编写的软件工具,例如:低功耗管理器、状态机、软件定时器等。文件目录组织结构如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
├─Docs       
├─Drivers
│ ├─BSP
│ │ ├─B-L072Z-LRWAN1
│ │ ├─CMWX1ZZABZ_0xx
│ │ ├─Components
│ │ ├─IKS01A2
│ │ ├─IKS01A3
│ │ ├─I_NUCLEO_LRWAN1
│ │ ├─LRWAN_NS1
│ │ ├─MDM32L07X01
│ │ ├─MDM32WL
│ │ ├─STM32L0xx_Nucleo
│ │ ├─STM32L1xx_Nucleo
│ │ ├─STM32L4xx_Nucleo
│ │ ├─SX1261DVK1BAS
│ │ ├─SX1262DVK1CAS
│ │ ├─SX1262DVK1DAS
│ │ ├─sx1272mb2das
│ │ ├─sx1276mb1las
│ │ └─sx1276mb1mas
│ │
│ ├─CMSIS
│ ├─STM32L0xx_HAL_Driver
│ ├─STM32L1xx_HAL_Driver
│ └─STM32L4xx_HAL_Driver
|
├─Middlewares
│ ├─ST
│ │ └─STM32_Secure_Engine
│ │ ├─Core
│ │ ├─Interface
│ │ ├─Key
│ │ └─Utilities
| |
│ └─Third_Party
│ ├─LoRaWAN
│ ├─mbedTLS
│ └─SubGHz_Phy
|
├─Projects
│ ├─B-L072Z-LRWAN1
│ ├─NUCLEO-L053R8
│ ├─NUCLEO-L073RZ
│ ├─NUCLEO-L152RE
│ └─NUCLEO-L476RG
|
└─Utilities
├─conf
├─lpm
├─misc
├─sequencer
├─timer
└─trace

其中:

  • Docs: 软件工程的整个文档说明;
  • Drivers:存放驱动层的代码,例如 BSP、CMSIS、HAL 等;
  • Middlewares:分为 ST 官方包和第三方软件包,ST 官方包提供了一个加密用的引擎,第三方则包括了 LoRaWAN 协议栈、mbedTLS包和SubGHz_Phy包;
  • Projects:ST 官方提供的例程工程文件,包括了一些主流的 IDE 工程文档,可以使用 MDK、IAR、STM32CubeIDE等软件直接打开构建工程;
  • Utilities:ST 提供的一些工具组件;