STM32Cubemx配置E22-xxxT22D lora模块实现定点传输

news2025/3/6 18:19:56

文章目录

  • 一、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,即广播式通信),定点传输能确保数据只被特定设备接收,提高了通信的安全性和可靠性


定点传输的特点

  1. 发送数据时需指定目标地址

    • 发送端的串口数据包中,前 3 个字节用于目标地址:
      [ 目标地址高(1B) | 目标地址低(1B) | 目标信道(1B) | 真实数据…… ]
      
    • 这样,只有目标地址匹配的模块才会接收该数据,其他设备不会收到。
  2. 接收端地址必须匹配发送端指定的目标地址

    • 例如:
      • 发送端地址0x0001
      • 接收端地址0x0002
      • 发送端发送数据时,数据包需要以 0x0002 作为目标地址,只有地址 0x0002 的设备才能接收
  3. 定点传输与透明传输的区别

    • 透明传输(默认模式)
      • 发送端 不会指定目标地址,所有在相同信道上的设备都能接收数据(广播通信)。
    • 定点传输
      • 发送端 必须在数据包中指定目标地址,只有目标匹配的设备才能接收数据。

定点传输的工作方式

(1)发送端

  • 需要启用定点传输模式,并且发送的数据包必须包含目标地址:
    目标地址高(1B) | 目标地址低(1B) | 目标信道(1B) | 真实数据…… 
    
  • 例如,如果发送端要给地址 0x0002 的设备发送数据
    00 02 17 48 65 6C 6C 6F
    
    • 00 02 → 目标地址 0x0002
    • 17 → 信道 0x17
    • 48 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
    • 透明模式(自动接收匹配数据)

应用场景

  1. 单点对单点通信(如无线传感器与网关)
  2. 避免数据冲突(防止多个设备收到相同数据)
  3. 提高安全性(只让特定设备接收数据)

总结

  • 定点传输 = 发送端指定目标地址,只有目标匹配的接收端能接收数据
  • 区别透明传输(广播所有设备)。
  • 需要配置 REG3 使能定点传输模式
  • 发送数据时需额外加上目标地址和信道

这样可以 避免无关设备接收数据,提高通信稳定性!🚀

lora模块配置:

第一个模块:
在这里插入图片描述
第二个模块:

在这里插入图片描述
这两条配置命令用于设置 两个 E22-xxxT22D LoRa 模块,它们都启用了 定点传输模式。我们逐个分析它们的参数。


配置 1:C0 00 07 00 02 04 62 00 17 40

解析

偏移数据含义
C0配置写入命令
00配置起始地址
07配置数据长度(7 字节)
00 02模块地址0x0002
04网络 ID0x04
62串口波特率 & 校验 & 空中速率9600 8N12.4Kbps
00保留(通常无特殊用途)
17信道0x17456.125MHz,适用于 E22-400T22D)
40定点传输已启用

结论

  • 该模块的 地址0x0002
  • 网络 ID0x04
  • 工作信道0x17(456.125MHz)
  • 串口参数9600 8N1
  • 定点传输模式已启用

配置 2:C0 00 07 00 01 04 62 00 17 40

解析

偏移数据含义
C0配置写入命令
00配置起始地址
07配置数据长度(7 字节)
00 01模块地址0x0001
04网络 ID0x04
62串口波特率 & 校验 & 空中速率9600 8N12.4Kbps
00保留(通常无特殊用途)
17信道0x17456.125MHz
40定点传输已启用

结论

  • 该模块的 地址0x0001
  • 网络 ID0x04
  • 工作信道0x17(456.125MHz)
  • 串口参数9600 8N1
  • 定点传输模式已启用

两者关系

这两个模块的通信规则

  1. 模块 1(地址 0x0001)发送数据时,数据包必须包含目标地址,例如:

    00 02 17 48 65 6C 6C 6F
    
    • 00 02 → 目标地址 0x0002
    • 17 → 信道 0x17
    • 48 65 6C 6C 6F → 真实数据(“Hello”)
  2. 模块 2(地址 0x0002)发送数据时,目标地址必须是 0x0001

    00 01 17 57 6F 72 6C 64
    
    • 00 01 → 目标地址 0x0001
    • 17 → 信道 0x17
    • 57 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

发送数据测试:

能够成功接收到数据:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2310646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPF+WebView 基础

1、基于.NET8&#xff0c;通过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…

蓝桥杯算法——铠甲合体

问题描述 暗影大帝又开始搞事情了&#xff01;这次他派出了 MM 个战斗力爆表的暗影护法&#xff0c;准备一举摧毁 ERP 研究院&#xff01;MM 个暗影护法的战斗力可分别用 B1,⋯,BMB1​,⋯,BM​ 表示。 ERP 研究院紧急召唤了 NN 位铠甲勇士前来迎战&#xff01;每位铠甲勇士都…

docker:Dockerfile案例之自定义centos7镜像

1 案例需求 自定义centos7镜像。要求&#xff1a; 默认登录路径为 /usr可以使用vim 2 实施步骤 编写dockerfile脚本 vim centos_dockerfile 内容如下&#xff1a; #定义父镜像 FROM centos:7#定义作者信息 MAINTAINER handsome <handsomehandsome.com># 设置阿里云…

学习笔记:IC存储总结(ROM,RAM, EEPROM, Flash, SRAM, DRAM, DDL)

一&#xff0c;概述 半导体存储器是一种可以存储大量二值信息的半导体器件。在电子计算机及一些其他的数字系统的工作过程中&#xff0c;需要对大量的数据进行储存。由于数据处理的数据量和运算速度的要求&#xff0c;因此把存储量和存取速度作为衡量存储器的重要指标。 在电子…

