物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构

物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构前言 本文是在了解 LoRoWAN 协议的基础之上 对 LoRaClassA B C 终端的通用的软件实现架构进行拆解 从软件架构的角度拆解 LoRaClassA B C 终端的软件功能实体之间的关系 目录 1 软件的总体架构 2 Radio 硬件层 Radio 硬件层又分为三个子层 2 1 高频 RF 主要是解决调制后的高频信号的发送 2 2 频段 Band 频段就是一段许可额高频电磁波的范围 包括欧洲的 EC868 EU433 中国的 CN470 和美国的 US430 等频段

前言:

本文是在了解LoRoWAN协议的基础之上,对LoRa Class A/B/C终端的通用的软件实现架构进行拆解。

从软件架构的角度拆解LoRa Class A/B/C终端的软件功能实体之间的关系。


目录:

1. 软件的总体架构

2.  Radio硬件层

3.   STM8 MCU通用接口驱动程序层

4.  Radio硬件的驱动层

5.  LoRaWAN MAC层

6.  LoRaWAN控制层

7. LoRaWAN接口层

8. 应用层



1. 软件的总体架构

(1)软件总体架构

物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构

(2)函数调用链

物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构


2.  Radio硬件层

Radio硬件层又分为三个子层

2.1 高频RF

主要是解决调制后的高频信号的发送。

2.2 频段Band

频段就是一段许可额高频电磁波的范围,包括欧洲的EC868,EU433, 中国的CN470和美国的US430等频段。

不同频段,频率的范围、频谱的带宽、发送的功率都有不同的规范。

2.3 通道channel

虽然同一时间只能发送和接收一个载频的带宽,但在LoRaWAN允许一个LoRaWAN在的终端,可以在不同的时间,使用不同的某个频段的不同频率进行通信。

每个通道的带宽为200K

物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构

2.4 调制解调层

LoRa专有的扩频通信就是该层实现的,扩频码的配置、还有4/5纠错码的实现、IQ的反转,也可归在此层。

2.3 Lora物理层

物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构

主要完成的物理层帧的编码与解码。

3.   STM8 MCU通用接口驱动程序层

Radio驱动程序,如果需要通过Radio收发数据,必须通过MCU与Radio之间的结果SPI总线来完成。

而SPI的驱动程序就是由 STM8 MCU通用接口驱动程序层实现的。

除了SPI接口驱动,STM8 MCU通用接口驱动程序层还提供GPIO驱动、定时器驱动、中断驱动、MCU片内Flash驱动等。

4.  Radio硬件的驱动层

硬件的驱动层主要完成对Radio芯片的初始化、配置、物理层帧的净荷的发送与接收。

 sx126x.c、radio.c主要就是完成此层的功能。

5.  LoRaWAN MAC层

完成的功能有:

(1)MAC层帧的编码与解码或者说MAC层帧的组装与卸装。

(2)支持MAC 注册(join)的功能

(3)提供确认(confimed)的数据包的发送服务,类似与 TCP传输的服务

(4)提供无确认(unconfimed)的数据包的发送服务,类似与UDP传输服务

(5)Class A, B. C三种不同的MAC层的终端类型与调度策略。

(6)对MAC层的payload进行解码与解密的功能。

6.  LoRaWAN控制层

LoRa的控制命令command,可以通过LoRa MAC的帧头进行携带,也可以通过port0的用户数据来承载。

Port是LoRA MAC提供的类似Socket端口的机制,不同的port,代码不同的应用程序.

Port0是一个保留的port号,留给MAC自己使用。

MAC的控制命令,都可以通过port 0的用户数据承载。

7. LoRaWAN接口层

LoRa WAN与应用程序之间采用两种接口机制

7.1 基于端口号的网络协议接口

该接口用于定义MAC与应用层之间的数据包的封装规范,主要用于不同的网络设备之间数据封装。

port1-255是留给应用程序的。port号与应用程序之间的关系,由应用程序自己决定, LoRa WAN MAC不做规定。

但port0是保留给LoRa WAN MAC层自己使用的。

7.2. 基于API的接口

主要功能是,LoRa终端自身的应用程序的通过该接口,利用LoRa WAN提供的本地的LoRa WAN MAC层服务,实现与远程的LoRa server在应用层之间的通信。

主要的接口包括:

(1)LoWAN的初始化接口:LoRaMacInitialization

功能:实现对LoRa WAN MAC的初始化

原型:

LoRaMacStatus_t LoRaMacInitialization ( LoRaMacPrimitives_t *primitives, LoRaMacCallback_t *callbacks, LoRaMacRegion_t region );

案例:


(2)MCPS(Mac Common Part Sublayer)接口

功能:应用层通过此接口,请求LoRaWAN MAC发送用户数据,支持下列三种服务。

原型:

LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest );

案例:

LoRaMacMcpsRequest( &mcpsReq )


(3)MLME(MAC Layer Manage Entity)接口

功能:应用层通过此接口,完成网络管理的功能

原型:

LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t *mlmeRequest );

案例:

            LoRaMacMlmeRequest( &mlmeReq );


(4)MIB(manangement information database)参数管理接口

功能:应用程序该接口,设置LoRoWAN的管理、配置数据

支持的管理、配置数据有:

通过名字,我们可以知道其大概意思。

原型:

LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet )

LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet );

案例:


其他。。。。。。。。


8. 应用层

(1)应用层数据的解析

(2)应用程数据的加解密

(3)MAC层对应用层的回调的通知

(4)应用程序的主线性

  • 初始化
  • 注册
  • 应用数据发送
  • 应用数据接收
  • 状态机的驱动

(5)上行发送调度线程,该定时器是主线程启动的。

(6)状态机

物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216610.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:28
下一篇 2026年3月18日 上午11:28


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号