【单片机】正点原子LoRa模块的使用

文章介绍了使用STM32F407单片机通过串口与LoRa模块进行通信的配置过程,包括引脚连接、LoRa初始化、配置函数和数据发送接收。在LoRa_Init()和LoRa_Set()函数中设置模块参数,利用AT指令进行配置。中断函数Aux_int用于处理模块数据的发送和接收状态,EXTI9_5_IRQHandler()中断服务函数处理上升沿和下降沿触发事件。
部署运行你感兴趣的模型镜像
所用单片机为STM32F407,此篇为当时做电赛时未记录,但是现在忘了所以重新记录一下,防止自己忘记。总的来说就是用串口给LoRa模块发送AT指令来配置模块,然后单片机想要发数据也是使用串口发送出去。

1、引脚连接

  1. MD0引脚配置为推挽输出模式,并配置为下拉,AUX引脚配置为输入模式,并配置为下拉

(MD0、AUX 引脚悬空下为低电平)

(模块根据MD0 的配置与AUX 引脚的状态会进入不同的功能)

  1. TXD、RXD与单片机的uart3的RXD以及TXD分别连接

  1. GND、VCC即连在单片机上

(无线串口模块为TTL 电平,请与TTL 电平的MCU 进行连接)

(模块的引脚电平是3.3V,与5V 的单片机通信需要做电平转换适配)

2、LoRa整体函数流程

LoRa_Init()函数,初始化函数

上电后,AUX 空闲状态(即AUX=0),MD0=1,进入配置模式

使用AT指令测试模块响应情况

LoRa_Set(),LoRa配置

usart3_set():设置uart3的波特率、校验位(进入配置前首先要设置通道波特率和校验位115200 8位数据位 1位停止 无校验位)

同样的,等待AUX 空闲状态(即AUX=0),然后MD0=1,进入配置模式

使用AT指令设置设备地址、信道和空中速率、发射功率、工作模式、发送状态、睡眠时间、串口波特率、数据校验位(此处为填充LoRA的各种参数的结构体,并没有直接写入)

然后再使用usart3_set()写入波特率和校验位

while循环内

LoRa_SendData():使用按键来选择发送数据

根据前面结构体中填充的数据来判断是什么模式,本人在此用的是透明传输模式,无需设置目标信道的地址等、若需要使用定向传输模式,需要设置目标的地址、目标的信道。

LoRa_ReceData():接收从机发送的数据

接收从机发送的数据,判断为哪个传感器发送的数据,然后发送数据给DTU,DTU去上传数据给阿里云物模型,DTU使用的是uart2(具体有关DTU部分请看本人空间内有关DTU的文章)

3、中断函数

Aux_int 中断设置函数,该函数用于配置MCU 外部中断触发方式。

它可用于获取Aux 引脚的中断情况,若MCU 要接收模块发送的数据,则可配置上升沿触发,以提示数据要来了,MCU 请做好准备。当MCU 想知道模块的数据是否已全部发送给MCU,则可配置下降沿中断,提示数据已经接收完了。

EXTI9_5_IRQHandler()中断服务函数,在函数中可以看到,当是上升沿中断触发,先判断是否为接收模式,是则将串口接收数据计数清零,然后设置下降沿触发,以表示模块开始发送数据或开始输出数据。当下次下降沿中断来临,若是接收模式模式则标记串口接收数据已接收完成,若当前是发送模式状态的话,则知道数据已发送完毕,重新标记为接收模式,然后再调用Aux_Int 函数配置下次触发的边沿中断,再继续实现一次发送或接收。

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

### 关于正点原子 LoRa 开发教程及相关资料 #### STM32与LoRa模块的开发基础 STM32作为主流的微控制器之一,在嵌入式领域有着广泛的应用场景。当其与LoRa模块结合时,能够实现低功耗远距离的数据传输功能[^1]。正点原子提供了详细的LoRa模块调试记录以及配套代码资源,这些资源可以帮助开发者快速理解如何通过串口协议完成LoRa模块的基础配置和数据传输。 #### 配置简化后的应用方法 尽管正点原子在其官方文档中提到可以通过将配置参数写入代码的方式实现动态调整,但这无疑增加了项目的复杂度。对于大多数应用场景而言,预先完成所有必要配置并将其固定下来是一种更为简便的方法。这种方式下,LoRa模块可被视作普通的UART设备直接使用,从而降低软件层面的设计难度[^2]。 #### Arduino平台下的实践案例 除了基于STM32的解决方案外,也有不少开发者利用Arduino框架完成了类似的项目实施。例如某篇博客分享了关于如何驱动SX1278型号LoRa模块的具体过程,并指出该款硬件支持通过简单的命令集来进行初始化设置之后即可投入运行状态之中[^3]。这种跨平台的经验交流有助于拓宽思路,尤其是在面对不同MCU架构的选择时提供更多的灵活性考量因素。 #### 多节点间通讯实例分析 针对更复杂的网络拓扑结构如一对多模式下的消息传递问题,则需考虑额外的技术细节比如地址编码机制防止干扰等问题。在一个具体实验当中展示了以单片机为核心控制单元配合两个独立PC终端共同参与整个流程演示情况;值得注意的是这里强调了无需借助外部电路变换器即能顺利完成信号交换操作的事实说明现代半导体器件集成度越来越高使得设计变得更加紧凑高效[^4]。 ```c #include "usart.h" void USART_SendData(uint8_t* pData, uint16_t Size){ while(Size--){ while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET); USART_SendData(USARTx, *pData++); } } ``` 上述代码片段展示了一个基本的串口中断发送函数示例,适用于多种场合包括但不限于本文讨论范围内的无线通信环节处理逻辑部分编写工作。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值