STM32Cubemx配置E22-xxxT22D lora模块实现定点传输
文章目录
- 一、STM32Cubemx配置
- 二、定点传输
- **什么是定点传输?**
- **定点传输的特点**
- **定点传输的工作方式**
- **E22 模块定点传输配置**
- **如何启用定点传输?**
- **示例**
- **应用场景**
- **总结**
- **配置 1:`C0 00 07 00 02 04 62 00 17 40`**
- **解析**
- **配置 2:`C0 00 07 00 01 04 62 00 17 40`**
- **解析**
- **两者关系**
- **这两个模块的通信规则**
- **总结**
- 三、代码编写测试
一、STM32Cubemx配置
配置串口1为调试串口:

配置串口3为和lora模块的通信串口:

打开串口3的DMA和接收中断:


二、定点传输

什么是定点传输?
定点传输(Fixed Transmission,也称为 目标地址传输)是一种 点对点 的数据通信方式,发送端在数据包中明确指定接收端的地址,只有匹配地址的接收端才能接收数据。
相比于透明传输(Transparent Transmission,即广播式通信),定点传输能确保数据只被特定设备接收,提高了通信的安全性和可靠性。
定点传输的特点
-
发送数据时需指定目标地址
- 发送端的串口数据包中,前 3 个字节用于目标地址:
[ 目标地址高(1B) | 目标地址低(1B) | 目标信道(1B) | 真实数据…… ] - 这样,只有目标地址匹配的模块才会接收该数据,其他设备不会收到。
- 发送端的串口数据包中,前 3 个字节用于目标地址:
-
接收端地址必须匹配发送端指定的目标地址
- 例如:
- 发送端地址:
0x0001 - 接收端地址:
0x0002 - 发送端发送数据时,数据包需要以
0x0002作为目标地址,只有地址0x0002的设备才能接收。
- 发送端地址:
- 例如:
-
定点传输与透明传输的区别
- 透明传输(默认模式)
- 发送端 不会指定目标地址,所有在相同信道上的设备都能接收数据(广播通信)。
- 定点传输
- 发送端 必须在数据包中指定目标地址,只有目标匹配的设备才能接收数据。
- 透明传输(默认模式)
定点传输的工作方式
(1)发送端
- 需要启用定点传输模式,并且发送的数据包必须包含目标地址:
目标地址高(1B) | 目标地址低(1B) | 目标信道(1B) | 真实数据…… - 例如,如果发送端要给地址
0x0002的设备发送数据:00 02 17 48 65 6C 6C 6F00 02→ 目标地址0x000217→ 信道0x1748 65 6C 6C 6F→ 实际发送的数据(“Hello”)
(2)接收端
- 只会接收 目标地址与自身匹配的数据,不会接收其他地址的数据。
E22 模块定点传输配置
如何启用定点传输?
定点传输模式的开关由 REG3(0x06) 寄存器的 第 6 位 决定:
0= 透明传输(默认模式)1= 定点传输
示例
-
发送端(定点模式)
C0 00 07 00 01 04 62 00 17 40- 定点传输模式启用
- 目标地址:
0x0001 - 信道:
0x17
-
接收端(透明模式)
C0 00 07 00 01 04 62 00 17 00- 目标地址:
0x0001 - 信道:
0x17 - 透明模式(自动接收匹配数据)
- 目标地址:
应用场景
- 单点对单点通信(如无线传感器与网关)
- 避免数据冲突(防止多个设备收到相同数据)
- 提高安全性(只让特定设备接收数据)
总结
- 定点传输 = 发送端指定目标地址,只有目标匹配的接收端能接收数据。
- 区别透明传输(广播所有设备)。
- 需要配置 REG3 使能定点传输模式。
- 发送数据时需额外加上目标地址和信道。
这样可以 避免无关设备接收数据,提高通信稳定性!🚀
lora模块配置:
第一个模块:

第二个模块:

