文章目录
- 一、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 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
- 透明模式(自动接收匹配数据)
 
- 目标地址:
应用场景
- 单点对单点通信(如无线传感器与网关)
- 避免数据冲突(防止多个设备收到相同数据)
- 提高安全性(只让特定设备接收数据)
总结
- 定点传输 = 发送端指定目标地址,只有目标匹配的接收端能接收数据。
- 区别透明传输(广播所有设备)。
- 需要配置 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 6F- 00 02→ 目标地址- 0x0002
- 17→ 信道- 0x17
- 48 65 6C 6C 6F→ 真实数据(“Hello”)
 
-  模块 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
发送数据测试:
能够成功接收到数据:
 



