Scala:统计每个单词出现的个数并打印

目录 问题拆解&#xff1a; 解题步骤&#xff1a; 1. 拆分所有字符串为单词 2. 遍历所有单词并统计 3. 打印结果 基础版代码实现&#xff1a; 代码解释&#xff1a; 输出结果&#xff1a; 为什么这样设计&#xff1f; 继承的APP是个啥&#xff1f; 使用高阶函数式编…

C++前缀和

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;今天我们来了解一下C的一个重要概念&#xff1a;前缀和 目录 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. 项目背景 处于失业找工作的阶段&#xff0c;随便写写吧~ 没啥背景&#xff0c;没啥意义&#xff0c;Java后端越来越卷了。第一学历不是本科&#xff0c;感觉真的是没有一点路可走。 如果有路过的小伙伴&#xff0c;如果身边还有坑位&#xff0c;不限第一学历的话&#xff0…

DeepSeek大模型深度解析:架构、技术与应用全景

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 一、大模型时代与DeepSeek的定位1.1 大模型发展历程回顾大模型发展历程时间轴&#xff08;20…

Dubbo+Zookeeper

Apache ZooKeeper 通过当前页面下载Zookeeper 在这里启动zookeeper 可以根据这个页面简单学习一下&#xff0c;但是没有集成mysql&#xff0c;也会出现一些报错&#xff0c;且在这之后我们要使用的管理页面是vue的dubbo-admin dubbo学习三&#xff1a;springboot整合dubbozo…

从厨电模范到数字先锋,看永洪科技如何助力方太集团开启数字新征程

在数字化洪流席卷全球的宏大背景下&#xff0c;企业转型升级的紧迫性与重要性日益凸显&#xff0c;成为驱动行业进步的关键引擎。在这一波澜壮阔的转型浪潮中&#xff0c;方太集团——厨电领域的璀璨明珠&#xff0c;以其前瞻性的战略视野和不懈的创新精神&#xff0c;携手数据…

前端基础之组件自定义事件

我们可以通过使用给组件绑定事件&#xff0c;当组件触发该事件时&#xff0c;就能进行值得返回 我们可以使用v-on属性来给子组件绑定自定义事件&#xff0c;此时该事件就会存在vc中&#xff0c;然后通过this.$emit来触发绑定的事件&#xff0c; 这样就能实现不需要app.vue来给子…

基于DeepSeek(本地部署)和RAGFlow构建个人知识库

总结自视频&#xff08;很强的小姐姐视频&#xff0c;讲解清晰明了&#xff09;&#xff1a;【知识科普】【纯本地化搭建】【不本地也行】DeepSeek RAGFlow 构建个人知识库_哔哩哔哩_bilibili 1. 背景 deepseek官方网页版也虽然很强&#xff0c;能够满足绝大部分需求&#xf…

学习工具的一天之(burp)

第一呢一定是先下载 【Java环境】&#xff1a;Java Downloads | Oracle 下来是burp的下载 Download Burp Suite Community Edition - PortSwigger 【下载方法二】关注的一个博主 【BurpSuite 安装激活使用详细上手教程 web安全测试工具】https://www.bilibili.com/video/BV…

2025-03-05 学习记录--C/C++-PTA 习题5-8 空心的数字金字塔

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、解题步骤 ⭐️ 下面以n5举例&#xff1a;&#x1f98b; 第1步 &#x1f380;、外层循环&#xff08;从1到…

vue+neo4j 四大名著知识图谱问答系统

编号: D039 视频 vueneo4j四大名著知识图谱问答系统 技术架构 vuedjangoneo4jmysql技术实现 功能模块图 问答&#xff1a;基于知识图谱检索、支持图多跳、显示推理路径 姜维的师傅的主公的臣是谁&#xff1a; 马谡 知识图谱&#xff1a;四大名著总共4个图谱 红楼梦图谱 …

【智能体架构:Agent】LangChain智能体类型ReAct、Self-ASK的区别

1. 什么是智能体 将大语言模型作为一个推理引擎。给定一个任务&#xff0c; 智能体自动生成完成任务所需步骤&#xff0c; 执行相应动作&#xff08;例如选择并调用工具&#xff09;&#xff0c; 直到任务完成。 2. 先定义工具&#xff1a;Tools 可以是一个函数或三方 API也…

基于eRDMA实测DeepSeek开源的3FS

DeepSeek昨天开源了3FS分布式文件系统, 通过180个存储节点提供了 6.6TiB/s的存储性能, 全面支持大模型的训练和推理的KVCache转存以及向量数据库等能力, 每个客户端节点支持40GB/s峰值吞吐用于KVCache查找. 发布后, 我们在阿里云ECS上进行了快速的复现, 并进行了性能测试, ECS…

Vue的简单入门 三

目录 侦听器 watch 注意 表单输入绑定 v-model v-model修饰符​编辑 lazy number Trim 模板引用 组件组成 组件引用三步走 组件的嵌套关系 header Main Aside Aritice Item App.vue组件引入三个子组件 组件的注册方式 全局注册组件的方法 (1) Vue 2 语…

指纹细节提取(Matlab实现)

指纹细节提取概述指纹作为人体生物特征识别领域中应用最为广泛的特征之一&#xff0c;具有独特性、稳定性和便利性。指纹细节特征对于指纹识别的准确性和可靠性起着关键作用。指纹细节提取&#xff0c;即从指纹图像中精确地提取出能够表征指纹唯一性的关键特征点&#xff0c;是…