我是靠谱客的博主 年轻舞蹈,最近开发中收集的这篇文章主要介绍STM32开发 --- 正点原子LORA模块调试记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


一、故事前提背景

之前项目中使用原子哥的LORA模块,曾花了近半个月才调通使用(别笑,人笨就得工夫多)。

近日在项目的显示板第9板中修改电路板后,  出现问题:LORA模块不能接收. 

重查LORA资料, 发觉之前刨得很熟, 调试了半个月的老朋友,变陌生人了!  需重新学习熟悉.  归结原因, 是之前没整理好资料, 以使后来方便迅速翻查熟悉。

目录

一、正点原子 LORA模块 优缺点

二、引脚解释

三、工作参数 

四、传输模式

五、编程要点:


一、正点原子 LORA模块 优缺点

原子哥家的LORA模块, 有插针版、邮票孔版,使用上:电气参数、代码一样。插针版用排线直连开发板,邮票孔版嘛, 我当时画了个转接板配合调试.

先陈述一下模块使用过程中发现优缺点,放文章后怕没耐性翻到最后。

优点: 

  • USART通信,  收发简单,  配合DMA接收特省事, 。 
  • 把参数的配置也封装得很方便,usart发几条命令就成,调过安信可LORA模块的兄弟就明白了,那才叫苦。

缺点: 

  • 示例代码啰嗦,技术支持马虎。 原子哥,你别查我水表,我给你们多写几篇产品后期教程!但你们的示例代码真的.....。
  • 速度慢. 速度慢. 速度慢!  使用逻辑分析仪观察,  通信时每1ms只有1字节数据,其中数据占用86us, 其余900us是空白的!!!!!! 这一点特意问过技术,回复没干货,问了也白问。 另外,发送时, 数据不满足一包(56个字节)时, 会等待80ms才开始发送. 接收时, 也会有20ms等待时间!!!!!  你算算,100字节要多长时间。
  • 实测数据太少,最起码的商家做个通信距离数据实测吖,难道我们一千个人买这模块, 那不得做一千次测试??

二、引脚解释

  • MD0   配合AUX引脚切换工作模式, 【配置模式:MD0=1,AUX=0】、【通信模式:MD0=0,AUX=0】
  • AUX   同上
  • RXD   接开发板的 USARTx - TX引脚,注意:是TX不是RX
  • TXD   接开发板的 USARTx - RX引脚
  • GND
  • VCC 3.3~5.0 V

三、工作参数 

下面是我自己的几个重要参数, 请漠视右边的地址参数,因为我三个板子收发数据,重点看:模块配置软件操作说明.pdf

波特率:      115200                                  C板 模块地址:  1

校验位:      无                                          D板 模块地址:  2

空中速率:  19.2K                                     V板 模块地址:  3

休眠时间:  1S

信道:          5

发射功率:   20dBm

!!!要通信的模块,这几个参数必须一致,否则无法通信。!!!


四、传输模式

配合使用, 可以完成各种发送和接收工作.

1: 透明传输相同地址 、 相同信道

参数: AB 地址一样,  信道一样, 速率一样

A发送:  AA BB CC DD EE 

B收到:  AA BB CC DD EE。

用户数据可以是字符或 16进制数据形式)


2: 定向传输: 指定地址 、指定信道 

发送格式: 高位地址+ 低位地址+ 信道+ 用户数据。

A设备, 地址:0x1400,信道:0x17, 23 信道 、433Mhz

B设备, 地址:0x1234,信道: 0x10,16 信道、 426Mhz

A发送:12 34 10 AA BB CC,其中 1234 为模块 B 的地址,10 为信道,

B收到: AA BB CC。


3:广播与数据监听:

地址: 0xFFFF

发送: 可以被相同信道上任意地址的模块收到

接收: 可以接收相同信道上任意地址模块发送的数据


五、编程要点:

编程顺序是:  1:GPIO初始化 > 2:USART初始化 > 3:模块参数写入 > 3:进入接收/发送模式

GPIO和USART的初始化没什么特别要注意的,就主要是参数写入和收发通信。

参数配置写入、接收、发送都是通过usart进行的,我们只要注意当前的工作模式、代码顺序和数据格式就可以了。

下面将以一段参数设置代码说明。如需要整个c文件的,留言邮箱,我已整理好很方便移植。没发在这上面,下载要积分。

这段代码的得来不易。MLGB,  示例代码中功能各种啰嗦,各种绕,好几个点没说明白,问过技术、问过Q群,都没得到准确的答案.害得调试时浪费了很多时间,从8月份断断续续调通,到现在11月初,才发现如何用代码配置参数.期间参数配置一直失败,几经摸索才发现各种暗雷。这个真的是大坑,一想起这个就火大,浪费了多少日子。

  • 进入配置模式MD0=1,AUX=0
  • 命令间延时>80ms,每个命令间要延时,应该是用于确定'包'的完整,经验:试过60ms配置失败,90ms成功
  • 重要:命令字符串须以 "rn" 结尾。示例代码中确以这个结尾,但没标示其之重要作用。
// 代码已调试正常使用, 原创版权, 随便复制, 不谢~~~

void vLora_Set(void)
{   
    char t = 110;                 // 延时时间,试过60ms失败
                                              
    vDelay_ms(t);        
    while(  (LORA_AUX_GPIOx ->IDR & LORA_AUX_PINx)!=0);     // 等待AUX为0,即非工作状态
    
    vMD0(1);                                   // 配置模式,MD0=1,AUX=0
    vSys_SetGPIO(LORA_AUX_GPIOx ,LORA_AUX_PINx ,G_MODE_OUT  ,G_OTYPE_PP ,G_OSPEED_50M ,G_PUPD_DOWN ,0);
    vAUX(0);     
                 
    vDelay_ms(t);   
    vLora_SendString("AT+WLRATE=5,5rn");     // 信道速率  (0-31,410Mhz-441Mhz)     4:9.6Kbps  5:19.2Kbps(默认) 
    
    vDelay_ms(t);  
    vLora_SendString("AT+UART=7,0rn"  );     // 115200 无校检位
    
    vDelay_ms(t);  
    vLora_SendString("AT+WLTIME=0rn" );      // 体眠时间     0:1秒(默)  1:2秒
   
    vDelay_ms(t);  
    vLora_SendString("AT+TPOWER=3rn" );      // 发射功率   0:11dbm   1:14dbm  2:17dbm  3:20dbm(默认)
    
    vDelay_ms(t);  
    vLora_SendString("AT+CWMODE=0rn" );      // 工作模式   0:一般(默) 1:唤醒    2:省电    3:信号强度
    
    vDelay_ms(t);  
    vLora_SendString("AT+TMODE=0rn");        // 发送状态     0:透明(默) 1:定向
    
    vDelay_ms(t);  
    vLora_SendString("AT+ADDR=00,01rn" );   // 模块地址  16进制,高低位
    
    vDelay_ms(t);       
    vMD0(0);                                   // 退出配置模式, MDO=0,AUX=0
    vSys_SetGPIO(LORA_AUX_GPIOx ,LORA_AUX_PINx ,G_MODE_IN ,G_OTYPE_PP ,G_OSPEED_50M ,G_PUPD_DOWN ,0);   
    vDelay_ms(t);         
}

完整代码下载:

正点原子LORA代码重写: https://download.csdn.net/download/zhouml_msn/17264736


本篇完结,如有错漏,欢迎纠正~~

最后

以上就是年轻舞蹈为你收集整理的STM32开发 --- 正点原子LORA模块调试记录的全部内容,希望文章能够帮你解决STM32开发 --- 正点原子LORA模块调试记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部