这两条配置命令用于设置 两个 E22-xxxT22D LoRa 模块,它们都启用了 定点传输模式。我们逐个分析它们的参数。
配置 1:C0 00 07 00 02 04 62 00 17 40
解析
| 偏移 | 数据 | 含义 |
|---|---|---|
C0 | 配置写入命令 | |
00 | 配置起始地址 | |
07 | 配置数据长度(7 字节) | |
00 02 | 模块地址:0x0002 | |
04 | 网络 ID:0x04 | |
62 | 串口波特率 & 校验 & 空中速率:9600 8N1,2.4Kbps | |
00 | 保留(通常无特殊用途) | |
17 | 信道:0x17(456.125MHz,适用于 E22-400T22D) | |
40 | 定点传输已启用 |
结论
- 该模块的 地址 是
0x0002 - 网络 ID 是
0x04 - 工作信道 是
0x17(456.125MHz) - 串口参数 是
9600 8N1 - 定点传输模式已启用
配置 2:C0 00 07 00 01 04 62 00 17 40
解析
| 偏移 | 数据 | 含义 |
|---|---|---|
C0 | 配置写入命令 | |
00 | 配置起始地址 | |
07 | 配置数据长度(7 字节) | |
00 01 | 模块地址:0x0001 | |
04 | 网络 ID:0x04 | |
62 | 串口波特率 & 校验 & 空中速率:9600 8N1,2.4Kbps | |
00 | 保留(通常无特殊用途) | |
17 | 信道:0x17(456.125MHz) | |
40 | 定点传输已启用 |
结论
- 该模块的 地址 是
0x0001 - 网络 ID 是
0x04 - 工作信道 是
0x17(456.125MHz) - 串口参数 是
9600 8N1 - 定点传输模式已启用
两者关系
这两个模块的通信规则
-
模块 1(地址 0x0001)发送数据时,数据包必须包含目标地址,例如:
00 02 17 48 65 6C 6C 6F00 02→ 目标地址0x000217→ 信道0x1748 65 6C 6C 6F→ 真实数据(“Hello”)
-
模块 2(地址 0x0002)发送数据时,目标地址必须是 0x0001:
00 01 17 57 6F 72 6C 6400 01→ 目标地址0x000117→ 信道0x1757 6F 72 6C 64→ 真实数据(“World”)
总结
✅ 这两个模块已经正确配置为定点传输,且能进行双向通信:
- 模块 1(0x0001)只能给模块 2(0x0002)发送数据
- 模块 2(0x0002)只能给模块 1(0x0001)发送数据
- 它们都使用
信道 0x17(456.125MHz) - 它们都必须在数据包中加上目标地址,否则对方无法接收
🚀 这种配置适用于点对点通信,避免广播式干扰,提高通信稳定性和安全性!
三、代码编写测试
lora.c:
#include "lora.h"extern UART_HandleTypeDef huart3;uint8_t Lora_rxbuff[1024] = {0};void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{if(huart->Instance == USART3){HAL_UARTEx_ReceiveToIdle_DMA(&huart3, Lora_rxbuff, sizeof(Lora_rxbuff));}
}void Lora_Init(void)
{HAL_UARTEx_ReceiveToIdle_DMA(&huart3, Lora_rxbuff, sizeof(Lora_rxbuff));}
lora.h:
#ifndef __LORA_H__
#define __LORA_H__#include "main.h"
#include <stdio.h>void Lora_Init(void);#endif
发送数据测试:
能够成功接收到数据:

相关文章:
STM32Cubemx配置E22-xxxT22D lora模块实现定点传输
文章目录 一、STM32Cubemx配置二、定点传输**什么是定点传输?****定点传输的特点****定点传输的工作方式****E22 模块定点传输配置****如何启用定点传输?****示例** **应用场景****总结** **配置 1:C0 00 07 00 02 04 62 00 17 40****解析** …...
iterm2更新后主题报错
报错 .oh-my-zsh/themes/agnoster.zsh-theme:307: parse error near <<<。方法1:更新Oh My Zsh主题(以agnoster为例) 适用场景:使用Oh My Zsh自带主题(如agnoster)时出现语法错误。 备份当前主题…...
WPF+WebView 基础
1、基于.NET8,通过NuGet添加Microsoft.Web.WebView2。 2、MainWindow.xaml代码如下。 <Window x:Class"Demo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/win…...
不懂ui->layout()->removeWidget(bar);
ui->layout()->removeWidget(bar);解释起来就是:ui->layout()返回一个指针,然后这个指针再调用->removeWidget(bar)。 你提到的语法 ui->layout()->removeWidget(bar) 确实可能让人感到困惑,尤其是如果你对 Qt 的 UI 系统不…...
蓝桥杯算法——铠甲合体
问题描述 暗影大帝又开始搞事情了!这次他派出了 MM 个战斗力爆表的暗影护法,准备一举摧毁 ERP 研究院!MM 个暗影护法的战斗力可分别用 B1,⋯,BMB1,⋯,BM 表示。 ERP 研究院紧急召唤了 NN 位铠甲勇士前来迎战!每位铠甲勇士都…...
JAVA毕设项目-基于SSM框架的百色学院创新实践学分认定系统源码+设计文档
文末获取源码数据库文档 感兴趣的可以先收藏,有毕设问题,项目以及论文撰写等问题都可以和博主沟通,尽最大努力帮助更多的人! 百色学院创新实践学分认定系统设计与实现 摘 要 本百色学院创新实践学分认定系统是针对目前实践学分认定…...
【LangChain】存储与管理对话历史
0. 代码演示 from langchain_community.chat_message_histories import SQLChatMessageHistorydef get_session_history(session_id):# 通过 session_id 区分对话历史,并存储在 sqlite 数据库中return SQLChatMessageHistory(session_id, "sqlite:///memory.d…...
[machine learning] MACS、MACs、FLOPS、FLOPs
本文介绍机器学习中衡量一个模型计算复杂度的四个指标:MACS、MACs、FLOPS、FLOPs。 首先从含义上讲,可以分类两类:MACS/FLOPS和MACs/FLOPs。MACs/FLOPs表示总的操作数(后缀s可以看成是表示复数),MACS/FLOPS表示每秒可以执行的操作…...
学习笔记-AMD CPU 命名
AMD的AI处理器主要分为锐龙AI 1代(基于Zen4架构XDNA 1 NPU)和锐龙AI 2代(基于Zen5架构XDNA 2 NPU),以下是两代的详细说明: 一、锐龙AI 1代(2024年发布) 1. 命名规则 结构…...
【Javascript】计算器(Calculator)网页设计案例
代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>计算器</title…...
Stable Diffusion模型高清算法模型类详解
Stable Diffusion模型高清算法模型类详细对比表 模型名称核心原理适用场景参数建议显存消耗细节增强度优缺点4x-UltraSharp残差密集块(RDB)结构优化纹理生成真实人像/建筑摄影重绘幅度0.3-0.4,分块尺寸768px★★★★★☆皮肤纹理细腻,但高对比场景易出现…...
十大经典排序算法简介
一 概述 本文对十大经典排序算法做简要的总结(按常用分类方式排列),包含核心思想、时间/空间复杂度及特点。 二、比较类排序 1. 冒泡排序 (BUBBLE SORT) 思想:重复交换相邻逆序元素,像气泡上浮 复杂度: 时间:O(n^2)(最好情况O(n)) 空间:O(1) 特点:简单但效率低,稳…...
迷你世界脚本玩家接口:Player
玩家接口:Player 彼得兔 更新时间: 2024-07-28 17:49:05 继承自 Actor 具体函数名及描述如下: 序号 函数名 函数描述 1 getAttr(...) 玩家属性获取 2 setAttr(...) 玩家属性设置 3 getHostUin(...) 获取房主uin 4 isMainPlayer(...) …...
探秘 C 语言:编程世界的基石与传奇
一、C 语言的前世今生 C 语言诞生于 20 世纪 70 年代,由贝尔实验室的丹尼斯・里奇(Dennis Ritchie)开发。它最初是为了配合 UNIX 操作系统的开发,旨在提供一种高效、灵活且可移植的编程语言。在那个硬件资源有限的年代࿰…...
docker:Dockerfile案例之自定义centos7镜像
1 案例需求 自定义centos7镜像。要求: 默认登录路径为 /usr可以使用vim 2 实施步骤 编写dockerfile脚本 vim centos_dockerfile 内容如下: #定义父镜像 FROM centos:7#定义作者信息 MAINTAINER handsome <handsomehandsome.com># 设置阿里云…...
1、语言的本质
语言的本质 1.1 语言的产生生物重演律 1.2 语言的本质1.3 语系1.4 文字的起源汉字的构成和使用 后记 语言是人类传递信息的工具,其本质是信息的载体。 语音和文字是构成语言的两个基本属性,语音是语言承载的物理信号,文字是记录语言的逻辑符…...
学习笔记:IC存储总结(ROM,RAM, EEPROM, Flash, SRAM, DRAM, DDL)
一,概述 半导体存储器是一种可以存储大量二值信息的半导体器件。在电子计算机及一些其他的数字系统的工作过程中,需要对大量的数据进行储存。由于数据处理的数据量和运算速度的要求,因此把存储量和存取速度作为衡量存储器的重要指标。 在电子…...
Scala:统计每个单词出现的个数并打印
目录 问题拆解: 解题步骤: 1. 拆分所有字符串为单词 2. 遍历所有单词并统计 3. 打印结果 基础版代码实现: 代码解释: 输出结果: 为什么这样设计? 继承的APP是个啥? 使用高阶函数式编…...
C++前缀和
个人主页:[PingdiGuo_guo] 收录专栏:[C干货专栏] 大家好,今天我们来了解一下C的一个重要概念:前缀和 目录 1.什么是前缀和 2.前缀和的用法 1.前缀和的定义 2.预处理前缀和数组 3.查询区间和 4.数组中某个区间的和是否为特定…...
图解MOE大模型的7个核心问题并探讨DeepSeekMoE的专家机制创新
原文地址:https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-mixture-of-experts #mermaid-svg-FU7YUSIfuXO6EVHa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FU7YUSIfuXO6EVHa .error-icon{fill…...
SpringBoot项目集成ElasticSearch
1. 项目背景 处于失业找工作的阶段,随便写写吧~ 没啥背景,没啥意义,Java后端越来越卷了。第一学历不是本科,感觉真的是没有一点路可走。 如果有路过的小伙伴,如果身边还有坑位,不限第一学历的话࿰…...
DeepSeek大模型深度解析:架构、技术与应用全景
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 一、大模型时代与DeepSeek的定位1.1 大模型发展历程回顾大模型发展历程时间轴(20…...
SQL AND OR 操作符详解
SQL AND & OR 操作符详解 在SQL(结构化查询语言)中,AND 和 OR 是两种非常重要的逻辑操作符,它们用于在查询条件中组合多个条件。理解并正确使用这些操作符对于编写有效的SQL查询至关重要。 引言 在处理数据库查询时,我们常常需要根据多个条件来筛选数据。AND 和 OR…...
Dubbo+Zookeeper
Apache ZooKeeper 通过当前页面下载Zookeeper 在这里启动zookeeper 可以根据这个页面简单学习一下,但是没有集成mysql,也会出现一些报错,且在这之后我们要使用的管理页面是vue的dubbo-admin dubbo学习三:springboot整合dubbozo…...
从源到目标:深度学习中的迁移学习与领域自适应实践
引言:数据驱动的智能时代与迁移挑战 在深度学习快速发展的今天,模型训练对数据量和质量的依赖成为核心瓶颈。面对新场景时,标注数据不足、数据分布差异等问题常导致模型性能骤降。迁移学习(Transfer Learning)与领域自…...
从厨电模范到数字先锋,看永洪科技如何助力方太集团开启数字新征程
在数字化洪流席卷全球的宏大背景下,企业转型升级的紧迫性与重要性日益凸显,成为驱动行业进步的关键引擎。在这一波澜壮阔的转型浪潮中,方太集团——厨电领域的璀璨明珠,以其前瞻性的战略视野和不懈的创新精神,携手数据…...
Redis大key
Redis大key基本概念,影响 Redis 大 key 指在 Redis 中存储了大量数据的键,它会对 Redis 的性能和内存管理产生影响。 大key的定义与value的大小和元素数量有关,但这个定义并不是绝对的,而是相对的,具体取决于系统的使用…...
在 Apache Tomcat 中,部署和删除项目
在 Apache Tomcat 中,部署和删除 WAR 文件是常见的操作。以下是详细步骤: 1. 删除 WAR 文件 (1) 停止应用 进入 Tomcat 的管理界面(默认地址:http://localhost:8080/manager/html)。 找到需要删除的应用,…...
前端基础之组件自定义事件
我们可以通过使用给组件绑定事件,当组件触发该事件时,就能进行值得返回 我们可以使用v-on属性来给子组件绑定自定义事件,此时该事件就会存在vc中,然后通过this.$emit来触发绑定的事件, 这样就能实现不需要app.vue来给子…...
在 Docker 中,无法直接将外部多个端口映射到容器内部的同一个端口
Docker 的端口映射是一对一的,即一个外部端口只能映射到容器内部的一个端口。 1. 为什么不能多对一映射? 端口冲突: 如果外部多个端口映射到容器内部的同一个端口,Docker 无法区分外部请求应该转发到哪个内部端口,会…...
